当使用一个工具扫描完成后,如果没发现漏洞,可以再使用其他 web 扫描工具再扫描下,因为每个工具可能侧重点不一样,扫描出来的漏洞就不一样。

工具 集合

​github 更多工具:https://github.com/topics/dirb
github 上 fuzz 工具、字典:https://github.com/search?q=fuzz

dirsearch、dirmap:https://github.com/search?q=dirsearch

  • dirsearch:https://github.com/maurosoria/dirsearch
  • dirmap ( web目录扫描工具,功能将会强于DirBuster、Dirsearch、cansina、御剑 ):https://github.com/H4ckForJob/dirmap

御剑后台扫描:https://blog.csdn.net/qq_35599248/article/details/119396936

渗透利器-kali工具 (第二章-4) 信息收集之目录扫描

  • :http://t.zoukankan.com/xz25-p-12829315.html
  • :https://blog.csdn.net/m0_52341820/article/details/124145281

优秀的 web 目录扫描工具至少具备以下功能:

  • 并发引擎
  • 能使用字典
  • 能纯爆破
  • 能爬取页面动态生成字典
  • 能 fuzz 扫描
  • 自定义请求
  • 自定义响应结果处理...

src (安全应急响应中心) 、漏洞平台

大部分规模比较大的公司都有自己独立的 src,或者托管于 补天、漏洞盒子等众测平台

渗透师 导航:https://www.shentoushi.top/index

安全客 导航:https://www.anquanke.com/src/

托管于 补天 的 src ( 专属SRC 企业SRC 公益SRC ):https://www.butian.net/Reward/plan/2

关键字:公益src、众测

漏洞怎么挖 | 公益SRC上榜技巧:https://zhuanlan.zhihu.com/p/347961889

国外、国内 赏金平台

Bounty : 赏金

推荐使用国外平台,可以赚取美元。国内公司在上面发布赏金时,也会比国内高,因为是用美元支付的。国外平台小漏洞也会给钱。国内平台小漏洞不一定给钱。。。

大厂漏洞赏金会比较多,百度、腾讯、阿里、字节、拼多多、美团 等。。。

国外赏金平台列表

HackerOne 网址( 推荐 ):https://www.hackerone.com/
intigriti 网址:https://www.intigriti.com/
BugCrowd 网址:https://www.bugcrowd.com/
OpenBugBounty 网址:https://www.openbugbounty.org/
Cobalt
Bountysource 网址:https://bountysource.com/
Bounty Factory
Coder Bounty
FreedomSponsors
FOSS Factory
SynAck 网址:https://www.synack.com/
HackenProof
Detectify
YesWeHack 网址:https://www.yeswehack.com/

国内赏金

如何通过漏洞挖掘赚取一百万:认识六位百万黑客富翁
https://zhuanlan.zhihu.com/p/142548966

国外有什么网站可以赚美金?

https://www.zhihu.com/question/353079450

1、dirb

dirb:Web Content Scanner。DIRB 是一个 Web内容扫描器。它查找现有(和/或隐藏)的 Web 对象。通过对 web 服务器发起基于字典的攻击并分析响应来工作的。可以参考:brain(x)

使用格式:dirb <url_base> <url_base> [<wordlist_file(s)>] [options]

选项:
       -a <agent_string>    指定 user-agent
       -b                   在给定的URL中,不进行压缩或合并 /../ 和 /./
       -c <cookie_string>   指定 cookie
       -E <certificate>     指定证书文件               
       -f                   NOT_FOUND(404)检测的微调。
       -H <header_string>   指定请求头
       -i                   不区分大小写进行搜索。
       -l                   找到后打印 "Location" 标题。
       -N <nf_code>         忽略指定的 HTTP code 的响应。               
       -o <output_file>     保存输出到硬盘文件
       -p <proxy[:port]>    指定代理               
       -P <proxy_username:proxy_password>  指定代理认证               
       -r                      不进行递归搜索
       -R                      交互式递归。(询问要扫描哪个目录)
       -S                      静默模式。不显示测试的单词。
       -t                      URL 不强制使用 / 结尾。
       -u <username:password>  指定用户名和密码
       -v                      显示不存在页面
       -w                      出现警告信息时不停止
       -x <extensions_file>    使用 指定的字典文件 扩大搜索。

                                         更好用的字典可以到网上去下载 svndigger
       -X <extensions>      使用指定的 扩展名 进行搜索
       -z <milisecs>          添加毫秒延迟,避免洪水攻击

基本使用

对目标进行基本扫描
        dirb http://192.168.186.131/
        dirb https://www.baidu.com  /usr/share/wordlists/dirb/big.txt
        dirb https://www.baidu.com/ -o output.txt /usr/share/wordlists/dirb/big.txt
        dirb https://www.baidu.com -X .php,.txt,.zip  /usr/share/wordlists/dirb/big.txt
        dirb https://www.fi11sm30.com/  -X .php,.txt,.zip
        dirb http://www.baidu.com/ -z 100

-X参数 列举具有特定扩展名列表的目录,多个扩展名使用 逗号进行分割
dirb http://192.168.186.131/ -X .php    # .php 为要搜索的指定扩展名文件

-o 参数 将输出保存到磁盘文件
dirb http://192.168.186.131/ -o output.txt

-N参数 忽略不必要的状态码
dirb http://192.168.186.131/ -N 302  # 302为忽略的状态码

-z 参数 设置延迟,防止请求频繁,导致服务器反应不过来
dirb http://192.168.186.131/ -z 100    # 每次请求间隔100毫秒

不递归(-r)。dirb默认扫描是以递归方式扫描目录。它将扫描目录以及子目录。
但是在某些情况下,如果时间不足,我们会将Dirb设置为不递归扫描。
dirb http://192.168.186.131/ -r

显示不存在页面
404错误是HTTP状态代码,表示你尝试在其网站上访问的页面无法在其服务器上找到。
404 Not Found错误消息经常由各个网站定制。
在某些情况下,我们也需要找到404页。
默认情况下,dirb会跳过这些页面,而如果想要查找这些页面,就需要使用-v参数。
dirb http://192.168.186.131/ -v

不对网址(-t)强制使用结尾的 /
dirb 运行时,必须在 URL 的末尾添加一个正斜杠(/)以便 dirb 能接受我们给出的语句。
我们可以在命令中添加-t参数,即可不在URL的末尾添加一个正斜杠(/)。
dirb http://192.168.186.131 -t

HTTP授权进行扫描
HTTP身份验证/身份验证机制全部基于401状态代码和WWW身份验证响应标头的使用。
最广泛使用的 HTTP身份验证 机制是 Basic。
客户端将用户名和密码作为未加密的base64编码文本发送。
dirb http://192.168.186.131/login.php -u test_username:test_password

-p 参数 设置代理
dirb http://192.168.186.131/ –p 192.168.1.108:3129

2、dirstalk

github 地址:https://github.com/stefanoj3/dirstalk

Dirstalk 是一个多线程应用程序,旨在暴力破解 Web 服务器上的路径。该工具包含类似于 dirbuster 和 dirb 提供的功能。

3、WebMap

github 地址:https://github.com/Anteste/WebMap

WebMap 是一个 Python 工具,可自动执行 Nmap、Nikto 和 Dirsearch,还用于在 Web 渗透测试期间自动生成报告

  • 使用 Nmap 执行网络扫描
  • 使用 Nikto 执行漏洞扫描
  • 使用 Dirsearch 执行目录破坏
  • 生成报告
  • 使用 WebMap 自动化 Web 渗透

Linux & Unix 安装:

$ git clone https://github.com/Anteste/WebMap.git
$ cd WebMap
$ ./install.sh
$ webmap

4、wfuzz ( Kali 自带 )

From:https://blog.csdn.net/weixin_45059752/article/details/122359921

GitHub地址:https://github.com/xmendez/wfuzz/
官方文档:https://wfuzz.readthedocs.io/en/latest/

关键字:fuzz_for_web

模糊测试 (fuzz testing, fuzzing)

模糊测试 (fuzz testing, fuzzing)是一种软件测试技术。其核心思想是:将自动或半自动生成的随机数据输入到一个程序中,并监视程序异常,如崩溃,断言(assertion)失败,以发现可能的程序错误,比如内存泄漏。模糊测试常常用于检测软件或计算机系统的安全漏洞。

模糊测试最早由威斯康星大学的Barton Miller于1988年提出。他们的工作不仅使用随机无结构的测试数据,还系统的利用了一系列的工具去分析不同平台上的各种软件,并对测试发现的错误进行了系统的分析。此外,他们还公开了源代码,测试流程以及原始结果数据。

模糊测试工具主要分为两类,变异测试(mutation-based)以及生成测试(generation-based)。模糊测试可以被用作白盒,灰盒或黑盒测试。文件格式与网络协议是最常见的测试目标,但任何程序输入都可以作为测试对象。常见的输入有环境变量,鼠标和键盘事件以及API调用序列。甚至一些通常不被考虑成输入的对象也可以被测试,比如数据库中的数据或共享内存。

对于安全相关的测试,那些跨越可信边界的数据是最令人感兴趣的。比如,模糊测试那些处理任意用户上传的文件的代码比测试解析服务器配置文件的代码更重要。因为服务器配置文件往往只能被有一定权限的用户修改。

​九大模糊测试工具、AI 模糊测试工具:https://www.aqniu.com/tools-tech/65203.html

CTF-All-In-One 《CTF 竞赛入门指南》:https://firmianay.gitbooks.io/ctf-all-in-one/content/

持续 Fuzz:https://zhuanlan.zhihu.com/p/110188045

英文资料:

  • :https://github.com/secfigo/Awesome-Fuzzing
  • :https://www.fuzzingbook.org/

wfuzz --- web 扫描器

Wfuzz 是一款 Python开发的Web安全测试工具,它不仅仅是一个 web 扫描器:wfuzz能够通过发现并利用网站弱点/漏洞的方式帮助你使网站更加安全。wfuzz的漏洞扫描功能由插件支持。
wfuzz提供了简洁的编程语言接口来处理wfuzz或Burpsuite获取到的HTTP请求和响应。这使得你能够在一个良好的上下文环境中进行手工测试或半自动化的测试,而不需要依赖web形式的扫描器。

wfuzz -h  帮助

用法:wfuzz [options] -z payload,params <url>

FUZZ, ..., FUZnZ 无论这些关键字放在哪里,wfuzz 都会将它们替换为指定有效负载的值。
        FUZZ{baseline_value} FUZZ 将被替换为baseline_value。
        这将是执行的第一个请求,可以用作过滤的基础。
选项:
        -h :       帮助
        --help :    高级帮助
        --version : 版本
        -e <type> :可用 encoders/payloads/iterators/printers/scripts 的列表

-c : 输出颜色
        -v :详细信息。
        --interact : (beta) 如果选择,所有按键都会被捕获。这使您可以与程序进行交互。

-p addr :使用 ip:port:type 格式的代理。重复使用各种代理的选项。
                                    如果省略,类型可以是 SOCKS4、SOCKS5 或 HTTP。
        -t N :        指定并发连接数(默认10)
        -s N :        指定请求之间的时间延迟(默认为 0)
        -R depth:     递归路径发现深度为最大递归级别(默认为0)
        -D depth :    最大链接深度级别(默认为 4)
        -L, --follow :跟随 HTTP 重定向

-u url :    指定请求的 URL。
        -z payload :给每个关键字FUZZ指定有效负载,可使用的类型为:type,parameters,encoder。
                     可以使用编码器列表,例如 md5-sha1。编码器可以链接,即。 md5@sha1。
                     可以使用编码器类。 IE。
                     使用帮助作为有效负载来显示有效负载插件的详细信息(您可以使用 --slice 进行过滤)
        -w wordlist :指定一个字典文件(等价于 -z file,wordlist )。
        -V alltype :所有参数暴力破解(allvars 和 allpost)。不需要 FUZZ 关键字。
        -X 方法:    为请求指定一个 HTTP 方法,即 HEAD 或 FUZZ

-b cookie :     指定 cookie
        -d postdata :  postdata (ex: "id=FUZZ&catalogue=1")
        -H header:     使用 header(例如:"Cookie:id=1312321&user=FUZZ")
        --basic/ntlm/digest auth : 格式为 "user:pass" 或 "FUZZ:FUZZ" 或 "domain\FUZ2Z:FUZZ"

--hc/hl/hw/hh N[,N]+ :使用指定的 "代码/行/单词/字符" 隐藏响应(使用 BBB 从基线获取值)
        --sc/sl/sw/sh N[,N]+ :使用指定的 "代码/行/单词/字符" 显示响应(使用 BBB 从基线获取值)
        --ss/hs regex:        显示/隐藏 带有指定正则表达式 的 响应

wfuzz 本身自带字典,可以在 wfuzz 的安装目录下找到。

但相对 FuzzDB 和 SecLists 来说还是不够全面不够强大的,当然如果有自己的字典列表最好~

wfuzz 基本使用

目录遍历

就是对目录 ( 或者某个文件 ) 进行爆破,对已知的 url 进行目录 ( 或者某个文件 ) 猜解,达到获取到更多的可访问的目录(某个文件)信息,信息收集,扩大攻击面。

wfuzz -w wordlist URL/FUZZ.php     Wfuzz 爆破文件
wfuzz -w wordlist URL/FUZZ            Wfuzz 爆破目录

使用 -z 或 -w 参数可以同时指定多个 payloads,
这时相应的占位符应设置为 FUZZ, … , FUZnZ, 其中 n 代表了 payload 的序号。
--hc  可以过滤 http 状态码。
举例:wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt -w /usr/share/wfuzz/wordlist/general/common.txt -w /usr/share/wfuzz/wordlist/general/extensions_common.txt --hc 404 http://testphp.vulnweb.com/FUZZ/FUZ2ZFUZ3Z

遍历枚举参数值
假如地址:http://127.0.0.1/getuser.php?uid=123  可获取 uid 为 123 的个人信息
uid 参数可以遍历,已知 123 为三位数纯数字,需要从 000-999 进行遍历,
也可以使用 wfuzz 来完成。使用 payloads 模块类中的 range 模块进行生成。
命令:wfuzz -z range,000-999 http://127.0.0.1/getuser.php?uid=FUZZ

Post 数据爆破

场景:发现一个登录框,没有验证码,想爆破弱口令账户。
请求地址为:http://127.0.0.1/login.php
POST请求正文为:username=&password=
使用 wfuzz 测试:wfuzz -w userList -w pwdList -d "username=FUZZ&password=FUZ2Z" http://127.0.0.1/login.php

-d 参数传输 POST 请求正文。

Cookie 测试

-b 参数指定 Cookie,多个 Cookie 需要指定多次,也可以对 Cookie 进行测试,仍然使用FUZZ占位符即可。
携带 Cookie 命令:wfuzz -z range,000-999 -b session=session -b cookie=cookie http://127.0.0.1/getuser.php?uid=FUZZ

http 的 Headers 爆破

HTTP Headers 测试
假如一个刷票的漏洞,这个漏洞需要伪造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
-H 指定HTTP头,多个时,需要指定多次(同Cookie的-b参数)。

http 的 请求方法(Method)

测试一个网站 ( http://127.0.0.1/ ) 支持哪些 HTTP 请求方法。

命令:wfuzz -z list, "GET-POST-HEAD-PUT" -X FUZZ http://127.0.0.1/

-z list 参数 可以自定义一个字典列表( 在命令中体现 ),以 - 分割。因为这里要测试HTTP请求方法,所以 字典列表为 GET-POST-HEAD-PUT 

-X 参数 指定HTTP请求方法类型,后面的值为 FUZZ 占位符。

使用代理

命令:wfuzz -w wordlist -p proxtHost:proxyPort:TYPE URL/FUZZ
-p 参数指定主机:端口:代理类型,多个代理可使用多个-p参数同时指定
wfuzz 每次请求都会选取不同的代理进行。
如果想使用ssr 则命令为:wfuzz -w wordlist -p 127.0.0.1:1087:SOCKS5 URL/FUZZ

认证

测试 HTTP Basic Auth 保护命令:
wfuzz -z list,"username-password" --basic FUZZ:FUZZ URL
wfuzz 可以通过 --basec --ntml --digest 来设置认证头,
使用方法都一样:--basec/ntml/digest username:password

递归测试

-R 参数可以指定一个 payload 被递归的深度(数字)。
例如:爆破目录时,我们想使用相同的 payload 对已发现的目录进行测试,命令如下:
wfuzz -z list,"admin-login.php-test-dorabox" -R 1 http://127.0.0.1/FUZZ
如上命令就是使用了自定义字典列表:
admin
login.php
test
dorabox    
递归深度为 1,也就是说当发现某一个目录存在的时候,在存在目录下再递归一次字典。

并发、请求间隔

wfuzz 提供了一些参数可以用来调节 HTTP 请求的线程
假如想测试一个网站的转账请求是否存在HTTP并发漏洞(条件竞争)
请求地址:http://127.0.0.1/dorabox/race_condition/pay.php
POST请求正文:money=1
命令:wfuzz -z range,0-20 -t 20 -d "money=1" http://127.0.0.1/dorabox/race_condition/pay.php?FUZZ
这里使用 range 模块生成 0-20,填充的 FUZZ 占位符的位置,
使用 -t 参数 设置 并发请求,该参数默认设置都是 10。
使用 -s 参数 设置 每次发送HTTP的时间间隔。

保存 测试结果

wfuzz 通过 printers 模块来将结果以不同格式保存到文档中,一共有如下几种格式:
raw       | `Raw` output format
json      | Results in `json` format
csv       | `CSV` printer ftw
magictree | Prints results in `magictree` format
html      | Prints results in `html` format

使用 -f 参数,指定值的格式为输出文件位置,输出格式。

将结果以 json 格式输出到文件的命令:wfuzz -f outfile,json -w wordlist URL/FUZZ

Wfuzz 高阶功法

From:WFUZZ使用教程:https://www.fuzzer.xyz/2019/03/29/WFUZZ使用教程/

BurpSuite 的 Intruder 模块中 Attack Type 有:

  • Sniper(狙击手)
  • Battering ram(撞击物)
  • Pitchfork(相交叉)
  • Cluster bomb(集束炸弹)

wfuzz 也可以完成这样的功能,将不同的字典的组合起来,那就是 Iterators 模块。
使用参数 -m 迭代器,wfuz z自带的迭代器有三个:zip、chain、product,如果不指定迭代器,默认为 product 迭代器。

zip 命令

示例:wfuzz -z range,0-9 -w dict.txt -m zip http://127.0.0.1/ip.php?FUZZ=FUZ2Z

该命令的意思:设置了两个字典。两个占位符,
一个是range模块生成的0、1、2、3、4、5、6、7、8、9 10个数字,
一个是外部字典dict.txt的9行字典,
使用zip迭代器组合这两个字典发送。

zip迭代器的功能:字典数相同、一一对应进行组合,如果字典数不一致则多余的抛弃掉不请求,
如上命令结果就是数字9被抛弃了因为没有字典和它组合。

chain 命令

示例:wfuzz -z range,0-9 -w dict.txt -m chain http://127.0.0.1/ip.php?FUZZ

该命令设置了两个字典,一个占位符 FUZZ,使用 chain 迭代器组合这两个字典发送。
chain迭代器的功能:通过返回结果就能看出来chain迭代器的功能了,这个迭代器是将所有字典全部整合(不做组合)放在一起然后传入占位符FUZZ中。

product 命令

示例:wfuzz -z range,0-2 -w dict.txt -m product http://127.0.0.1/ip.php?FUZZ=FUZ2Z

该命令的意思:设置了两个字典,两个占位符,一个是range模块生成的0、1、2 3个数字,一个是外部字典dict.txt的3行字典,使用product迭代器组合这两个字典发送。

product 迭代器的功能:通过返回结果,知道了请求总数为9,请求的payload交叉组合:

Encoders

wfuzz 中 encoders 模块可以实现编码解码、加密,它支持如下图中所列转换功能:

使用 Encoders

使用 Encoders 的 md5 加密。
wfuzz -z file --zP fn=wordlist,encoder=md5 URL/FUZZ

这里简写了第一条命令,一般都使用这条命令来调用Encoders
wfuzz -z file,wordlist,md5 URL/FUZZ

使用 多个 Encoder

多个转换,使用一个-号分隔的列表来指定
wfuzz -z file,dict.txt,md5-base64 http://127.0.0.1/ip.php\?FUZZ

多次转换,使用一个@号分隔的列表来按照从右往左顺序多次转换
( 这里让传入的字典先md5加密然后base64编码 )
wfuzz -z file,dict.txt,base64@md5 http://127.0.0.1/ip.php\?FUZZ

Scripts

wfuzz 是支持插件的,其本身也有很多插件,插件大部分都是实现扫描和解析功能,插件共有两大类和一类附加插件:

  • passive:分析已有的请求和响应(被动)
  • active:会向目标发送请求来探测(主动)
  • discovery:自动帮助wfuzz对目标站进行爬取,将发现的内容提供给wfuzz进行请求

Wfuzz 默认自带脚本如下:

使用 Scripts

--script-help 参数查看关于模块的信息。示例:wfuzz --script-help=robots

自定义插件

使用 wfuzz 可以自己编写 wfuzz 插件,需要放在 ~/.wfuzz/scripts/ 目录下,具体如何编写可以参考已有的插件:https://github.com/xmendez/wfuzz/tree/master/src/wfuzz/plugins/scripts

技巧

Recipes
Wfuzz 可以生成一个 recipes 用来保存命令,方便下次执行或者分享给别人。

生成一个 recipes:
wfuzz --script=robots -z list,"robots.txt" --dumo-recipe outrecipe URL/FUZZ

使用某个 recipes:
wfuzz --recip outrecipe

网络异常

Wfuzz 扫描的时候出现网络问题,如DNS解析失败,拒绝连接等时,wfuzz会抛出一个异常并停止执行,使用 -Z 参数即可忽略这些错误继续执行。
出现错误的 payload 会以返回码 XXX 来表示,Payload 中还有出现的错误信息。

超时

使用 wfuzz 扫描会遇到一些响应很慢的情况,wfuzz 可以设置超时时间。
参数 --conn-delay 来设置 wfuzz 等待服务器响应接连的秒数。

参数 --req-delay 来设置 wfuzz 等待响应完成的最大秒数。

结合 BurpSuite

从 Burp 的 LOG 文件中获取测试的URL地址:

示例命令:wfuzz -z burplog,"1.burp" FUZZ

还有能够读取burpsuite保存的state:wfuzz -z burpstate,a_burp_state.burp FUZZ

过滤器

这里篇幅太长,建议综合参考 https://github.com/xmendez/wfuzz/blob/18a83606e3011159b4b2e8c0064f95044c3c4af5/docs/user/advanced.rst

字典

在这里贴出来自己搜集的字典!需要的可以自行下载

链接:百度网盘-链接不存在    提取码:j66f

使用示例:

5、wordpress 类型web站点 的 识别

wordpress 官网:WordPress.com:快速、安全的受管 WordPress 托管服务

cmseek --- 网站 指纹识别

命令:cmseek -u https://www.coolshell.cn

wpscan --- 专门的 wordpress 类型网站识别

6、nikto --- Web应用漏洞扫描

​nikto2 官网:https://cirt.net/nikto2
Nikto 完整文档:https://github.com/sullo/nikto/wiki
Web 漏洞扫描神器 Nikto 使用指南:https://zhuanlan.zhihu.com/p/124246499

Nikto 是一款开放源代码的、功能强大的 WEB 扫描评估软件,能对 web 服务器多种安全项目进行测试的扫描软件,去寻找已知有名的漏洞,能在230多种服务器上扫描出2600多种有潜在危险的文件、CGI 及其他问题,它可以扫描指定主机的 WEB 类型、主机名、特定目录、COOKIE、特定 CGI 漏洞、返回主机允许的 http 模式等等。

Nikto 使用 LibWhiske 库,但通常比 Whisker 更新的更为频繁。Nikto 是网管安全人员必备的 WEB 审计工具之一。

Nikto 是 perl 语言开发的,其特点扫描全面,速度快。

Nikto 是一个比较全面的网页扫描器。

nikto 参数

通过 nikto -H 、man nikto 查看更详细的帮助信息。

以下所有选项,凡是有带 + 号的代表后面需要跟一个值:

   选项:-ask+               询问是否更新yes   每次都询问 (默认)no    不询问,不发送auto  不询问,只发送-Cgidirs+           扫描 指定CGI目录: "none", "all", 或者类似 "/cgi/ /cgi-a/"-config+            使用指定的配置文件-Display+           打开/关闭 显示输出:1     显示重定向2     显示接受 cookie3     显示所有200/OK响应4     显示要求认证的URLD     调试输出E     显示所有HTTP错误                            P     打印处理进度到 STDOUTS     格式化输出IP地址和主机名V     详细输出-dbcheck           检查数据库和其他关键文件的语法错误-evasion+          编码技术: 对扫描包进行一些变形,绕过IDC检测。1    随机 URI 编码 (non-UTF8)2    使用相对路径 (/./)3    过早的 URL 结尾4    预先添加长随机字符串5    使用伪造的虚假参数6    使用 TAB 作为请求间隔7    更改 URL 的大小写8    使用 Windows 目录分隔符 (\)A    使用 回车符 (0x0d) 作为请求分隔符B    使用二进制值 0x0b 作为请求间隔-Format+           保存文件的格式 (-o):csv   csc  格式htm   HTML 格式nbe   Nessus的NBE格式sql   通用 SQL(请参阅架构文档)txt   文本xml   XML 格式如果不指定文件格式,将从 -output 获取文件扩展名-Help              帮助-host+             目标 主机/ URL-404code           忽略 HTTP code 的响应 (always). Format is "302,301".-404string         忽略response中包含string的响应 (always). 字符串可以使用正则表达式。-id+               主机使用的身份验证,格式是 ID:密码 或 ID:密码:领域-key+              客户端证书密钥文件-list-plugins      列出所有可用的插件,不执行测试-maxtime+          每个主机的最大测试时间 (e.g., 1h, 60m, 3600s)-mutate+           猜额外的文件名。变化猜测技术:1   测试所有的文件,所有的根目录2   猜测密码文件名3   通过Apache枚举用户名(/~user type requests)4   通过cgiwrap枚举用户名(/cgi-bin/cgiwrap/~user type requests)5   试暴力破解子域名,假设主机名称是父域名6   尝试从提供的字典文件中猜测目录名称-mutate-options    Provide information for mutates-nointeractive     禁用交互特性-nolookup          禁止 DNS 查找-nossl             禁止 SSL-no404             禁用 Nikto 尝试猜测404页-Option            覆盖 nikto.conf 中的选项,可以多次发出-output+           将输出写入到文件('.' 表示自动生成文件名)-Pause+            测试之间的停顿(秒,整数或浮点数)-Plugins+          列出正在运行的插件(默认:ALL)-port+             指定端口(默认80)-RSAcert+          客户证书文件-root+             为所有请求添加根目录 /,格式为 /directory-Save              保存响应到目录中('.' 表示自动命名)-ssl               强制SSL端口模式-Tuning+           扫描选项: 控制 Nikto 使用不同的方式来扫描目标。1 日志文件2 错误配置/默认文件3 信息披露。公开信息4 注入(XSS/脚本/HTML)5 Web Root 内的 远程文件检索6 拒绝服务7 服务器范围 内的 远程文件检索8 命令执行/远程Shell9 SQL注入0 文件上传a 身份验证绕过b 软件标识c 远程源包含d 网络服务e 管理控制台x 反向选择(即 选择指定之外的所有选项)-timeout+          请求超时时间 (默认 10 秒)-Userdbs           仅加载用户数据库,不加载标准数据库all   禁用标准 dbs,仅加载用户 dbstests 禁用 db_tests,加载 udb_tests-useragent         设置 useragent-until             Run until the specified time or duration-update            从 CIRT.net 更新 数据库和插件-url+              扫描的目标 host/URL (别名 -host)-useproxy          使用在 nikto.conf 定义的代理。或者使用参数 http://server:port-Version           打印插件和数据库版本-vhost+            Virtual host (for Host header)

Nikto 插件

Nikto 通过大量插件进行扫描,通过 nikto -list-plugins 来查看插件信息

通过 nikto -V 来查看工具版本和插件版本

nikto 基本使用

交互功能。在扫描期间,按下下面任意键,可开启或关闭相关功能,注意这些命令是区分大小写。

空格     报告当前扫描状态
v        显示详细信息
d        显示调试信息
e        显示http错误信息
p        显示扫描进度
r        显示重定向信息
c        显示cookie
a        显示身份认证过程
q        退出程序
N        扫描下一个目标
P        暂停扫描

使用

1. 最基本的 扫描。
    最基本的 nikto 扫描只需要指定目标的 host (通过 -h 参数指定),
    也可以指定要扫描的端口号 (通过 -p 来指定),默认是80
    nikto -h 192.168.0.1
    nikto -host/-h www.baidu.com -p 443 -ssl        // 针对 https 扫描

2. 多端口 扫描。
    # 扫描80,88,443三个端口
    nikto -h 192.168.0.1 -p 80,88,443
    # 扫描80~90共10个端口
    nikto -h 192.168.0.1 -p 80-90

3. 多 host 扫描
    -host 参数的值为一个文件,该文件存一系列的 host 或者 ip。
    文件格式要求是:每个host必须占一行,端口号放行末,
    端口号通过冒号或者逗号和host其他端口号区分开。
    nikto -host url.txt
    文件 url.txt 内容:
        192.168.0.1:80
        http://192.168.0.1:8080/
        192.168.0.3
4. 扫描 https
    nikto -host www.baidu.com -ssl -port 443
    ​nikto -h URL -useproxy http://127.0.0.1:1080
    nikto -host https://www.baidu.com -ssl -useproxy http://127.0.0.1:8080

5. 使用 LibWhisker 绕过 IDS 的检测
    nikto -host www.baidu.com -ssl -port 443 -evasion 1358

6. CGI扫描 -C 参数只能放在后面,应该可以指定相对目录。
    nikto –h 192.168.0.1 -c
    nikto –h 192.168.0.1 -c /phpbb
    数据库扫描 此参数也需要跟在后面
    nikto –h 192.168.0.1 -c -d
    猜测 apache 默认配制密码 前提需要目标服务器允许 guess
    nikto –h 192.168.0.1 -m
    报告输出指定地点
    nikto –h 192.168.0.1 -o result.txt

7. 扫描方式
    Tuning 选项控制 Nikto 使用不同的方式来扫描目标。
    -T 参数后的数字是隐藏的,可以灵活搭配使用
    nikto –h 192.168.0.1 -T 58
    nikto –h 192.168.0.1 -T 58x
    nikto –h 192.168.0.1 -T 默认不指定数字

8. 生成报告
    nikto -host xxxx -output result.html -F html

Nikto 的扫描结果还可以导出为 Metasploit在执行扫描时可以读取的格式,
这样就可以使用 msf 漏洞库快速配检索数据
nikto -host/-h http://www.example.com -Format msf+

完全点检测一个主机信息:nikto -h 192.168.0.1 -m -T -c -o 结果.txt

指定目录扫描

有时候只扫描网站下的某个子目录,可以使用 -c 参数 指定扫描的目录,
使用 -c all 可进行目录爆破,并扫描。
示例:nikto -h http://192.168.1.5 -c /dvwa

Nikto 在扫描过程中可以使用8种规则绕过IDS检测,参数是 - evasion,具体规则如下:

1,随机url编码
2,自选路径
3,提前结束url
4,优先考虑长随机字符串
5,参数欺骗
6,使用TAB作为命令分隔符
7,使用变化的url
8,使用windows路径分隔符

组件默认密码

nikto官网还发布了各大组件的默认密码,可以访问 https://cirt.net/passwords 进行查看。

Nikto 配合 Nmap 扫描

Nikto 支持配合 Nmap 进行扫描 ,运行命令:nmap -p80 x.x.x.x -oG - |nikto -host -

nmap 扫描开放 80 端口的 IP,并通过 oG 选项对扫描结果输出并整理,然后通过管道符 | 将上述扫描结果导入到 nikto 进行扫描。

示例:

在谷歌搜索 nikto reports 有了这样一份报告,就拿他来小试牛刀 
​http://www.ruben-alves.com/ficheiros/nikto-AT-localhost.html
提示:这是一份html格式的报告,生成命令为:nikto -h xxxx -o result.html -F htm
个人认为,html格式的报告比txt格式的报告好看,建议使用 html 报告格式

Nikto Scan Summary

Software Details Nikto 2.00
CLI Options -host localhost -output nikto@localhost -F html
Hosts Tested 1

首先,告诉了 nikto 的信息,使用的是 nikto 软件,版本号,命令行参数

localhost / 127.0.0.1

Target IP 127.0.0.1
Target hostname localhost
Target Port 80
HTTP Server Apache/2.2.4 (Ubuntu) PHP/5.2.3-1ubuntu6
Start Time 2007-11-14 0:09:00
End Time 2007-11-14 0:09:00
Elapsed 17 Seconds
Site Link (Name) http://localhost:80/
Site Link (IP) http://127.0.0.1:80/
Items Tested 4342
Items Found 8

上面的表格告诉我们的是目标服务器相关的信息,ip,域名,端口号,web服务器等等

Information OSVDB-877: HTTP method ('Allow' Header): 'TRACE' is typically only used for debugging and should be disabled. This message does not mean it is vulnerable to XST.
OSVDB Entries OSVDB-877
Information PHP/5.2.3-1ubuntu6 appears to be outdated (current is at least 5.2.4)
OSVDB Entries
Information Apache/2.2.4 appears to be outdated (current is at least Apache/2.2.6). Apache 1.3.39 and 2.0.61 are also current.
OSVDB Entries
Information PHP/5.2.3-1ubuntu6 appears to be outdated (current is at least 5.2.4)
OSVDB Entries

上述是针对服务器提出的几种建议。下面的表格厉害了,注意看description

URI /phpmyadmin/
( 这是相对于host的路径)
HTTP Method GET
Description phpMyAdmin is for managing MySQL databases, and should be protected or limited to authorized hosts.
(phpmyadmin是负责管理mysql数据库的页面,应该限制访问权限)
Test Links http://localhost:80/phpmyadmin/
http://127.0.0.1:80/phpmyadmin/
OSVDB Entries OSVDB-3092
URI /icons/
HTTP Method GET
Description Directory indexing is enabled: /icons indexing
(目录遍历漏洞)
Test Links http://localhost:80/icons/
http://127.0.0.1:80/icons/
OSVDB Entries OSVDB-3268
URI /
HTTP Method TRACE
Description TRACE option appears to allow XSS or credential theft. See http://www.cgisecurity.com/whitehat-mirror/WhitePaper_screen.pdf for details
Test Links http://localhost:80/
http://127.0.0.1:80/
OSVDB Entries OSVDB-877
URI /index.php?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000
HTTP Method GET
Description PHP reveals potentially sensitive information via certain HTTP requests which contain specific QUERY strings.
(访问上面的url,我们发现其实是phpinfo页面啊,确实包含了很多敏感信息)
Test Links http://localhost:80/index.php?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000
http://127.0.0.1:80/index.php?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000
OSVDB Entries OSVDB-12184
URI /phpinfo.php
HTTP Method GET
Description Contains PHP configuration information
Test Links http://localhost:80/phpinfo.php
http://127.0.0.1:80/phpinfo.php
OSVDB Entries OSVDB-3233
URI /server-status
HTTP Method GET
Description This reveals Apache information. Comment out appropriate line in httpd.conf or restrict access to allowed hosts.
Test Links http://localhost:80/server-status
http://127.0.0.1:80/server-status
OSVDB Entries OSVDB-561
URI /readme
HTTP Method GET
Description This might be interesting...
Test Links http://localhost:80/readme
http://127.0.0.1:80/readme
OSVDB Entries OSVDB-3092
URI /doc/
HTTP Method GET
Description The /doc/ directory is browsable. This may be /usr/doc.
Test Links http://localhost:80/doc/
http://127.0.0.1:80/doc/
OSVDB Entries OSVDB-48

许多 Nikto 的警报会返回 OSVDB 序号。这是由开源缺陷数据库(http://osvdb.org/)所指定。可以在 OSVDB 上找出相关缺陷的深入说明。

同许多渗透测试工具一样,nikto提供给你的信息有局限性,如果nikto确定一个问题,很值得我们深究到底,因为全世界的每个黑客都可以轻易的找到相同的问题,另一方面,如果nikto什么也没找到,也不代表就不存在安全问题

随着你的安全测试变的成熟,从 nikto 的扫描中得到的收益将越来越少。

靶 机 演 练

登录到操作系统之后怎么办?

  • 查看敏感文件:ls -al、find / -name
  • sudo -l
  • 操作系统漏洞
  • history 命令

渗透测试 ( 10 ) --- 扫描 web目录、文件 (dirb、wfuzz、wpscan、nikto)相关推荐

  1. 渗透测试 10 --- 扫描 web目录 (dirb、wfuzz、wpscan、nikto)

    github 更多工具:https://github.com/topics/dirb github 上 fuzz 工具.字典:https://github.com/search?q=fuzz 当使用一 ...

  2. web目录字典_Dirmap:一款高级Web目录文件扫描工具

    前言 本人是一名立志安全开发的大学生,有一年安全测试经验,有时在刷src的时候,需要检查所有target的web业务系统是否泄露敏感目录.文件,工作量十分庞大,于是Dirmap诞生了~ 知名的web目 ...

  3. Dirmap:一款高级Web目录文件扫描工具

    前言 本人是一名立志安全开发的大学生,有一年安全测试经验,有时在刷src的时候,需要检查所有target的web业务系统是否泄露敏感目录.文件,工作量十分庞大,于是Dirmap诞生了~ 知名的web目 ...

  4. 渗透测试信息收集:目录扫描

    入行这么久,一次完整的渗透也没完成过,最近想从信息收集开始,完整的渗透一次网站,目前在进行信息收集,写篇文章,记录下自己在进行目录扫描中用过的工具. 渗透测试信息收集:目录扫描 目录 渗透测试信息收集 ...

  5. web目录文件扫描工具 dirmap 简介

    知名的web目录文件扫描工具有很多,如:御剑1.5.DirBuster.Dirsearch.cansina. 其他开源的各种轮子,更是数不胜数. 这次我们不造轮子,我们需要造的是一辆车!open so ...

  6. Kali渗透测试:通过Web应用程序实现远程控制

    Kali渗透测试:通过Web应用程序实现远程控制 ​ 我们所接触的PHP.JSP这样的语言主要是用来开发Web应用程序的,但其实他们的功能十分强大,也可以实现远程控制的功能.我们经常听说的" ...

  7. 渗透测试-基础入门-web源码拓展_4

    一如既往的学习,一如既往的整理,一如既往的分享 一.前言 web源码在安全测试中是非常重要的信息来源,可以用来代码审计漏洞也可以用来做信息突破口,其中WEB源码有很多技术需要简明分析. 比如:获取AS ...

  8. Web目录文件扫描程序(python)

    使用方法 首先找个网站,我们可以看到URL中有php后缀名,说明该网站为php网站 输入参数:URL,文件类型,线程数,即可扫出目录文件 验证一下,访问成功 代码 环境 pycharm,python3 ...

  9. 渗透测试-最全Web 渗透测试信息搜集-CheckList

    干货 | 最全Web 渗透测试信息搜集-CheckList 文章目录 干货 | 最全Web 渗透测试信息搜集-CheckList 前言 1.获取真实IP 2.如何判断是否是CDN 使用ping域名判断 ...

  10. 渗透测试 ( 5 ) --- 扫描之王 nmap、渗透测试工具实战技巧合集

    Nmap 官方文档 ( 中文文档是 Nmap 版本4.50,英文文档是最新的 ): 英文文档:https://nmap.org/book/man.html 中文文档:https://nmap.org/ ...

最新文章

  1. 第22届清华大学电子设计大赛决赛
  2. leetcode-121-买卖股票的最佳时机
  3. drawable如何只让两个叫圆角_cad怎么使用圆角?cad的圆角怎么使用?
  4. 使用ffmpeg将BMP图片编码为x264视频文件,将H264视频保存为BMP图片,yuv视频文件保存为图片的代码
  5. 使用VS2010编译Qt 5.6.1过程记录
  6. Matlab中图例注释函数legend详解
  7. 在Visual Studio Code配置GoLang开发环境
  8. Jquery取得iframe中元素的几种方法Javascript Jquery获取Iframe的元素、内容或者ID,反之也行!...
  9. python真的是吹过了-python是否被过度吹捧?
  10. 雅礼集训Day3-难题选讲
  11. SpringBoot+Quartz+数据库存储
  12. 精度LiDAR-Monocular Visual Odometry
  13. sloth(标点工具)使用说明
  14. IE浏览器网址被劫持
  15. SpringMVC:视图解析器(ViewResolver)
  16. 程序猿生存指南-43 温柔以待
  17. 开启 Kerberos 安全的大数据环境中,Yarn Container 启动失败导致作业失败
  18. linux降调软件下载,o的发音有几种
  19. 三问新能源车险:亲自下场卖保险,意欲何为?
  20. [solved] login to server failed: EOF

热门文章

  1. 老农斗杀巨型蜈蚣目击记
  2. pycharm官方下载库很慢、会失败的解决方法
  3. PVC地板IMO船舶防火测试认证注意事项
  4. 大型企业开发的ERP系统主要包括几个模块
  5. JavaScript “use strict“(严格模式)
  6. pythonshell窗口是什么_使用IDLE的Python shell窗口实例详解
  7. 埃隆·马斯克(Elon Musk)
  8. 谷歌浏览器部分iframe页面无法打开,跨域问题
  9. T1119 紧急措施(逐句精解)
  10. 测试不同体重体型软件样子的,一种智能体型体重测量仪的设计