总字符数: 21.79K

代码: 12.88K, 文本: 4.42K

预计阅读时间: 1.25 小时

主动信息收集的原理

全球网络攻防实时地图

通以下链接,我们可以发现,现在这个安静的网站环境下,一直存在着攻击和渗透。

主动信息收集的特点

  1. 直接与目标系统交互通信
  2. 无法避免留下访问的痕迹
  3. 使用受控的第三方电脑进行探测,使用代理或已经被控制的机器,做好被封杀的准备
  4. 扫描发送不同的探测,根据返回结果判断目标状态

扫描敏感目录/文件

扫描敏感目录需要强大的字典,需要平时积累,拥有强大的字典能够更高效地找出网站的管理后台,敏感文件常见的如**.git文件泄露,.svn文件泄露,phpinfo泄露,robots.txt,网站banner,网站后台,测试文件,备份,github源码,JS敏感文件,网页源代码**等,这一步一半交给各类扫描器就可以了,将目标站点输入到域名中,选择对应字典类型,就可以开始扫描了,十分方便。

JS敏感文件

1
2
3
python3 PackerFuzzer.py -u https://www.liaoxuefeng.com
# 查看报告
cd reports
1
2
# 建议使用 -ou 和 -os 来指定保存 URL 和子域名的文件名
python3 JSFinder.py -u http://www.jiangjiyue.com -d -ou mi_url.txt -os mi_subdomain.txt

dirsearch

dirsearch是一个基于python3的命令行工具,常用于暴力扫描页面结构,包括网页中的目录和文件。

相比其他扫描工具disearch的特点是:

  • 支持HTTP代理
  • 多线程
  • 支持多种形式的网页(asp,php)
  • 生成报告(纯文本,JSON)
  • 启发式检测无效的网页
  • 递归扫描
  • 用户代理随机化
  • 批量处理
  • 扫描器与字典(注:字典必须是文本文件)

简单使用

1
2
3
4
5
6
7
8
dirsearch -u https://target 
dirsearch -e php,html,js -u https://target

dirsearch -e * -u https://target -w /path/to/wordlist
# 参数
# -e 扫描网站需要指定网站的脚本类型,*为全部类型的脚本
# -u 指定域名
# -w 设置字典

图中,每一列的含义分别是:扫描时间,状态码,大小,扫描的目录,重定向的地址

参数列表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
-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格式保存结果

Dirbuster

DirBuster支持全部的Web目录扫描方式。它既支持网页爬虫方式扫描,也支持基于字典暴力扫描,还支持纯暴力扫描。该工具使用Java语言编写,提供命令行(Headless)和图形界面(GUI)两种模式。其中,图形界面模式功能更为强大。用户不仅可以指定纯暴力扫描的字符规则,还可以设置以URL模糊方式构建网页路径。同时,用户还对网页解析方式进行各种定制,提高网址解析效率。

启动dirbuster

1
2
3
4
5
6
┌──(root㉿kali)-[/home]
└─# dirbuster
Command 'dirbuster' not found, but can be installed with:
apt install dirbuster
Do you want to install it? (N/y)
# 如果出现以上内容,输入y回车安装即可

设置相关参数

  1. 目标ip地址或域名,默认80端口,特殊端口需要加到后面
  1. 请求方式,用get方式或者HEAD加GET自动切换
  1. 选择线程数,用于执行暴力破解的线程数完全取决于计算机的硬件

  2. 选择字典类型,字典列表目录为:/usr/share/dirbuster/wordlists

  3. 自动生成,和步骤4二选一,建议使用字典

  4. 选择扫描方式

  5. 如果用URL Fuzz,可以指定目录,指定扫描admin目录下面的所有文件,dir代表字典的每一行

  6. 点击开始

查看结果

  1. Scan Information:扫描信息

  2. Results -List View:结果列表

  3. Results -Tree View:结果树

  4. Errors:错误

  1. 为确定文件是否存在,最常见的响应如下所示

    • 200:文件存在;

    • 404:服务器中不存在该文件;

    • 301:这是重定向到给定的URL;

    • 401:访问此文件需要身份验证;

    • 403:请求有效但服务器拒绝响应。

导出结果

dirb

dirb是一个基于字典的web目录扫描工具,采用递归的方式来获取更多的目录,可以查找到已知的和隐藏的目录,它还支持代理和http认证限制访问的网站在渗透测试过程中,是一个非常好用的工具

dirb命令参数

1
2
3
4
5
6
7
8
9
格式:dirb <url_base> [<wordlist_file(s)>] [options]
-a 设置user-agent
-p <proxy[:port]>设置代理
-c 设置cookie
-z 添加毫秒延迟,避免洪水攻击
-o 输出结果
-X 在每个字典的后面添加一个后缀
-H 添加请求头
-i 不区分大小写搜索
1
dirb http://192.168.64.170 -w /usr/share/wordlists/dirb/big.txt

基于ping命令的探测

PING命令也延伸出了很多其他的命令,如ARPING、FPING、HPING等

ping

PING命令是我们常用的判断主机之间网络是否畅通,同样也是能判断我们的目标主机是否存活

1
2
3
4
5
6
7
8
9
10
11
┌──(root㉿kali)-[/home]
└─# ping www.baidu.com -c 4
PING www.a.shifen.com (180.101.50.188) 56(84) bytes of data.
64 bytes from 180.101.50.188 (180.101.50.188): icmp_seq=1 ttl=51 time=35.0 ms
64 bytes from 180.101.50.188 (180.101.50.188): icmp_seq=2 ttl=51 time=35.1 ms
64 bytes from 180.101.50.188 (180.101.50.188): icmp_seq=3 ttl=51 time=35.0 ms
64 bytes from 180.101.50.188 (180.101.50.188): icmp_seq=4 ttl=51 time=35.2 ms

--- www.a.shifen.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 34.986/35.067/35.152/0.060 ms

ARPING

ARP协议概述

ARP协议是“Address Resolution Protocol”(地址解析协议)的缩写。计算机通过 ARP协议将IP地址转换成MAC地址。

ARP协议工作原理

在以太网中,数据传输的目标地址是MAC地址,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。

计算机使用者通常只知道目标机器的IP信息,”地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。

简单地说,ARP协议主要负责将局域网中的32位IP地址转换为对应的48位物理地址,即网卡的MAC地址,保障通信顺利进行。

  1. windows下查看MAC地址:ipconfig /all
  1. 使用arping命令查看局域网中的IP是否有冲突

    1
    2
    3
    4
    5
    6
    └─# arping 192.168.2.107
    ARPING 192.168.2.107
    Timeout
    Timeout
    Timeout
    # 注意:按CTRL+C结束arping命令

netdiscover

netdiscover是一个主动/被动的ARP侦查工具.使用netdiscover工具可以在网络上扫描IP地址,检查在线主机或搜索为它们发送的ARP请求。

主动模式

主动模式顾名思义就是主动的探测发现网络内主机,但是这种方式往往会引起网络管理员的注意

1
2
3
4
5
6
┌──(root㉿kali)-[/home]
└─# netdiscover -i eth0 -r 192.168.2.0/24
# 参数:
# -i 设备:您的网络设备 这里是指定网口为eth0,范围192.168.2.0/24
# -r 范围:扫描指定范围而不是自动扫描
# /24/16/8,子网掩码 三个255是/24

被动模式

被动模式的方法更加隐蔽,但是速度会比较慢,网卡被设置为混杂模式来侦听网络内的arp数据包进行被动式探测,这种方式就需要网络内设备发送arp包才能被探测到。

1
2
3
4
┌──(root㉿kali)-[/home]
└─# netdiscover -p
# 参数:
# -p 被动模式:不发送任何东西,只有sniffnet

arp-scan

arp-scan是Kali Linux自带的一款ARP扫描工具。该工具可以进行单一目标扫描,也可以进行批量扫描。

同时,该工具会自动解析Mac地址,给出MAC对应的硬件厂商,帮助用户确认目标。

指令介绍

参数名 参数含义 使用示例
-f 从指定文件中读取主机名或地址 arp-scan -f ip.txt
-l 从网络接口配置生成地址 arp-scan -l
-i 各扫描之间的时间差 arp-scan -l -i 1000
-r 每个主机扫描次数 arp-scan -l -r 5
-V 显示程序版本并退出 arp-scan -l -V
-t 设置主机超时时间 arp-scan -t 1000 192.168.2.0/24
-I 使用网络接口 arp-scan -I eth0 -l
-g 不显示重复的数据 arp-scan -l -g
-D 显示数据包往返时间 arp-scan -l -D
1
2
3
4
5
6
7
8
9
10
11
┌──(root㉿kali)-[/home]
└─# arp-scan -l
Interface: eth0, type: EN10MB, MAC: 00:0c:29:3e:50:4d, IPv4: 192.168.2.106
Starting arp-scan 1.9.7 with 256 hosts (https://github.com/royhills/arp-scan)
192.168.2.1 2c:b2:1a:0c:d4:49 Phicomm (Shanghai) Co., Ltd.
192.168.2.104 84:14:4d:f7:61:b0 (Unknown)
192.168.2.180 2a:3e:a4:7a:f0:e6 (Unknown: locally administered)
192.168.2.201 96:89:f9:d7:d9:7b (Unknown: locally administered)

4 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.9.7: 256 hosts scanned in 1.920 seconds (133.33 hosts/sec). 4 responded

FPING

Fping就是ping命令的加强版他可以对一个IP段进行ping扫描,而ping命令本身是不可以对网段进行扫描的

1
2
3
4
5
6
7
8
9
10
┌──(root㉿kali)-[/home]
└─# fping -ag 192.168.2.0/24 > fping.txt

┌──(root㉿kali)-[/home]
└─# fping -ag 192.168.2.1 192.168.2.254 > fping.txt

# 参数说明:
-a 表示只显示存活主机
-g 表示对地址段进行扫描,如果不加可以对某个IP进行扫描
> fping.txt 表示将扫描的结果重定向到fping.txt ,原因是如果扫描一个网段的话输出结果是非常多的,我们输出重定向到文件中只会获得存活的主机信息。

Nmap

Nmap 是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称 fingerprinting)。它是网络管理员必用的软件之一,以及用以评估网络系统安全。它不局限于仅仅收集信息和枚举,同时可以用来作为一个漏洞探测器或安全扫描器。

特点

Nmap 对于网络检查的作用,应该相当于网址导航、搜索引擎的作用:入口。

  • 检测活在网络上的主机(主机发现)
  • 检测主机上开放的端口(端口发现或枚举)
  • 检测到相应的端口(服务发现)的软件和版本
  • 检测操作系统,硬件地址,以及软件版本
  • 检测脆弱性的漏洞(Nmap 的脚本)

Nmap 使用不同的技术来执行扫描,包括:TCP 的 connect 扫描,TCP 反向的 ident 扫描,FTP 反弹扫描等。所有这些扫描的类型有自己的优点和缺点。

目标探测

目标探测的目的主要有 2 个:

  • 判断是否存活
  • 获取端口的开放情况

-P* 选项(用于选择 ping 的类型)可以结合使用。可以通过使用不同的 TCP 端口/标志位和 ICMP 码来发送许多探测报文,增加穿透防火墙的机会。注意,即使指定了 -P* 选项,在局域网中,默认通过 ARP(-PR)来探测目标,因为它总是更快更有效。

  1. -sn 不进行端口扫描(Ping 扫描):此选项告诉 Nmap 在主机发现后不进行端口扫描,只打印出探测到的可用主机。
  2. -sP该选项告诉 Nmap 仅仅进行 ping 扫描(主机发现),然后打印出对扫描做出响应的那些主机。没有进一步的测试(如端口扫描或者操作系统探测)。相当于执行了 ping xxxx。当目标为整个局域网的时候,这个方法类似 ping 广播地址,但是它更可靠,因为许多主机对广播请求不响应。同 -sn
  3. -Pn:该选项完全跳过 Nmap 目标存活判断,即认为每个目标都是存活的。一般来说,Nmap 首先判断目标是否存活,如果存活再进行进一步的探测,如端口扫描、版本探测、或者操作系统探测等等。用 -P0 会使得 Nmap 对每一个目标都直接进行所要求的扫描。
  4. -PU: UDP ping,它发送一个空的(除非指定了 --data-length)UDP报文到给定的端口
  5. -PR :ARP Ping
  6. --system-dns:默认情况下,Nmap 通过直接发送查询到你的主机上配置的域名服务器来解析域名。为了提高性能会并发执行许多请求(一般几十个)。如果您希望使用系统自带的解析器,就指定该选项(原理是通过调用 getnameinfo() 函数,调用一次解析一个 IP)
1
2
3
# 1. nmap扫描局域网存活主机与主机名
nmap -sP 192.168.1.0/24
nmap -sP -PI -PT 192.168.1.0/24

端口扫描

状态 详细的参数说明
Open 端口开启,数据有到达主机,有程序在端口上监控
Closed 端口关闭,数据有到达主机,没有程序在端口上监控
Filtered 数据没有到达主机,返回的结果为空,数据被防火墙或者是IDS过滤
UnFiltered 数据有到达主机,但是不能识别端口的当前状态
Open|Filtered 端口没有返回值,主要发生在UDP、IP、FIN、NULL和Xmas扫描中
Closed|Filtered 只发生在IP ID idle扫描
  1. --script= 表示启用脚本扫描。具体而言,它会使用 defaultsafe 脚本组合,用于对目标进行扫描和信息收集。

    1. auth 处理身份验证
    2. broadcast 网络广播
    3. brute 暴力猜解
    4. default 默认
    5. discovery 服务发现
    6. dos 拒绝服务
    7. exploit漏洞利用
    8. external 外部扩展
    9. fuzzer 模糊测试
    10. intrusive 扫描可能造成不良后果
    11. malware 检测后门
    12. safe 扫描危害较小
    13. version 版本识别
    14. vuln 漏洞检测
  2. -sS TCP SYN 扫描执行得很快

  3. -sT TCP connect() 扫描:当 SYN 扫描不能用,例如当用户没有权限发送原始报文或者扫描 IPv6 网络时,TCP 扫描默认使用 TCP Connect() 扫描

  4. -sU: UDP 扫描

  5. -P <port ranges> 只扫描指定的端口:该选项指明你想扫描的端口,覆盖默认值。单个端口加上连字符表示端口范围(如 1-1023)也可以。

  6. -p-:全端口扫描

服务和版本探测

  1. -sV: 打开版本探测。也可以用-A同时打开操作系统探测和版本探测。
  2. --allports 不排除端口:默认情况下,Nmap 版本探测会跳过 TCP 端口 9100

操作系统探测

  1. -O 启用操作系统检测.也可以使用-A来同时启用操作系统检测和版本检测

输出

  1. -oN <filespec>:要求将标准输出直接写入指定的文件。如上所述,这个格式与交互式输出略有不同。
  2. -oX <filespec>:要求 XML 输出直接写入指定的文件
  3. -oA <basename>: 输出至所有格式
  4. --append-output: 在输出文件中添加:当使用文件作为输出格式,如-oX-oN,默认该文件被覆盖。如果希望文件保留现有内容,将结果添加在现有文件后面,就使用--append-output选项。所有指定的输出文件都被添加。但对于XML-oX)扫描输出文件无效,无法正常解析,需要手工修改

激进扫描模式

-A:这个选项启用额外的高级和高强度选项,目前还未确定代表 的内容。目前,这个选项启用了操作系统检测(-O)和版本扫描(-sV),以后会增加更多的功能。目的是启用一个全面的扫描选项集合,不需要用户记忆大量的选项。这个选项仅仅启用功能,不包含用于可能所需要的时间选项(如 -T4)或细节选项(-v

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# nmap 扫描ip所开放的端口
nmap -sT -sV -Pn -v 192.168.1.12 -p-
# 参数:
# -p- 表示全端口 计算机共有端口65535个
# -sT 表示扫描用的是Tcp扫描
# -sV 表示显示服务版本号
# -Pn 应当表示被扫描的机器与你本机的三次握手
# -v 表示详细信息
nmap -p80 [域名] 对某个端口进行探测
nmap -p80,135 [域名] 对某几个端口进行探测
nmap -p1-100 [域名] 对某个端口范围进行探测
nmap -p- [域名] 对所有端口范围进行探测
nmap -p T:25,U:53 [域名] 指定协议探测端口
nmap -p smtp [域名] 通过协议名来扫描端口
nmap -p s* [域名] 通过名称范围扫描
nmap -p [1-65535] [域名] 扫描注册在nmap中的端口

使用nmap进行半连接扫描

nmap扫描类型主要有TCP的全连接扫描(会在被扫描机器留下记录),半连接扫描(不会留下记录)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
┌──(root㉿kali)-[/home]
└─# nmap -sS 154.40.42.101 -p80,443,9090,8080
Starting Nmap 7.92 ( https://nmap.org ) at 2023-04-05 13:49 CST
Nmap scan report for 154.40.42.101
Host is up (0.19s latency).

PORT STATE SERVICE
80/tcp open http
443/tcp filtered https
8080/tcp open http-proxy
9090/tcp open zeus-admin

Nmap done: 1 IP address (1 host up) scanned in 1.48 seconds

# 参数:
# -sS 表示使用SYN进行半连接扫描

masscan

masscan是为了尽可能快速的扫描整个互联网而创建的,根据其作者robert graham描述
可以不到6分钟内完成每秒大约1000万个数据包

基本使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 单端口扫描
masscan 10.10.10.0/24 -p443

# 多端口扫描
masscan 10.10.10.0/24 -p80,443

# 扫描一系列端口
masscan 10.10.10.0/24 -p22-25

# 快速扫描
# 默认情况下,masscan扫描的速度为每秒100个数据包,为了增加这一点,只需提供该-rate选项并指定一个值
masscan 10.10.10.0/24 --top-ports 100 --rate 100000

# 排除目标
# 为了更好的,愉快的玩耍,必要时要对扫描目标进行排除
masscan 10.10.10.0/24 --top-ports 100 --excludefile exclude.txt

# 保存扫描结果
# 可以使用标准的unix重定向器将扫描结果输入到一个文件中
masscan 10.10.10.0/24 --top-ports 100 > result.txt

# 支持的输出格式
# -oX filename : 将扫描结果保存到xml格式的文件中
# -oG filename : 将扫描结果保存到grepable格式的文件中
# -oJ filename : 将扫描结果保存到json格式的文件中


# 获取Banner
masscan 10.10.10.0/24 -p80 --banners --source-ip x.x.x.x
# 扫描10.10.10.x网段80端口的开放信息,并且获取banner信息 –source-ip 是指定源IP,这个ip必须指定独立有效的IP地址。

命令行模式详细参数

以下为扩展内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<ip/range> IP地址范围,有三种有效格式,1、单独的IPv4地址 2、类似"10.0.0.1-10.0.0.233"的范围地址 3、CIDR地址 类似于"0.0.0.0/0",多个目标可以用都好隔开
-p <ports,--ports <ports>> 指定端口进行扫描
--banners 获取banner信息,支持少量的协议
--rate <packets-per-second> 指定发包的速率
-c <filename>, --conf <filename> 读取配置文件进行扫描
--echo 将当前的配置重定向到一个配置文件中
-e <ifname> , --adapter <ifname> 指定用来发包的网卡接口名称
--adapter-ip <ip-address> 指定发包的IP地址
--adapter-port <port> 指定发包的源端口
--adapter-mac <mac-address> 指定发包的源MAC地址
--router-mac <mac address> 指定网关的MAC地址
--exclude <ip/range> IP地址范围黑名单,防止masscan扫描
--excludefile <filename> 指定IP地址范围黑名单文件
--includefile,-iL <filename> 读取一个范围列表进行扫描
--ping 扫描应该包含ICMP回应请求
--append-output 以附加的形式输出到文件
--iflist 列出可用的网络接口,然后退出
--retries 发送重试的次数,以1秒为间隔
--nmap 打印与nmap兼容的相关信息
--http-user-agent <user-agent> 设置user-agent字段的值
--show [open,close] 告诉要显示的端口状态,默认是显示开放端口
--noshow [open,close] 禁用端口状态显示
--pcap <filename> 将接收到的数据包以libpcap格式存储
--regress 运行回归测试,测试扫描器是否正常运行
--ttl <num> 指定传出数据包的TTL值,默认为255
--wait <seconds> 指定发送完包之后的等待时间,默认为10秒
--offline 没有实际的发包,主要用来测试开销
-sL 不执行扫描,主要是生成一个随机地址列表
--readscan <binary-files> 读取从-oB生成的二进制文件,可以转化为XML或者JSON格式.
--connection-timeout <secs> 抓取banners时指定保持TCP连接的最大秒数,默认是30秒。

nc

nc是netcat的简写,有着网络界的瑞士军刀美誉。因为它短小精悍、功能实用,被设计为一个简单、可靠的网络工具

作用

  1. 实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口
  2. 端口的扫描,nc可以作为client发起TCP或UDP连接
  3. 机器之间传输文件
  4. 机器之间网络测速

参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# -n   直接使用IP地址,而不通过域名服务器
# -v 显示指令执行过程
# -w 表示超时时间
# -z 表示使用输入/输出模式,只在扫描通信端口时使用

┌──(root㉿kali)-[/home]
└─# nc -nv -w 1 -z 154.40.42.101 80-90
(UNKNOWN) [154.40.42.101] 90 (?) : No route to host
(UNKNOWN) [154.40.42.101] 89 (?) : Connection timed out
(UNKNOWN) [154.40.42.101] 88 (kerberos) : No route to host
(UNKNOWN) [154.40.42.101] 87 (?) : No route to host
(UNKNOWN) [154.40.42.101] 86 (?) : Connection timed out
(UNKNOWN) [154.40.42.101] 85 (?) : No route to host
(UNKNOWN) [154.40.42.101] 84 (?) : Connection timed out
(UNKNOWN) [154.40.42.101] 83 (?) : No route to host
(UNKNOWN) [154.40.42.101] 82 (?) : Connection timed out
(UNKNOWN) [154.40.42.101] 81 (?) : No route to host
(UNKNOWN) [154.40.42.101] 80 (http) open

wafw00f

Web应用防护系统(也称为:网站应用级入侵防御系统)。英文:Web Application Firewall,简称: WAF)。利用国际上公认的一种说法:Web应用防火墙是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品。

在KaliLinux中提供了一款防火墙探测工具“wafw00f”,这个工具可以通过发送正常以及不正常甚至是包含恶意代码的HTTP请求,来探测网站是否存在防火墙,并识别该防火墙的厂商及类型。

wafw00f常用指令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
┌──(root㉿kali)-[/opt/TOP10]
└─# wafw00f -h
Usage: wafw00f url1 [url2 [url3 ... ]]
example: wafw00f http://www.victim.org/

用法:wafw00f url1 [url2 [url3 ... ]]
示例:wafw00f http://www.victim.org/

选项:
-h, --help 显示帮助信息并退出
-v, --verbose 启用详细模式,多个-v选项增加详细程度
-a, --findall 查找与签名匹配的所有WAF,不在第一个匹配上停止测试
-r, --noredirect 不跟随3xx响应的重定向
-t TEST, --test=TEST 测试特定的WAF
-o OUTPUT, --output=OUTPUT
将输出写入csv、json或文本文件中,具体格式取决于文件扩展名。对于标准输出,请指定-作为文件名。
-f FORMAT, --format=FORMAT
强制输出格式为csv、json或文本。
-i INPUT, --input-file=INPUT
从文件中读取目标。输入格式可以是csv、json或文本。对于csv和json,需要一个“url”列名或元素。
-l, --list 列出WAFW00F能够检测到的所有WAF
-p PROXY, --proxy=PROXY
使用HTTP代理执行请求,例如:http://hostname:8080,socks5://hostname:1080,http://user:pass@hostname:8080
-V, --version 打印当前版本的WafW00f并退出。
-H HEADERS, --headers=HEADERS 通过文本文件传递自定义标头,以覆盖默认的标头设置。

测试单个 URL

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
┌──(root㉿kali)-[/opt/TOP10]
└─# wafw00f https://icp.chinaz.com/

______
/ \
( Woof! )
\ ____/ )
,, ) (_
.-. - _______ ( |__|
()``; |==|_______) .)|__|
/ (' /|\ ( |__|
( / ) / | \ . |__|
\(_)_)) / | \ |__|

~ WAFW00F : v2.2.0 ~
The Web Application Firewall Fingerprinting Toolkit

[*] Checking https://icp.chinaz.com/
[+] Generic Detection results:
[-] No WAF detected by the generic detection
[~] Number of requests: 7

常见的waf拦截页面(83个国内外WAF)

enum4linux

enum4linux介绍

Enum4linux是一个用于枚举来自Windows和Samba系统的信息的工具。

它是用Perl编写的,基本上是一个包装Samba工具smbclient,rpclient,net和nmblookup。

工具的用法可以在下面找到例子,以前版本的工具可以在页面底部找到。

dnstracer用于获取给定主机名从给定域名服务器(DNS)的信息,并跟随DNS服务器链得到权威结果。

主要特性:

  1. RID循环(当Windows 2000上的RestrictAnonymous设置为1时)
  2. 用户列表(当Windows 2000上的RestrictAnonymous设置为0时)
  3. 组成员信息列表
  4. 共享枚举
  5. 检测主机是否在工作组或域中
  6. 识别远程操作系统
  7. 密码策略检索(使用polenum)

enum4linux功能

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
┌──(root㉿kali)-[/opt/TOP10]
└─# enum4linux -h
enum4linux v0.9.1 (http://labs.portcullis.co.uk/application/enum4linux/)
Copyright (C) 2011 Mark Lowe (mrl@portcullis-security.com)

简单的封装了在samba包中的工具,以提供类似的enum.exe功能(以前从www.bindview.com)。 为了方便起见,还增加了一些附加功能,例如RID循环。
用法: ./enum4linux.pl [选项] ip地址
枚举选项:
-U 获取用户列表
-M 获取机器列表*
-S 获取共享列表
-P 获取密码策略信息
-G 获取组和成员列表
-d 详述适用于-U和-S
-u user 用户指定要使用的用户名(默认""
-p pass 指定要使用的密码(默认为""
以下选项是enum.exe未实现的: -L, -N, -D, -f
其他选项:
-a 做所有简单枚举(-U -S -G -P -r -o -n -i),如果您没有提供任何其他选项,则启用此选项
-h 显示此帮助消息并退出
-r 通过RID循环枚举用户
-R range RID范围要枚举(默认值:500-550,1000-1050,隐含-r)
-K n 继续搜索RID,直到n个连续的RID与用户名不对应,Impies RID范围结束于999999.对DC有用
-l 通过LDAP 389 / TCP获取一些(有限的)信息(仅适用于DN)
-s 文件暴力猜测共享名称
-k user 远程系统上存在的用户(默认值:administrator,guest,krbtgt,domain admins,root,bin,none)
用于获取sid与“lookupsid known_username”
使用逗号尝试几个用户:“-k admin,user1,user2”
-o 获取操作系统信息
-i 获取打印机信息
-w wrkg 手动指定工作组(通常自动找到)
-n 做一个nmblookup(类似于nbtstat)
-v 详细输出,显示正在运行的完整命令(net,rpcclient等)
RID循环应从Windows(或Samba)主机中提取一个用户列表,其中限制匿名设置为1(Windows NT和2000)或启用“网络访问:允许匿名SID /名称转换”(XP,2003)。
注意:Samba服务器通常似乎有RID在范围3000-3050。
依赖性信息:您将需要安装samba包,因为此脚本基本上只是一个包装rpcclient,net,nmblookup和smbclient。 Polenum从http://labs.portcullis.co.uk/application/polenum/需要获取密码政策信息。

enum4linux用法示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
┌──(root㉿kali)-[/home/]
└─$ enum4linux -A 10.10.10.9
Starting enum4linux v0.9.1 ( http://labs.portcullis.co.uk/application/enum4linux/ ) on Fri Aug 4 20:29:56 2023

=========================================( Target Information )=========================================

Target ........... 10.10.10.9
RID Range ........ 500-550,1000-1050
Username ......... ''
Password ......... ''
Known Usernames .. administrator, guest, krbtgt, domain admins, root, bin, none


=============================( Enumerating Workgroup/Domain on 10.10.10.9 )=============================


[+] Got domain/workgroup name: MYGROUP


====================================( Session Check on 10.10.10.9 )====================================


[+] Server 10.10.10.9 allows sessions using username '', password ''


=================================( Getting domain SID for 10.10.10.9 )=================================

Domain Name: MYGROUP
Domain Sid: (NULL SID)

[+] Can't determine if host is part of domain or part of a workgroup

enum4linux complete on Fri Aug 4 20:29:56 2023

CTF-Show WP