最近项目上跟Struts2框架打交道比较多,整理一下比较经典的几个漏洞的测试以及Bypass姿势。首先是S2-016。
PS:升级迁移这个东西真的很费劲。
Struts 2.3.15.1之前的所有版本
一般可以通过在对应的接口,使用如下Payload触发302重定向来进行判断:
会触发302跳转并且执行对应的算数表达式:
利用application(Struts2自带的ActionContext类特性)确定可以执行代码:
通过执行application对象(Web服务器启动时,会自动会每个Web服务目录都创建一个application对象)的 *** ,尝试读取项目中的临时存储目录来判断是否可以执行代码:
主要思路就是绕过关键字检测。
跟Spring框架不一样,Struts2的multipart提交方式并不能通过删除from-data或者大小写变换Content-Type的内容来进行提交。以下是struts2的处理方式:
绕过方式主要是修改成multipart提交方式:
因为是startsWith的检查,所以也可以修改相关内容为multipart/form-databypass进行绕过。
可以通过新建字符串变量的方式,创建超长的字符变量,尝试绕过waf(一般waf对于超大数据包有buffer防守,超过buffer防守的话,即可绕过防护):
创建字符串变量的方式:
payload变形:
针对一些敏感字符例如start()之类的检测拦截,可以考虑调用Java的js引擎进行编码解码操作来进行绕过。
js引擎调用:
payload变形:
针对一些敏感字符例如start()之类的检测拦截,可以考虑调用Java的Base64引擎进行编码解码操作来进行绕过。
前提条件要满足Struts2 version<=2.0.14
主要是这两个编码引擎:
com.sun.xml.internal.messaging.saaj.util.Base64():
sun.misc.BASE64Decoder():
Base64编码部分:
将以下poc写入想要执行的命令,Base64编码然后放入到编码引擎poc中即可:
举例:
com.sun.xml.internal.messaging.saaj.util.Base64:
针对某些waf可能检测类似start、readline等命令关键字。可以通过反射结合byte字节转换来绕过。
这里通过反射调用ProcessBuilder的start *** ,以及BufferedReader的readline *** 。通过结合byte字节转换来屏蔽对应关键字:
做生意卖产品都需要流量,无论是实体还是网络,实体做生意需要租个店面,位置好的店面是为了更好的吸引顾客,如果位置差的店面顾客就会很少, 网络上面如果想宣传产品,也需要将自己的产品让更多人看见,看见的人...
本文目录一览: 1、华为手机无彩色了怎么调回来 2、华为手机没有颜色了,怎么调回来?华为 3、华为手机突然没有彩色了怎么办? 4、华为手机没有彩色了,怎么调回来? 5、华为手机没颜色咋...
自适应视图的意思是,欣赏器宽度、高度差异时,就显示条件匹配的视图页面内容,本文给各人讲讲手机移动端自适应视图。 Axure 8 自带自适应成果,可以自适应电脑、平板、手机等差异巨细的屏幕。 要完成手...
对于新式新冠病毒肺部感染病案的出現,医师提议配戴医疗外科口罩和N95口罩,N95口罩的阻挡病原体的实际效果更强,可是透气性能稍弱,n95口罩能防止新式新冠病毒吗?n95口罩怎么选择?下边产生详细介绍。...
日前,爱玛科技集团"变革焕能·数智重生"变革盛会在广州召开。爱玛科技集团总裁任勇、美云智数总裁金江等领导嘉宾与千余名经销商参与了大会。本次盛会的主题聚焦于"变革",围绕变革这一主线,爱玛科技集团总裁任...
10万报酬找黑客相关问题 黑客ko原型相关问题 如果想当黑客要学什么专业 重生九岁天才系统(重生天才系统) 黑客...