最近项目上跟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字节转换来屏蔽对应关键字:
视频一:柳岩做客花椒直播,端午节慰问数字公司程序员。 自从看了辽宁卫视春节晚会柳岩出演小品,身穿粉红色护士服,就欲罢不能了,人美胸大腿长,秒杀宅男。 柳岩在直播中也换上白色大褂,为程序员们anmo...
北京有特色休闲spa会所——宾至如归五星级别的待遇 随着多数企业的开工,我也踏上了返京的列车,一路带着耳机看着窗外的风景,周围的一切仿佛都不在喧闹。 北京有特色休闲spa会所,往往在这个时候总喜...
这篇文章我想写了一年,一直在想要不要写一篇本身做教诲产物的运营,最终照旧写出来了,这个与大公司的教诲产物线差异,更多的是一个小的教诲机构如何活下去的案例,enjoy~ 在我们操纵教诲产物的时候,没有...
油画中所有的油画用漆都是干颜料和液体的混合物。对于油漆,干颜料与亚麻子油混合。亚麻籽油是通过氧化干燥的干燥油。也就是说,它从空气中吸收氧气,并产生一种结晶固体,将颜料永久包裹起来。 给你要用的时...
· 区块链创业公司AriseBank的首席执行官(CEO)因涉嫌欺诈投资者400万美元被FBI拘捕,将面对120年拘禁。 该技能最早是于2018年10月6日由国外安全厂商Outflank的安全研讨人员...
手机玩刺激战场卡死怎么办?手机运行缓慢,电耗的快。是不是黑客? 1、无法关机,建议长按开机键8-10秒重启机器尝试,关机,重新开机尝试手机在运行部分高端或大型的游戏软件时,对手机配置要求较高,游戏在运...