生活随笔
收集整理的這篇文章主要介紹了
网络安全-使用HTTP动词篡改的认证旁路
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
這個東西去年的安全掃描都沒有,今天就掃出來了,非常奇怪的一個東西。好吧,找資料找原因。結果可能應為搜索名詞的原因,這個問題在群友的幫助下解決了。
在我理解中servlet只有post和get方法,然后結果怎么出來這么多奇奇怪怪的方法呢。這些方法干啥的呢?
?
首先找到的是一個禁用http下不安全的方法的博客,具體誰的博客我也沒關注。先按照他的方法修改,修改方法也挺簡單,改下tomcat的web.xml就好。
?
?
[html] view plaincopy print?
<security-constraint>??????<web-resource-collection>??????????<http-method>HEAD</http-method>??????????<http-method>PUT</http-method>??????????<http-method>DELETE</http-method>??????????<http-method>OPTIONS</http-method>??????????<http-method>TRACE</http-method>??????????<url-pattern>/*</url-pattern>??????</web-resource-collection>??????<auth-constraint>??????????<role-name></role-name>??????</auth-constraint>??</security-constraint>?? <security-constraint><web-resource-collection><http-method>HEAD</http-method><http-method>PUT</http-method><http-method>DELETE</http-method><http-method>OPTIONS</http-method><http-method>TRACE</http-method><url-pattern>/*</url-pattern></web-resource-collection><auth-constraint><role-name></role-name></auth-constraint>
</security-constraint>
為啥要加這個呢!找了下web.xml的說明
?
WebDAV (Web-based Distributed Authoring and Versioning)是基于 HTTP 1.1 的一個通信協(xié)議。它為 HTTP 1.1 添加了一些擴展(就是在 GET、POST、HEAD 等幾個 HTTP 標準方法以外添加了一些新的方法),使得應用程序可以直接將文件寫到 Web Server 上,并且在寫文件時候可以對文件加鎖,寫完后對文件解鎖,還可以支持對文件所做的版本控制。這個協(xié)議的出現(xiàn)極大地增加了 Web 作為一種創(chuàng)作媒體對于我們的價值。基于 WebDAV? 可以實現(xiàn)一個功能強大的內容管理系統(tǒng)或者配置管理系統(tǒng)。?
好吧,這樣就理解了,既然是一個通訊協(xié)議增加了這些方法,那么按博主的方法改掉就好了。
?
可惜事與愿違,使用AppScan掃描還是存在這個問題。那么就納悶了,為啥會出現(xiàn)這樣的情況呢?
于是找到了
AppScan問題“HTTP動詞篡改導致的認證旁路”的解決方法
這篇博客,這個里面提供的思路不錯,看得出來他也配置了web.xml。這樣看起來要升級tomcat的節(jié)奏? 如果要升級tomcat我講面臨和那個博主一樣的問題,公司層面不好解決,而且公司也不只是用tomcat。其他的應該也存在問題。 從上面可以明顯看出來這個漏洞和WebDAV 這個東西其實關系并不大,主要問題在于篡改,WebDAV 只是提供了一些方法,這些方法雖然會導致一些修改或者什么的問題。但是如果是篡改了一個不存在的方法,其實結果也是一樣。好吧,其實上面那個博客最大的好處不是認識到了問題的根源,而是找到一個測試神器burpsuite。再也不用苦逼的猜了。 好吧,那么就剩下一個辦法,那就是自己寫攔截器。攔截住除開get和post的方法。為啥不在web.xml配置這個?因為我試過了配置了之后我自己都登陸不上。 誰配置成功了可以告訴我,我是拿現(xiàn)在這個6.0的tomcat毫無辦法。以后考慮升級到9.0。 寫攔截器去了,祝福我能成功。 ok,今天加了攔截器,成功干掉了這個問題。
[java] view plaincopy print?
<span?style="white-space:pre">????</span>?String?method?=?req.getMethod();??????????if(!"GET".equals(method)&&!"POST".equals(method)&&!"HEAD".equals(method))??????????{??????????????log.error("The?request?with?Method["+method+"]?was?forbidden?by?server!");??????????????response.setContentType("text/html;charset=GBK");??????????????response.setCharacterEncoding("GBK");??????????????resp.setStatus(403);??????????response.getWriter().print("<font?size=6?color=red>對不起,您的請求非法,系統(tǒng)拒絕響應!</font>");??????????????return;??????????}?? <span style="white-space:pre"> </span> String method = req.getMethod();if(!"GET".equals(method)&&!"POST".equals(method)&&!"HEAD".equals(method)){log.error("The request with Method["+method+"] was forbidden by server!");response.setContentType("text/html;charset=GBK");response.setCharacterEncoding("GBK");resp.setStatus(403);response.getWriter().print("<font size=6 color=red>對不起,您的請求非法,系統(tǒng)拒絕響應!</font>");return;} 在burpsuite上面驗證,也成功的反應出了正確的消息頭。 這里請記住
[java] view plaincopy print?
resp.setStatus(403);?? resp.setStatus(403);
?
不然是無法通過AppScan的掃描的
轉載于:https://www.cnblogs.com/firstdream/p/8393316.html
總結
以上是生活随笔為你收集整理的网络安全-使用HTTP动词篡改的认证旁路的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。