最近项目上跟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个月的時间了。大伙儿被防护在家里封封城封住宅小区封村。许多低风险性地域早已解封,大伙儿的情绪都特别好。肺炎疫情解封之后的说说 有关肺炎疫情解封的说说。产生有关详...
一、手机定位黑客联系方式(怎么样才能找到黑客的联系方式)方法总结 1、附近黑客的电话号码你在什么地方,应该离我很远吧! 2、黑客定位怎么和你联系呀一般只能知道你的ip地址信息,根据ip来定位,或者从...
参考消息网8月31日报道 美国战略之页网站8月28日发表了题为《情报部门:可能出差错的地方》的报道。 2018年8月初,美国国防部禁止“作战区域(通常指海外战区)”所有人员使用具有定位功能的商...