Neurohazard
暮雲煙月,皓首窮經;森羅萬象,如是我聞。

搭建 Struts S2-045/S2-046 模拟环境

wpadmin~October 19, 2018 /InfoSec

搭建 Struts S2-045/S2-046 模拟环境

搭建 Struts S2-045/S2-046 模拟环境

环境搭建

1 安装 Docker
2 拉取镜像
3 启动镜像

脆弱 URL
http://192.168.248.128/memoshow.action?id=3

docker pull medicean/vulapps:s_struts2_s2-045
# 注意 前半部分为宿主机端口,后半部分为容器内端口
docker run -d -p 80:8080 medicean/vulapps:s_struts2_s2-045

安全测试

http://192.168.248.128/memoshow.action?id=3

使用 struts-scan 检测目标 URL 时,返回结果为 无漏洞 。 (不可检测,但可以利用)
与此同时,使用 安恒/天融信等的 GUI 工具, 以及 Struts2-Scan 等均可检测到漏洞
(感觉是 struts-scan 使用的 检测 payload 有问题) 具体原因还需要进一步抓包分析。

# struts-scan.py
python2 struts-scan.py http://192.168.248.128/memoshow.action?id=3
python2 struts-scan.py -u http://192.168.248.128/memoshow.action?id=3 -i struts2-045

# Struts2Scan.py
python Struts2Scan.py -u http://192.168.248.128/memoshow.action?id=3
python Struts2Scan.py -u http://192.168.248.128/memoshow.action?id=3 -n S2-045 --exec
# 退出 shell 直接 Ctrl + C

其他问题排查

问题一 virtualenv 里的 docker-compose

我的测试环境的 docker-compose 是安装在一个 virtualenv 里的。
当 我 sudo 了之后, root 脱离了这个 virtualenv,于是报了一个错误 not found。

(venv_daily)  team@blacklotus ~/develop/vulhub/struts2/s2-048 (master) sudo docker-compose up -d
sudo: docker-compose: command not found

然而不用 sudo 的话 docker-compose 也起不来

(venv_daily)  ✘ team@blacklotus  ~/develop/vulhub/struts2/s2-048   master  docker-compose up -d 
ERROR: Couldn't connect to Docker daemon at http+docker://localhost - is it running?

If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.

解决方案,直接切换成 root 来处理

su -
source /home/team/develop/venv_daily/bin/activate

问题二 不完整的 HTTP 响应

使用 phith0n 的 vulhub 的时候,启动容器后。使用 curl http://127.0.0.1:8080 发送 HTTP 请求后,只能得到不完整的 HTTP 响应。

curl -i -s -k  -X $'GET' \
    -H $'Host: 127.0.01' 
    -H $'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0' 
    -H $'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' -H $'Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2' 
    -H $'Accept-Encoding: gzip, deflate' 
    -H $'Connection: close' 
    -H $'Upgrade-Insecure-Requests: 1' $'http://127.0.0.1'

推测服务端配置错误。尝试过重启宿主机和重启容器,并没有效果。

暂未解决该问题,最终是 使用 vulapp 替代的。

(未来如需解决可以考虑在 代码审计 知识星球 中提问)

参考资料

1 漏洞环境搭建
https://iassas.com/archives/583f4516.html

2 使用 Docker 环境快速搭建靶机环境
https://cloud.tencent.com/developer/article/1047740

3 struts-scan
https://github.com/Lucifer1993/struts-scan

4 Struts2-Scan
https://github.com/HatBoy/Struts2-Scan

5 菜鸟阿姨网安技术学习笔记:使用Docker快速搭建靶场 – 网安杂谈
wechat

Leave a Reply

Your email address will not be published. Required fields are marked *