最近项目上跟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字节转换来屏蔽对应关键字:
近日江苏省的服务区爆红互联网,给道上的路人增加了靓丽的美景,有一些设定乃至比一些旅游景区都需要好,尤其是霸王龙主题风格高速服务区,好像大家走入了恐龙世界,那麼,江苏省霸王龙主题风格高速服务区在哪儿?下...
据外媒,美国超三成家庭积蓄已见底,受到美国新冠肺炎疫情的影响,不少美国人面临生意倒闭、失去工作等危机,现在美国失业率也大大增加,很多人被停薪留职、削减工资或工时,现在有很多美国家庭正面临着财务危机,而...
手机聊天记录导出如何追踪别人手机定位追踪别人手机位置如何查到qq聊天记录贸易差额也称为净出口和贸易差额。在经济学中,为了方便起见 ,经常使用NX(净出口)符号 。当出口总值等于进口总值时,就叫做“贸易...
吉他节拍器(练习吉他时一定要用节拍器)节拍器的重要性,相信学琴之人都已经知道。那么初学者该怎么学习使用节拍器呢?或者说怎么才能更好地练习呢?希望以下个人经历对你们能有所帮助. 节拍器一直是我个人又爱...
本文导读目录: 1、微信以前的聊天记录删除了怎么找回 2、之前把微信聊天记录删除了怎么恢复? 3、如何找回微信的历史聊天记录 4、微信怎么找回一个月以前的聊天记录? 5、微信如何恢复以...
现在针对音乐图书的版权是日益完善,网盘的阵地也在逐渐消亡 想下载几首歌曲,看几本书都市有人拿着版权向你收费 虽然这是好事,然则一时半会儿国人也是接受不了的 虽然现在有许多磁力和百度资源搜索网站...