内网渗透——struts2远程任意代码执行(s2-046)
0X01:struts2介绍:
Struts2是一个基于MVC设计模式的web应用框架,它本质上相当于一个servlet,在MVC设计模式中,struts2作为控制器来建立模型与视图的数据交互。Struts2的使用范围及其广泛,国内外均有大量厂商使用该框架。
0X02:漏洞介绍:
根据漏洞提交者纰漏,s2-046的利用条件有以下三个方面:
1.系统必须使用jakarta插件,检查struts2配置文件中是否有以下配置:<constant name = “struts.multipart.parser” value = “Jakarta-stream”/>。
2.上传文件的大小(由content-Lsength头指定)大于struts2允许的最大大小(2GB)。
3.文件名内容构造恶意的OGNL内容。
0X03:利用环境:
攻击机:windows 10物理机
靶 机:实际内网环境
0X04:整体思路:
step1:取得权限。
step2:权限提升。
step3:密码读取。
step4:内网拓展,密码碰撞,获取多台服务器权限。
0X05:攻击过程:
使用poc检测到目标主机存在此漏洞。
使用漏洞利用工具进行远程命令执行:添加账户test(用户名:test、密码:19491001China!)。
将test账户添加到管理员(administrators)组。
探测发现目标开启3389端口,所以使用创建的test账户进行远程登录测试。
上传mimikatz抓取管理员(administrator)用户名、密码,首先提权。
成功抓取到管理员(administrator)的用户名、密码(用户名:administrator、密码:Qhwy520)。
根据抓取到administrator的用户名、密码,对整个B段开放3389端口的服务器进行密码碰撞,成功获取到多台服务器用户名、密码,如下图所示: