一、任意文件上传
该漏洞主要是通过PUT请求写入shell,一般Tomcat默认是不能用PUT请求写入文件的,只用但网站有需要时,管理员才会开启。所以要复现此漏洞首先需要将readonly设置为false,readonly默认为true,只读所以不能写入文件。
虚拟机中安装Tomcat,找到配置文件conf下的web.xml,在109行加入
<init-param>
<param-name>readonly</param-name>
<param-value>false</param-value>
</init-param>
使用bp抓包,修改请求动词为OPTIONS,并附加写入内容查看反汇信息如下:
配置前:
配置后:
可以观察到修改后,多了PUT和DELETE动词。环境搭建成功
使用上面方法查看真实网站是否可以PUT,如果可以则尝试上传shell
漏洞利用
一般是不容许直接写入jsp的,先尝试写入其它文件类型,成功后尝试绕过,写入shell。
201则为成功上传,但在Tomcat下只能执行jsp叫脚本,所以需要上传jsp的shell,但一般系统是不会让你直接上传shell,就需要各种方法去绕过Tomcat的检测,一般方法有:%20 \ . \. 等绕过。
成功上传后使用工具连接:
二、暴力破解登录账号密码
使用bp抓取Manager App的包,发送到爆破模块,选中Authorization: Basic,密码账号是使用base64加密的(user:password):
在配置端口设置此密码的三个组成部分:‘user:pass’
设置加密方式为base64加密
点击start开始爆破。
三、后台war包getshell
使用条件:有Tomcat的登录账号密码
由于在Tomcat中war包会被当做jsp来解析,所以我们可以将jsp马打包为war包然后上传。
制作木马war包:在Java/jdk/bin目录下放入shell.jsp然后执行cmd:jar cvf shell.war shell.jsp。会生成shell.war。注意使用管理员权限运行cmd
之后上传war包
成功上传并解析jsp,之后就可以愉快的连接了。