本文纯属记录,可能各位大牛早就用的滚瓜烂熟了,切莫吐槽,如有不对请斧正
今天早上本屌正在上课听到群里的大牛们在说一种通过multipart/form-data的上传方式绕过waf的技巧,听了园长MM的科普之后感觉好厉害,回来就测试了一下,究其原因好像是waf对http请求头的区分不同造成的绕过
园长大牛说道:
“ 那个是普通的表单域 比如
1 | <input type="text" name="id" value="sb' and 1=2" /> |
这样的请求在不标识成multipart/form-data的时候依旧是走的普通的GET POST请求 参数都是a=x&v=1&… 一旦标识成文件类型请求后 会把id 跟文件一起传到action对应的地址。这时候后段处理的差异在于语言自身了,PHP自己会把这个请求分别解析到FILES POST 里面。 但是java就不会,java需要自己去解析这个流。在java里面叫ServletInputStream,流的特性就是只能读取一次,所以这个如果要做安全处理在server层的话都比较麻烦。安全宝 加速乐什么的 他们是在cdn层,基本上所有流量都能拦截下来,可能大家都知道,但是觉得麻烦就没人管。”