【安全工具】一款图形化界面的cms漏洞检测工具

admin 2023年11月21日15:29:16评论29 views字数 6269阅读20分53秒阅读模式

【安全工具】一款图形化界面的cms漏洞检测工具

公众号新规只对常读星标的公众号才能展示大图推送,建议大家把公众号“night”设为

【安全工具】一款图形化界面的cms漏洞检测工具

【安全工具】一款图形化界面的cms漏洞检测工具

免责声明


【安全工具】一款图形化界面的cms漏洞检测工具


night安全致力于分享技术学习和工具掌握。然而请注意不得将此用于任何未经授权的非法行为,请您严格遵守国家信息安全法律法规。任何违反法律、法规的行为,均与本人无关。如有侵权烦请告知,我们会立即删除并致歉。谢谢!


【安全工具】一款图形化界面的cms漏洞检测工具

【安全工具】一款图形化界面的cms漏洞检测工具

工具概述

【安全工具】一款图形化界面的cms漏洞检测工具

FrameScan-GUI是一款python3和Pyqt编写的具有图形化界面的cms漏洞检测框架.支持多种检测方式,支持大多数CMS,可以自定义CMS类型及自行编写POC。旨在帮助有安全经验的安全工程师对已知的应用快速发现漏洞。

【安全工具】一款图形化界面的cms漏洞检测工具


【安全工具】一款图形化界面的cms漏洞检测工具

工具使用

【安全工具】一款图形化界面的cms漏洞检测工具

插件模板:

# -*- coding: UTF-8 -*-#!/usr/bin/pythonimport sys import requests,argparse,osfrom urllib.parse import urlparsetry:    import frozen_dir    #框架引用调用/Plugins/Modules/目录下文件。    ysoserial  = frozen_dir.app_path() + "/Plugins/Modules/xxx文件名.jar"except:    #单文件执行调用当前目录文件    ysoserial = 'xxx文件名.jar' def vuln_info():    vuln_info = {        "vuln_name":"POC测试漏洞",  #漏洞名称        'vuln_referer':'http://baidu.com',  #漏洞来源        'vuln_author':'qianxiao996',  #插件作者        'cms_name':'test',#cms_name需要和上级目录保持一致。扫描器自动添加会调用。GUI版本不会调用        'vuln_description':'''漏洞描述''',        'vuln_identifier':'''漏洞编号。''',        'vuln_class':'漏洞分类',#如:信息泄漏、远程命令执行、任意文件上传、SQL注入、XML注入、任意文件读取、本地文件包含、认证绕过/未认证、弱口令、目录遍历、其他、反序列化漏洞、OGNL表达式注入、SSRF、后门、任意文件下载、鉴权绕过、暴力破解、命令注入、路径泄露、XSS、远程文件包含、CSRF、任意文件包含、代码注入、任意文件写入、密码硬编码、文件包含、任意用户注册、缓冲区溢出、用户枚举漏洞、任意文件删除、任意页面上传、管理权限等        'vuln_solution':'''修复建议。''',        'FofaQuery_type':'socket', #socket、http        'FofaQuery_link':'/', #此处的路径会加在url拼接访问,进行FofaQuery的条件匹配 此处为all为全部页面都检测        'FofaQuery_rule':'title="百度"',#header="JSESSIONID" || body="Struts Problem Report" || body="There is no Action mapped for namespace" || body="No result defined for action and result input" || header="Servlet" || header="JBoss",port="60001"        #header', 'body', 'title', 'banner','port','banner','service','protocol','server'        'ispoc':0, #是否有poc  1为有 0为无        'isexp':1  #是否有exp   1为有 0为无    }    return vuln_infodef _out(type,text):    print("[*] "+type+":n    "+text)# func_out 输出函数对象  url:url  hostname:主机地址  port:端口  scheme:服务  heads:http自定义头信息# plugins_temp_data 全局变量,可存储数据至do_exp使用def do_poc(url,hostname,port,scheme,heads={},func_out=_out,plugins_temp_data={}):    try:        #存储数据至do_exp函数使用        plugins_temp_data['key']='11'         # func_out('Debug',"debug信息")        func_out('Error',"错误信息",)        # func_out('Info',"info信息")        # 返回参数        #Result返回是否存在,        #Result_Info为返回的信息,可以为Paylaod         #Debug debug信息 默认不会显示,勾选显示调试信息会输出此结果        #Error_Info无论何时都会输出        result = {"Result":False,"Result_Info":""}        result['Result'] = True        result['Result_Info']= url        return result    except Exception as e:        func_out('Error',str(e)+str(e.__traceback__.tb_lineno)+'行')  #exp_data# {#     "type":"cmd",  #cmd,shell,uploadfile#     "command":"whoami",  #cmd命令#     "reverse_ip":"127.0.0.1", #反弹shell的ip#     "reverse_port":"8888", #反弹shell的端口#     "filename":"conf.php", #写入文件的名字#     "filename_contents":"shell内容", #shell文件内容# }# url:url   hostname:主机地址  port:端口  scheme:服务  heads:自定义请求头  func_out 输出函数对象def do_exp(url,hostname,port,scheme,heads={},exp_data={},func_out=_out,plugins_temp_data={}):    # 返回参数    # Result返回是否成功,    # Result_Info为返回的信息,可以为Paylaod    result = {"Result": False, "Result_Info": ""}    try:         #获取全局变量数据        key = plugins_temp_data.get('key')         #输出各种信息。参数一类型,默认Debug,可选【Debug、Error、Info】 参数二位具体内容        func_out('Debug',"debug信息")        func_out('Error',"错误信息",)        func_out('Info',"info信息")                #命令执行        if exp_data['type']=='cmd':            ##处理你的命令执行            result['Result'] = True            result['Result_Info'] = "root"            result['Result_Info'] =plugins_temp_data         #反弹shell            elif exp_data['type']=='shell':            ##处理你的反弹shell            result['Result'] = True            result['Result_Info'] = "反弹成功"        #上传文件            elif exp_data['type']=='uploadfile':            ##处理你的上传操作            result['Result'] = True            result['Result_Info'] = "上传成功"    except Exception as e:        func_out('Error',str(e)+str(e.__traceback__.tb_lineno)+'行')    return result     if __name__== '__main__':    #2.创建解析器    parser = argparse.ArgumentParser()    # 3.添加参数    url_file = parser.add_mutually_exclusive_group(required=True)    url_file.add_argument("-u", "--url",type=str, default="")    url_file.add_argument("-f", "--file",type=str, default="")     parser.add_argument("-m","--mode", type=str, default="poc",help="poc or exp",required =False,choices =["poc","exp","cmd","shell","upload"])     mxgroup = parser.add_mutually_exclusive_group(required=False)    mxgroup.add_argument("--cmd", type=str, default="whoami",help="cmd",required =False)    mxgroup.add_argument("--shell", type=str, default="127.0.0.1:8080",help="shell",required =False)    mxgroup.add_argument("--upload", type=str, default="shell.php",help="upload filepath",required =False)    print("漏洞信息如下:")    vuln_info = vuln_info()    try:        import prettytable        table = prettytable.PrettyTable()        table.field_names = ['字段名称','值']        for i in vuln_info:            table.add_row([i,vuln_info[i]])        print(table)    except:        for i in vuln_info:            print("t"+str(i)+":"+str(vuln_info[i]))    print("n[*] 开始执行...")        # 4.解析参数    hp = parser.parse_args()    all_url= []    if hp.file:        f=open(hp.file,encoding='utf-8')        file_Data = f.read()        f.close()        all_url = str(file_Data).splitlines()    else:        all_url.append(hp.url)     if hp.mode =='poc':        for i in all_url:            _url = urlparse(i)            # print(_url)            hostname = _url.hostname            port = _url.port            scheme = _url.scheme            result = do_poc(i,hostname,port,scheme)            print("[*] URL:"+i+"n[+] 检测结果:"+("Success" if result.get("Result") else "Faile")+"t返回信息:"+result.get("Result_Info")+"n" )     elif vuln_info.get('isexp'):        if hp.mode =='cmd':            exp_data=  {                "type":"cmd",  #cmd,shell,uploadfile                "command":hp.cmd  #cmd命令            }        elif hp.mode =='shell':            exp_data=  {                "type":"shell",  #cmd,shell,uploadfile                "reverse_ip":hp.shell.split(":")[0], #反弹shell的ip                "reverse_port":hp.shell.split(":")[1] #反弹shell的端口            }        elif hp.mode =='upload':            try:                filedata_=open(hp.upload,encoding="utf-8").read()            except:                filedata_=open(hp.upload,encoding="gb2312").read()            exp_data=  {                "type":"uploadfile",  #cmd,shell,uploadfile                "filename":os.path.basename(hp.upload),                "filename_contents":filedata_            }        else:            exp_data=  {                "type":"cmd",  #cmd,shell,uploadfile                "command":"whoami",  #cmd命令            }        for i in all_url:            _url = urlparse(i)            # print(_url)            hostname = _url.hostname            port = _url.port            scheme = _url.scheme            result = do_exp(i,hostname,port,scheme,heads={},exp_data=exp_data)            print("[*] URL:"+i+"n[+] 执行结果:"+("Success" if result.get("Result") else "Faile")+"n"+result.get("Result_Info")+"n")    else:        print("[E] 该漏洞没有EXP!")    print("[*] 运行完毕!")

【安全工具】一款图形化界面的cms漏洞检测工具




点击下方阅读原文

获取下载地址



【安全工具】一款图形化界面的cms漏洞检测工具


【安全工具】一款图形化界面的cms漏洞检测工具

【安全工具】一款图形化界面的cms漏洞检测工具


【安全工具】一款图形化界面的cms漏洞检测工具



原文始发于微信公众号(night安全):【安全工具】一款图形化界面的cms漏洞检测工具

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年11月21日15:29:16
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【安全工具】一款图形化界面的cms漏洞检测工具http://cn-sec.com/archives/2218506.html

发表评论

匿名网友 填写信息