红日靶场之ATT&CK3

红日靶场之ATT&CK3

Gat1ta 262 2022-01-03

环境搭建

靶场地址

http://vulnstack.qiyuanxuetang.net/vuln/detail/5/

靶场架构

此图仅供参考,IP地址有误
image.png

地址配置

web-centos:
该机器是外网机器,有两块网卡,一块网卡桥接到本机网络,另一块网卡设置为仅主机模式,IP段为192.168.93.0
机器恢复运行后,设置好虚拟机网卡后输入service network restart 就可以了。
其他机器网卡全都设置为仅主机模式就可以了。

外网打点

环境搭建成功后,首先用nmap扫描一下外网机器的端口情况:
image.png
可以看到开启了80端口,我们在浏览器输入地址访问一下,得到如下页面:
image.png
仔细观察,这是一个Joomla站点。这个站点还是比较熟悉的,之前分析过这个CMS的一个反序列化漏洞。
用之前的payload打了一下没成功,通过MSF扫描一下joomla的版本:
image.png
百度了一下发现这个版本存在一个后台RCE(CVE-2020-10238),但是需要管理员权限登录后台才行,所以先放一放,看看其他地方。
然后扫描了一下网站目录,结果如下:
image.png
可以看到扫描出来了一个configuration.php的备份文件,该文件是CMS的配置文件,里面保存了很多配置,打开看一下:
image.png
可以看到,里面保存了数据库的用户名和密码,结合之前端口扫描的情况,服务器数据库端口是对外开放的,所以这里可以尝试搞一波数据库~
image.png
可以看到,成功登录数据库。
在数据库里随便翻了翻,找到了管理员的数据:
image.png
但是密码是加密过的,由于不知道用的什么密码,所以根据之前用MSF扫描的版本号,在本地下载了一套源码搭建了一个环境。本地环境账号密码都是hack,然后再数据库中找到用户密码数据:
image.png
再去靶机中插入一个新的用户数据,并且把新的用户插入到user_group_map表里,这代表把用户插入管理员组(这里有一点需要注意,这个靶机应该是安装了两次joomla,数据库中有两份表,插入数据的时候要插入到前缀为am2zu的表中,如果插入到另外一套表中就没用了,这个点很坑,浪费了好长时间):
image.png
这样我们就可以用hack用户在靶机中登录了:
image.png
登录后台之后就可以利用我们之前看到的后台RCE的洞来Getshell了,具体操作如下:
image.png
image.png
image.png
这里我们可以编辑index的代码,直接在里面写shell就可以了。
image.png
由于这是靶场,也无所谓会不会破坏环境,就直接将原来的代码删除了,然后将我们的冰蝎马写进去然后保存。
image.png
然后将我们刚才更改的模板设为默认模板。
然后访问主页,发现主页变成一片空白了,这说明我们编辑的模板应用成功了。这时候打开冰蝎连接就可以了:
image.png
Getshell成功~

Bypass DisableFunction

Getshell后,发现无法执行命令,发现是被禁用了PHP执行命令的函数,然后上传一个蚁剑用的马,用蚁剑连接webshell。
蚁剑连接后,通过蚁剑的插件绕过disbale_function:
image.png
插件执行成功后,在webshell当前目录下会生成一个.antproxy.php文件,这个文件的密码和之前Webshell的一样,通过这个shell连接就可以执行命令了:
image.png

内网信息收集

就在我想搭建隧道搞点事情的时候,发现该机器不出网。Webshell上清清楚楚的写着192.168.1.8的地址,进来一看成了192.168.93.120。。
image.png
琢磨了一下,应该是外网机器反向代理的内网机器,所有HTTP流量都会转发到内网机器上执行。
到这里有点麻爪,之前没遇见过这种情况,没办法只能看看能不能在机器里找到点有用的东西。
经过在我的不懈坚持下,找到了一个类似账号密码的东西:
image.png
然后用CRT连接外网机器,输入账号密码:
image.png
成功~

隧道搭建

知道了192.168.1.8的账号密码,直接通过ssh动态转发建立个Sock隧道,然后通过ProxyChains代理nmap进行内网发现。
image.png
扫描结果如下:

Nmap scan report for 192.168.93.10
Host is up (0.00018s latency).
Not shown: 984 filtered tcp ports (no-response)
PORT      STATE SERVICE      VERSION
53/tcp    open  domain       Simple DNS Plus
88/tcp    open  kerberos-sec Microsoft Windows Kerberos (server time: 2022-01-05 13:56:05Z)
135/tcp   open  msrpc        Microsoft Windows RPC
139/tcp   open  netbios-ssn  Microsoft Windows netbios-ssn
389/tcp   open  ldap         Microsoft Windows Active Directory LDAP (Domain: test.org, Site: Default-First-Site-Name)
445/tcp   open  microsoft-ds Microsoft Windows Server 2008 R2 - 2012 microsoft-ds (workgroup: TEST)
464/tcp   open  kpasswd5?
593/tcp   open  ncacn_http   Microsoft Windows RPC over HTTP 1.0
636/tcp   open  tcpwrapped
3268/tcp  open  ldap         Microsoft Windows Active Directory LDAP (Domain: test.org, Site: Default-First-Site-Name)
3269/tcp  open  tcpwrapped
49154/tcp open  msrpc        Microsoft Windows RPC
49155/tcp open  msrpc        Microsoft Windows RPC
49157/tcp open  ncacn_http   Microsoft Windows RPC over HTTP 1.0
49158/tcp open  msrpc        Microsoft Windows RPC
49159/tcp open  msrpc        Microsoft Windows RPC
MAC Address: 00:0C:29:1F:54:D2 (VMware)
Service Info: Host: WIN-8GA56TNV3MV; OS: Windows; CPE: cpe:/o:microsoft:windows

Nmap scan report for 192.168.93.20
Host is up (0.00050s latency).
Not shown: 988 closed tcp ports (reset)
PORT      STATE SERVICE      VERSION
80/tcp    open  http         Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
135/tcp   open  msrpc        Microsoft Windows RPC
139/tcp   open  netbios-ssn  Microsoft Windows netbios-ssn
445/tcp   open  microsoft-ds Microsoft Windows Server 2008 R2 microsoft-ds (workgroup: TEST)
1433/tcp  open  ms-sql-s     Microsoft SQL Server 2008 10.00.1600; RTM
2383/tcp  open  ms-olap4?
49152/tcp open  msrpc        Microsoft Windows RPC
49153/tcp open  msrpc        Microsoft Windows RPC
49154/tcp open  msrpc        Microsoft Windows RPC
49155/tcp open  msrpc        Microsoft Windows RPC
49156/tcp open  msrpc        Microsoft Windows RPC
49158/tcp open  msrpc        Microsoft Windows RPC
MAC Address: 00:0C:29:AB:44:EC (VMware)
Service Info: Host: WIN2008; OS: Windows; CPE: cpe:/o:microsoft:windows, cpe:/o:microsoft:windows_server_2008:r2

Nmap scan report for 192.168.93.30
Host is up (0.00025s latency).
Not shown: 992 closed tcp ports (reset)
PORT      STATE SERVICE      VERSION
135/tcp   open  msrpc        Microsoft Windows RPC
139/tcp   open  netbios-ssn  Microsoft Windows netbios-ssn
445/tcp   open  microsoft-ds Microsoft Windows 7 - 10 microsoft-ds (workgroup: TEST)
49152/tcp open  msrpc        Microsoft Windows RPC
49153/tcp open  msrpc        Microsoft Windows RPC
49154/tcp open  msrpc        Microsoft Windows RPC
49155/tcp open  msrpc        Microsoft Windows RPC
49163/tcp open  msrpc        Microsoft Windows RPC
MAC Address: 00:0C:29:E0:74:2B (VMware)
Service Info: Host: WIN7; OS: Windows; CPE: cpe:/o:microsoft:windows

Nmap scan report for 192.168.93.100
Host is up (0.00033s latency).
Not shown: 997 closed tcp ports (reset)
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   MySQL 5.7.27-0ubuntu0.16.04.1
MAC Address: 00:0C:29:32:46:D3 (VMware)

Nmap scan report for 192.168.93.120
Host is up (0.00064s latency).
Not shown: 997 closed tcp ports (reset)
PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 7.2p2 Ubuntu 4ubuntu2.8 (Ubuntu Linux; protocol 2.0)
80/tcp   open  http    Apache httpd 2.4.18 ((Ubuntu))
3306/tcp open  mysql   MySQL 5.7.27-0ubuntu0.16.04.1
MAC Address: 00:0C:29:AB:32:AC (VMware)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

横向移动

扫描完内网之后,发现139,445端口都开放,所以想用MS17-010试一下,结果一个都没打下来。然后就不知道怎么办了,百度了一下,大佬们大都是用的SMB爆破,然后就跟着做了一下:
image.png
扫描出192.168.93.30的密码为123qwe!ASD,20应该也是这个密码的,但是不知道为啥提示超时。
然后建立IPC连接:
image.png
不知道为啥,有一个建立不了链接,那就只能搞20了。
建立IPC连接后首先将MSF马上传到目标机器,由于这是不出网机器,所以不能用之前的Reverse_tcp的马了,不出网需要用bind_tcp的马,在目标机器上运行木马之后通过MSF主动去连接目标机器。
image.png
然后通过Psexec获取一个Shell。
image.png
然后运行我们刚才上传的Bind木马:
image.png
看到本地端口打开了后用MSF去连接:
image.png
可以看到,已经成功连接。
首先加载kiwi看看能不能获取到系统明文密码,如果可以获取明文密码直接用明文密码登录其他机器,如果没有明文就通过哈希传递:
image.png
不错,直接获取到了域管密码,直接尝试登录域控。
根据之前的扫描结果来看,域控的IP地址应该是192.168.93.10,因为只有它开启了88端口,首先尝试建立IPC连接:
image.png
可以看到,成功建立IPC链接。
这里本想用跟上面一样的办法,通过IPC复制MSF马上去运行的,结果发现运行完了MSF也无法连接,后来发现是因为开启了防火墙,通过以下命令关闭防火墙:

NetSh Advfirewall set allprofiles state off

关闭防火墙后重新运行木马,然后MSF上线:
image.png
渗透过程到这里差不多就要结束了,但是靶场描述说域控里面有个很重要的文件,所以就继续找一下。
因为要找文件所以用MSF打开远程桌面,用远程桌面找方便一些,输入下面命令打开远程桌面:

run post/windows/manage/enable_rdp

这个命令不是所有系统都能成功的,执行完后打开终端输入命令看一下:
image.png
可以看到成功打开了3389端口,然后通过远程桌面连上去。
由于不知道到底是什么文件,就当TXT找了,直接在C盘根目录搜索所有TXT文件:
image.png
可以看到找到一个flag目录,就是你了,打完收工!!!

总结

靶场渗透过程:
1.敏感文件泄露
2.通过数据库进入后台
3.通过后台RCE漏洞Getshell
4.通过蚁剑插件pass Disable Function
5.内网信息收集获取到出网机的权限
6.隧道搭建内网扫描
7.SMB弱口令爆破
8.psexec横向移动
通过这一次靶场渗透,感觉一个好的字典是必不可少的,如果没有一个好的字典这次渗透开始都难。
内网穿透这方面,如果内网收集没有出网机的账号密码,这次渗透该如何进行?
Linux提权方面,自己在这方面可以属于是零经验,虽然这次渗透过程linux提权不是必要,但是这方面还是要加强一下。