[!] legal disclaimer: Usage of exploit.py and web.py for attacking targets without prior mutual consent is illegal.It is the end user's responsibility to obey all applicable local, state and federal laws.Developers assume no liability and are not responsible for any misuse or damage caused by this program.
git clone https://github.com/3xp10it/exploit.git cd exploit && pip3 install -r requirements.txt
- python3 exploit.py[主程序,工作时运行]
- python3 web.py[可选,如果运行则要新开一个终端运行以便于查看相关输出信息,该工具为web后台]
- python3 debug.py[不要运行这个,这个文件是为了方便在开发时调试的]
python3,pip3,mysql,linux(debain based,kali best)
a)exploit是一个自动化渗透测试框架,目前没有做到完全自动化[自动上传漏洞利用框架和自动fuzz框架暂时没有加入]
b)支持功能列表
-
cdn真实ip查找模块
-
旁站获取[如果在cdn模块中发现有cdn但是没有获取到真实ip则不进行旁站获取]
-
子站获取
-
中高危漏洞扫描模块
- joomla rce
- 常见源码泄露
- ms08-067
- ms17-010
- heartbleed
- shellshock
- struts2
- iis6rce
- weblogic远程命令执行
- 命令注入漏洞
- 本地文件包含
- (最新列表在这里)...
-
爬虫模块
-
目标网站脚本类型检测
-
目录扫描模块
-
sqli扫描模块
-
robots/sitemap自动收集
-
cms识别与cms漏洞扫描模块
cms识别支持以下cms:
aspcms,dedecms,discuz,drupal,dvbbs,ecshop,emlog,empirecms,espcms,
foosuncms,hdwiki,joomla,kesioncms,kingcms,ljcms,php168,phpcms,phpwind,
powereasy,qibosoft,siteserver,southidc,wordpress,z-blog,opencart
cms漏洞扫描模块:
在cms识别基础上支持所有exploit-db.com支持的已有漏洞,不能识别的cms暂不支持查询对应exploit-db.com漏洞库数据,
wordpress,joomla,discuz这3个cms支持额外专门的对应漏洞扫描工具与基于exploit-db.com的漏洞库查询
- 自动识别管理员页面并爆破[支持自动识别简单验证码]
1.支持自动识别简单验证码
2.支持跳转到管理员登录页面直接爆破
eg.http://127.0.0.1/wp-admin会跳转到http://127.0.0.1/wp-login.php这个真实的登录页面
支持输入参数为http://127.0.0.1/wp-admin时直接爆破http://127.0.0.1/wp-login.php
3.支持含有csrf_token页面的暴破
- webshell自动查找与爆破,支持asp,php,aspx,jsp,支持chopper一句话webshell和大马类型webshell
a)apache,iis,nginx,lighttpd在phpstudy中测试默认可接收1000个post参数
b)一句话类型webshell根据上面的特点可以正常情况下(单线程)的1000倍速度来爆破,可用大字典爆破,但是不能用多线程,
可能是因为用多线程会太快而让web server觉得每次的参数不止1000个
c)其他类型web server未测试,暂用多线程1倍速爆破,用最常用的webshell较小字典,17659个左右
d)大马类型webshell由于表单名是一定的,所以不能以1000倍速爆破,于是也用和c)中一样的小字典多线程1倍速爆破
- 资源文件收集
- 端口扫描模块
- 端口暴破模块
对21,22,1433,3306,3389端口根据开放情况使用medusa进行暴力破解
- whois信息收集
- 支持人工渗透时记录笔记
笔记功能需要额外安装phpmyadmin等可以编辑数据库的工具,访问数据库,在targets|xxx_pang|xxx_sub表中有一个note列可用
于记录人工渗透时的笔记,查看扫描结果最好也用phpmyadmin来查看数据库的targets表和xxx_pang和xxx_sub表,如果不安装
phpmyadmin也可由web.py在web后台中查看扫描结果
c)可选工作模式
模式一:扫描目标和目标的所有旁站
模式二:扫描目标和目标的所有子站
模式三:扫描目标和目标的所有旁站和所有子站
模式四:只扫描目标
默认使用模式一扫描[在运行exploit后可自选],上面四种模式中的[扫描目标]里的目标支持批量导入多个目标和手工录入多个
目标.四种工作模式中与旁站和子站相关的由程序自动完成[eg.选择模式三工作时,将自动获取导入的目标的所有旁站和所有子
站,并对这些旁站和子站依次遍历上面的各个扫描模块]
d)特点
- 可在中断后重新运行时从断点附近接着上次的过程扫描,不用重新扫描
- 运行exploit后自动从数据库中取出待完成的扫描任务进行扫描
- 支持正常扫描和优先扫描两个扫描组,如果优先扫描组里有任务则先扫描优先扫描组里的目标,在添加任务时可选择将目标是 正常扫描还是优先扫描
- 上述支持功能列表中的功能默认全部遍历扫描,如果要使用单个模块可在web界面使用
- exploit配备一个web后台,web页面可查询当前扫描结果与使用单个模块功能
- exploit独立于web运行,也即没有目录下的pannel文件夹也可运行
- 目录下的pannel文件夹是Django为exploit写的一些相关界面,web界面使用在下面介绍
- 支持找到高危漏洞邮件通知[eg.sqli,webshell爆破成功等]
- 全局支持设置带cookie访问并不停间断自动带cookie请求目标网站使session不失效
e)web后台说明
- web后台如下图,需要管理员身份登录才可进后台
- web后台相当于exploit的部分界面+分割的模块化工具+exp10it中没有的功能的附加工具的集合
- web后台由Django==1.10.3开发
- web后台中支持工具列表
- targets:查看扫描目标,新增/删除扫描目标
- 获取旁[子]站:获取旁站或子站模块
- xcdn:尝试识别cdn背后的真实ip
- 中高危漏扫:高危漏洞扫描模块
- sqli:sql注入模块
- 扫目录:目录扫描模块
- cms漏扫:cms漏洞扫描模块
- webshell爆破:webshell爆破模块
- 管理员登录爆破:管理员登录爆破模块
- waf爆破:waf自动爆破模块[exploit中没有这个功能]
- dbquery:数据库语句执行接口
- 扫描结果:查看当前扫描结果
1.上面的web.py不一定要运行,核心功能在exploit.py文件中
2.如果要后台功能需运行python3 web.py
3.如果要使用web.py,重新开机后需要重新运行web.py
4.运行web.py常见错误:端口被占用.解决方法:
a)netstat -ntlp | grep 8000
b)在a)中找到pid后kill -9 pid
c)重新运行python3 web.py
5.exploit.py中有较多函数来自exp10it模块,exp10it模块由pip3 install exp10it安装,安装路径一般如下:
macOS:
echo $(pip3 show exp10it | egrep 'Location:' | egrep -o '/.*')
linux:
echo $(pip3 show exp10it | grep -oP '(?<=Location: ).*')
6.文件分布结构如下:
当前目录
.
├── exploit.py[启动文件]
├── config.ini[配置文件]
├── debug.py
├── log[日志文件夹]
├── pannel
│ ├── manage.py
│ ├── models.py[web后台没有用django的模型]
│ ├── pages[web页面的html文件,相当于django的template]
│ └── pannel
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py[django配置的访问与响应规则]
│ ├── views.py[django配置的关键函数]
│ └── wsgi.py
├── readme.md
├── uninstall.py
├── cms_identify[cms识别模块相关文件]
├── cms_scan[cms漏洞扫描模块相关文件]
├── dicts[字典文件]
├── dirsearch[目录扫描模块相关文件]
├── exps[exp模块相关文件]
├── tools[web后台中的各个工具]
Q1:单个模块怎么使用?
A1:单个模块执行有2种方法:
1)web后台
2)cd tools && ls -al
Q2:为什么需要连接google才能用?
A2:要保证能直接ping通google证明可以绕过GFW,有些domain不连vpn会无法访问,这样的domain在正常情况下被GFW拦截时会影响
代码获取真实ip的效果,代码中原来强制要求连接vpn,后来考虑到如果有不需要获取真实ip情况的渗透下的使用(eg.渗透子站)
的情况,可自由选择是否必须要求连接vpn才工作
1.向cgc致敬,探索智能化
refer:https://github.com/jivoi[awesome-ml-for-cybersecurity]
3.针对扫描到的开放了的未知端口尝试telnet登录测试是否是后门并针对每个漏洞进行高危模块(eg.heartbleed)检测
https://docs.google.com/presentation/d/1-mtBSka1ktdh8RHxo2Ft0oNNlIp7WmDA2z9zzHpon8A/edit#slide=id.p67
https://zhuanlan.zhihu.com/p/26618074
4.如果脚本是php,判断所有http请求头中是否出现反序列化字符串,如果有则报警提示人工分析看看有没有可能有漏洞
7.在爬虫的时候收集邮箱地址,之后查询社工库
https://github.com/lauixData/leakPasswd
http://cha.hx99.net/
8.参考如下标准完善
https://www.processon.com/view/583e8834e4b08e31357bb727
10.(或许考虑增加平行越权导致信息泄露类型漏洞检测,用于甲方)
11.分布式扫描
12.优化扫描效率,节省扫描时间
13.xss模块添加,尤其是存储型xss漏洞检测模块
[+] 2017-11-01 修改配置文件到~/.exploit/config.ini
[+] 2017-09-20 删除web后台中与数据库相关的highRisk模块,web后台只用作与数据库无关的测试
[+] 2017-09-20 修正python3 web.py无法找到配置文件的错误
[+] 2017-09-20 暴破管理员登录模块更新支持csrf_token
[+] 2017-09-15 删除在暴破登录页面时html中注释的内容再进行暴破,有些注释的代码会影响程序获得是否有验证码的结果,因此要删除
[+] 2017-08-28 完善爬虫遇到表单时正则获取所有提交参数
[+] 2017-08-28 添加weblogic远程命令执行漏洞的
[+] 2017-08-20 将sqlmap方案由--level 3改成--level 5 --risk 3
[+] 2017-08-20 修改爬虫功能由requests模块改为selenium结合phantomjs,页面文件爆破用requests,因为要填写code用于webshell爆破
[+] 2017-08-17 修复无法访问服务器证书无法通过校验的https网站url(eg,https://forum.90sec.org)的访问问题(添加verify=False)
[+] 2017-08-16 收集到子站和旁站后检查一遍,将无效不再工作的域名清除
[+] 2017-08-15 update uninstall.py and debug.py
[+] 2017-08-14 添加iis6 rce(CVE-2017-7269)漏洞检测
[+] 2017-08-11 添加struts2漏洞检测
[+] 2017-08-08 添加shellshock漏洞的检测
[+] 2017-08-02 添加heartbleed漏洞的检测
[+] 2017-07-31 添加ms08-067,ms17-010的检测
[+] 2017-07-24 添加.hg,.git,.DS_Store,.svn,.bzr,/WEB-INF/web.xml,/WEB-INF/database.properties等源码泄露检测
[+] 2017-07-08 在爬虫[sqlmap调用和内置爬虫模块]时不爬(logout)|(logoff)|(exit)|(signout)|(signoff)等会导致session
过期的页面
[+] 2017-07-07 去除beforeWork.sh,修改查找和更新配置文件函数(configparser无法读写有'%'的配置文件容错)
[+] 2017-07-07 config.ini配置文件修改成存放到exploit.py同目录下
[+] 2017-06-09 修改旁站查询接口,不再使用bing
[+] 2017-06-08 对get/post请求后对返回的数据(bytes类型)做编码判断后再根据对应编码进行解码
[+] 2017-05-29 整体扫描方案中添加delay参数防过多请求被服务器拉黑,默认delay=1s
[+] 2017-03-23 增加填写mysql服务器地址时除ip地址格式外可以填写域名格式或localhost
[+] 2017-03-23 修复网站属于http或https的判断
[+] 2017-03-23 修复子域名查找时判断根域名的逻辑
[+] 2017-03-23 修改在选择扫描模式时的默认选项为根据是否已经有config.ini文件里的扫描选项来判断
[+] 2017-03-22 修复没有检测lxml模块安装而导致的get_request函数无法成功get请求的错误
[+] 2017-02-22 增加cms漏洞扫描模块,基于exploit-db.com
[+] 2017-02-21 增加常见开放端口暴破模块