信息收集是渗透测试的灵魂,它是为了获取目标系统的信息,包括网络拓扑、系统架构、开放端口、服务等,为后续攻击做好准备。以下是常见的信息收集方式和方法:

域名查询

基础信息查询

基础信息包括目标公司名称、地址、主页、业务领域、关键人员姓名、联系方式等。 一般通过公司名称可以直接查询到官网,得到一个域名信息,再通过天眼查、企查查等方式查询到关键人员姓名、联系方式等相关信息,还可以进行企业关系查询,以关联公司、股东作为突破口。 根据目标公司公开发布的资料,如年报、社交媒体信息等,可以更好地了解目标公司的业务范围、发展方向等,业务范围通常意味着这个网站的安全等级,政府、国家机关类的网站不要做任何尝试!工业、制造业公司防护能力相对较弱,更容易渗透,互联网大厂安全级别较高,渗透难度大。 此外,利用邮箱采集工具,可以获取目标公司的员工邮箱地址,进而进行钓鱼攻击,还可以利用脉脉、领英等同事圈子收集目标公司的员工邮箱信息,有针对性地对某个职位、部门进行钓鱼。

备案查询

备案号是网站是否合法注册经营的标志,可随时到国家工业和信息化部网站备案系统上查询该ICP备案的相关详细信息。通过主域名可以查询到主办单位名称,接着通过主办单位名称可以查询到该单位注册过的所有域名,主域名难以突破的情况下,可以尝试通过其他域名进行突破。

Whois查询

通过 Whois 信息查询工具,可以获取目标域名的注册信息,包括域名注册人、联系电话、邮箱等。 Whois 查询通常查到的是高层的联系方式,这类人员权限高但安全意识相对较低,是很好的钓鱼人选。 一个企业/个人注册的多个域名通常具有一定的相关性,例如使用了同一个邮箱来注册、使用了同一个备案、同一个负责人来注册等,可以使用这种方式来查找关联的域名。一般操作步骤如下:

  • 查询域名注册邮箱
  • 通过域名查询备案号
  • 通过备案号查询域名
  • 反查注册邮箱
  • 反查注册人
  • 通过注册人查询到的域名在查询邮箱
  • 通过上一步邮箱去查询域名
  • 查询以上获取出的域名的子域名

在线查询 https://whois.chinaz.com/ https://whois.aizhan.com/ https://www.whois.com/

工具查询 SamsSpde SuperScan NetScan Tools Pro

邮箱信息

获取邮箱信息后,除了可以进行钓鱼工具,还可以搜集目标 IP 地址。 邮件回复的时候会记录 IP 地址。所以攻击者要想获取对方的 IP 地址,可以通过发送邮件的方式,让对方回复。 可以插入网络图片的方式获取对方 IP 地址。搭建一个 http 服务器,放一张图片,然后通过网络图片的方式发送给对方。当对方打开邮件的时候,就相当于浏览了网页的一张图片,http 服务器的日志会记录下这个 IP 地址。

DNS 信息

DNS 信息是很重要的,通过查询 DNS 信息可以获取目标系统的 IP 地址,以及可能存在的子域名信息。

python -m http.server

DNS 解析记录

域名解析就是域名到 IP 地址的转换过程,域名的解析工作由 DNS 服务器完成。由 DNS 构建起的域名与 IP 地址之间的对应关系,称之为 DNS 记录。通过设置不同的解析记录,可以实现对主机名不同的解析效果,从而满足不同场景下的域名解析需求。 需要根据不同场景设置不同的解析记录。常见的资源记录类型有 A、CNAME、MX、NS、AAAA、CAA、 TXT 等。

  • A 记录

    • A 记录即 address,地址记录,用来指定域名的 IPv4 地址(如:8.8.8.8),如果需要将域名(FQDN)指向一个 IP 地址,就需要添加 A 记录。
  • AAAA 记录

    • AAAA 记录即 address,地址记录,用来指定主机名(或域名)对应的 IPv6 地址(例如:aa51::c3)记录。解析到 IPv6 的地址。
  • CAA 记录

    • CAA 记录即 CA 证书颁发机构授权校验。CAA 记录可以控制单域名 SSL 证书的发行,也可以控制通配符证书。当域名存在CAA 记录时,则只允许在记录中列出的CA颁发针对该域名(或子域名)的证书。
  • CNAME 记录

    • CNAME记录即Canonical name,别名记录,如果需要将域名指向另一个域名,再由另一个域名提供IP 地址,就需要添加CNAME记录。
  • MX 记录

    • MX 记录即Mail Exchanger,邮件交换器,用于标明域内邮件服务器的地址的记录。如果需要设置邮箱, 让邮箱能收到邮件,就需要添加MX记录。
  • NS 记录

    • NS 记录即 Name Server,域名服务器记录,如果需要把子域名交给其他 DNS 服务商解析,就需要添加 NS 记录。
  • SPF 记录

    • SPF (Sender Policy Framework) 是为了防止垃圾邮件而提出来的一种 DNS 记录类型,是一种 TXT 类型的 记录,用于登记某个域名拥有的用来外发邮件的所有 IP 地址。通过 SPF 记录可以获取相关的 IP 信息,常用命令为 dig example.com txt 。
  • SOA 记录

    • SOA 记录,授权开始记录,记录 DNS 服务器更新以及过期时间的信息。可以简单的认为,NS 记录是 SOA 记录的子集。
  • PTR 记录

    • 反向记录(从IP地址解释域名)
  • TXT 记录

    • TXT 记录,一般指某个主机名或域名的标识和说明。通过设置 TXT 记录内容可以使别人更方便地联系到 你。TXT 记录常用的方式还有做 SPF 记录(反垃圾邮件)和 SSL 证书的域名所有权验证。

查询工具

在线查询

https://www.racent.com/dns-check

nslookup nslookup命令用于查询DNS记录,诊断和排除DNS故障。Nslookup命令有两种工作方式,即交互式和 非交互式。非交互式执行完命令后,则返回至cmd命令符下,合适查询单个数据,如果需要查询多个数 据,则可使用交互式。方法很简单,直接输入nslookup命令即可。通常情况下,我们习惯采用非交互式 nslookup命令, windows支持大小写兼容,Linux不支持大写,命令的格式如下:

nslookup –qt=类型 目标域名、IP地址(默认查询类型是A记录)

dig dig(domain information group)是常用的域名查询工具,可以从 DNS 域名服务器查询主机地址信息,获取到详细的域名信息。这个命令是 Bind 的一部分,本身并没有在 Windows系 统中集成,所以如果们想要使用该命令就需要先下载相应的软件包。

apt-get install dnsutils 
或 
yum install bind-utils

Windows 下安装 dig 命令比较繁琐一点,需要先下载 Bind,再添加环境变量。 dig命令的格式如下:

dig 目标域名(默认查询类型是A记录)

子域名收集

子域名收集的原因

  • 子域名收集可以显示很多域名或者子域名,它们在安全评估的范围内,从而增加了发现漏洞的机会。
  • 有些在运行的但是被隐藏的、被忽略的子域上运行的应用程序可能帮助我们发现关键的漏洞。
  • 通常情况下,同一组织的不同域名或应用程序会出现相同的漏洞。
  • 在渗透中我们通常需要通过信息收集手段来了解目标的一些情况,一般而言网站主页的安全比较被重视,同理也就更难有漏洞让我们攻击,这时我们就需要利用子域名收集。
  • 收集子域名,对于旁站、CDN 找出真实 IP 地址、目录信息都有一定的帮助

子域名查询方式

绝大多数公司的域名都用了 Https 协议,TLS 证书里面一般包含域名信息,公司组织名称等,子域名也是同样的情况。证书和子域名信息都可以通过威胁情报平台查询到,如微步社区等。

image-20240531102836190

image-20240531102840628 通过爬取网站,可以找到和其相关的子域名信息,搜索引擎也会记录域名信息, 可以使用 site: domain 的语法来查询。
除此之外,最好用也是最广泛的子域名收集方式就是使用工具查询了,下面是子域名查询工具: 在线查询:

https://dnsdumpster.com/ 
https://www.virustotal.com/gui/home/upload 
https://site.ip138.com/ 
https://tool.chinaz.com/subdomain/ 
http://www.dnsscan.cn/

工具查询:

https://github.com/OWASP/Amass 
https://github.com/code-scan/BroDomain 
https://github.com/ring04h/wydomain 
https://github.com/FeeiCN/ESD 
https://github.com/blark/aiodnsbrute
https://github.com/projectdiscovery/subfinder (推荐) 
https://github.com/lijiejie/subDomainsBrute (推荐) 
https://github.com/shmilylty/OneForAll (推荐) 
https://github.com/projectdiscovery/subfinder (推荐) 
https://github.com/euphrat1ca/LayerDomainFinder (推荐)

旁站和 C 段

旁站

旁站指的是同一服务器下的其他网站,可以作为攻击路径上的突破点,如果可以突破旁站,就能获取大量的有效信息,甚至可以上传 shell、提权,通过爬虫工具扫描、DNS 解析记录得到关联的旁站。 在线查询:

https://www.webscan.cc/
https://viewdns.info/reverseip/
https://reverseip.domaintools.com/

C 段

一个 IP 地址的 C 段表示该 IP 所在的网络/子网,例如,192.168.1.1 中的 C 段为 1,表示该 IP 地址属于 192.168.1.x 的网络。

C 段扫描原因

  1. 收集 C 段内部属于目标的 IP 地址
  2. 内部服务只限 IP 访问,没有映射域名
  3. 更多的探测主机目标资产

C 段扫描方法

在线查询

https://c.webscan.cc/

Nmap

(1)作用:快速扫描大型网络;可以获得主机运行的端口,服务,系统指纹;提供上百个扩展脚本。

(2)扫描C段主机存活

Nmap -sn -PE -n 192.168.1.1/24 -oX out.xml
-sn 不扫描端口
-PE ICMP 扫描
-n 不进行 dns 解析
-oX 输出结果

(3)定向端口扫描

Nmap -sS -Pn -p 3389 ip
-sS 半开放扫描
-Pn 不进行主机存活探测

(4)全端口扫描

Nmap -sS -Pn -p 1-65535 -n ip
半开放扫描

(5)服务扫描

Nmap -ss -sV -p 1-65535 -n ip
扫描方式:半开放扫描;
显示出端口开放的服务。

Masscan

(1)Masscan号称是最快的互联网端口扫描器,最快可以在六分钟内扫遍互联网,每秒传输1000万个数据包。允许任意地址范围和端口范围。 (2)masscan -p 80 ip/24 --rate 10000 -oL output.txt -p设置端口 --rate 发包速率 -oL输出位置 (3)为了绕过扫描特定ip,可以添加--excludefile masscan -p 80 ip/24 --excludefile special.txt (4)自定多种格式输出 -oX输出xml -oJ输出json格式 -oL输出简单列表 (5)下载工具,并进行编译。

CDN

CDN 的全称是 Content Delivery Network,即内容分发网络。CDN 是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。但在安全测试过程中,若目标存在 CDN 服务,将会影响到后续的安全测试过程。

判断 CDN

可以直接通过威胁情报平台查询是否为 CDN 地址。通常我们会使用在线工具查询

http://ping.chinaz.com/ 
https://asm.ca.com/en/ping.php 
http://ping.aizhan.com/ 
http://ce.cloud.360.cn/

还可以使用 nslookup 命令解析域名查看返回 IP, 若返回域名解析结果为多个 IP,多半使用了 CDN,是不真实的 IP

绕过 CDN

子域名查询

因为有些主站是做了 CDN 服务而子站是没有做 CDN 服务,所以可以通过子域名查询有可能会查看主域名所在的真实 IP。

邮件服务查询

因为邮箱大部分都是内部人在访问、而且访问的量也不是很大,一般是没有做 CDN。可在邮件源码里面就会包含服务器的真实 IP。

国外地址请求

通过国外得一些冷门得 DNS 或 IP 去请求目标,很多时候国内得 CDN 对国外得覆盖面并不是很广,故此可以利用此特点进行探测。 通过国外代理访问就能查看真实 IP了,或者通过国外的 DNS 解析,可能就能得到真实的 IP 查询网站

遗留文件

phpinfo 敏感信息当中的 SERVER_NAME 字段中包含服务器 IP 地址、网页源代码泄露等。

利用网站漏洞

如果网站存在漏洞,我们可以让服务器主动给我们发起请求,这样也可以得到目标的真实 IP。

暗黑搜索引擎

fofa、shodan、ZoomEye、censys 等暗黑搜索引擎,通过这些公开的安全搜索引擎爬取得历史快照,主要得一些特征:特有的http 头部(如 server 类型、版本、cookie 等信息)、特定 keyword(如 title、css、js、url 等)、特定的 IP 段搜索(如 fofa 支持C段搜索),有些时候爬取的时候不一定含有上面那些特征,但是我们仍然需要仔细排查。

利用 DNS

查询 IP 与域名绑定历史记录,可能会发现使用 CDN 之前的目标 IP

https://tools.ipip.net/cdn.php

端口

端口跟服务有密不可分的关系,在 Internet 上,各主机间通过 TCP/IP 协议发送和接受数据包,各个数据包根据其目的主机的 IP 地址来进行互联网中的路由器选择,从而顺利地将数据包顺利的传送给目标主机。

查看端口:netstat -ano

常见端口及和服务

端口号 服务 攻击方法
21/22/69 ftp/tftp文件传输协议 爆破嗅探、溢出;后门
22 ssh远程连接 爆破 OpenSSH;28个退格
23 telnet远程连接 爆破嗅探
25 smtp邮件服务 邮件伪造
53 DNS域名系统 DNS区域传输、DNS劫持、DNS缓存投毒、DNS欺骗

深度利用:利用DNS隧道技术刺透防火墙 | | 67/68 | dhcp | 劫持欺骗 | | 110 | pop3 | 爆破 | | 139 | samba | 爆破未授权访问远程代码执行 | | 143 | imap | 爆破 | | 161 | snmp | 爆破 | | 389 | ldap | 注入攻击未授权访问 | | 512/513/514 | linux | 直接使用 rlogin | | 873 | rsync | 未授权访问 | | 1080 | socket | 爆破:进行内网渗透 | | 1352 | lotus | 爆破:弱口令信息泄漏:源代码 | | 1433 | mssql | 爆破:使用系统用户登录注入攻击 | | 1521 | oracle | 爆破:TNS注入攻击 | | 2049 | nfs | 配置不当 | | 2181 | zookeeper | 未授权访问 | | 3306 | mysql | 爆破拒绝服务注入 | | 3389 | rdp | 爆破 Shift 后门 | | 4848 | glassfish | 爆破:控制台弱口令认证绕过 | | 5000 | sybase/DB2 | 爆破注入 | | 5432 | postgresql | 缓冲区溢出注入攻击 爆破:弱口 | | 5632 | pcanywhere | 拒绝服务代码执行 | | 5900 | vnc | 爆破:弱口令认证绕过 | | 6379 | redis | 未授权访问爆破:弱口令 | | 7001 | weblogic | Java 反序列化控制台弱口令 控制台部署 webshell | | 8069 | zabbix | 远程命令执行 | | 8080-8090 | web | 常见 web 攻击控制台爆破对应服务器版本漏洞 | | 9090 | websphere控制台 | 爆破:控制台弱口令 Java 反序列 | | 9200/9300 | elasticsearch | 远程代码执行 | | 11211 | memcacache | 未授权访问 | | 27017 | mongodb | 爆破未授权访问 |

端口扫描

当确定了目标大概的 ip 段后,可以先对 ip 的开放端口进行探测,一些特定服务可能开起在默认端口上,探测开放端口有利于快速收集目标资产,找到目标网站的其他功能站点。

msscan 端口扫描

msscan -p 1-65535 ip --rate=1000

下载地址:https://gitee.com/youshusoft/GoScanner/

御剑端口扫描

image-20240531102851784

nmap 端口扫描

常用参数,如:

nmap -sV 192.168.0.2
nmap -sT 92.168.0.2
nmap -Pn -A -sC 192.168.0.2
nmap -sU -sT -p0-65535 192.168.122.1

用于扫描目标主机服务版本号与开放的端口 如果需要扫描多个 ip 或 ip 段,可以将他们保存到一个 txt 文件中

nmap -iL ip.txt

来扫描列表中所有的 ip。 Nmap 为端口探测最常用的方法,操作方便,输出结果非常直观。

在线端口检测

http://coolaf.com/tool/port

Nmap

nmap 语法

nmap [Scan Type(s)] [Options] {target specification}

目标说明

nmap 192.168.1.1 扫描一个IP 
nmap 192.168.1.1 192.168.2.1 扫描多个IP 
nmap 192.168.1.1-254 扫描一个范围 
nmap nmap.org 扫描一个域名 
nmap 192.168.1.0/24 使用CIDR表示法扫描 
nmap -iL target.txt 扫描文件中的目标 
nmap -iR 100 扫描100个随机主机 
nmap --exclude 192.168.1.1 排除列出的主机

扫描手法

nmap 192.168.1.1 -sS TCP SYN 端口扫描(有root权限默认)
nmap 192.168.1.1 -sT TCP 连接端口扫描(没有root权限默认)
nmap 192.168.1.1 -sU UDP 端口扫描
nmap 192.168.1.1 -sA TCP ACK 端口扫描
nmap 192.168.1.1 -sW 滑动窗口扫描
nmap 192.168.1.1 -sM TCP Maimon 扫描

主机发现

nmap 192.168.1.1-3 -sL 不扫描,仅列出目标
nmap 192.168.1.1/24 -sn 禁用端口扫描
nmap 192.168.1.1-5 -Pn 跳过主机发现,直接扫描端口
nmap 192.168.1.1-5 -PS22-25,80 端口X上的TCP SYN发现,默认80
nmap 192.168.1.1-5 -PA22-25,80 端口X上的TCP ACK发现,默认80
nmap 192.168.1.1-5 -PU53 端口X上的UDP发现,默认40125
nmap 192.168.1.1/24 -PR 本地网络上的ARP发现
nmap 192.168.1.1 -n 不做DNS解析
nmap 192.168.1.1 -O 操作系统类型

端口规格

nmap 192.168.1.1 -p 21 扫描特定端口
nmap 192.168.1.1 -p 21-100 扫描端口范围
nmap 192.168.1.1 -p U:53,T:21-25,80 扫描多个TCP和UDP端口
nmap 192.168.1.1 -p- 扫描所有端口
nmap 192.168.1.1 -p http,https 基于服务名称的端口扫描
nmap 192.168.1.1 -F 快速扫描(100个端口)
nmap 192.168.1.1 --top-ports 2000 扫描前2000个端口
nmap 192.168.1.1 -p-65535 从端口1开始扫描

时间和性能

nmap 192.168.1.1 -T0 妄想症,非常非常慢,用于IDS逃逸
nmap 192.168.1.1 -T1 猥琐的,相当慢,用于IDS逃逸
nmap 192.168.1.1 -T2 礼貌的,降低速度以消耗更小的带宽,比默认慢十倍
nmap 192.168.1.1 -T3 正常的,默认,根据目标的反应自动调整时间模式
nmap 192.168.1.1 -T4 野蛮的,在一个很好的网络环境,请求可能会淹没目标
nmap 192.168.1.1 -T5 疯狂的,很可能会淹没目标端口或是漏掉一些开放端口

扫描脚本

nmap 192.168.1.1 -sC 使用默认的NSE脚本进行扫描
nmap 192.168.1.1 --script=banner 使用单个脚本扫描,banner示例
nmap 192.168.1.1 --script=http,banner 使用两个脚本扫描,示例http,banner
nmap 192.168.1.1 --script=http* 使用通配符扫描,http示例
nmap 192.168.1.1 --script "not intrusive" 扫描默认值,删除侵入性脚本
nmap 192.168.1.1 --script=smb-vuln* 扫描所有smb漏洞
nmap 192.168.1.1 --script=vuln 扫描常见漏洞

输出

nmap 192.168.1.1 -v 增加详细程度,-vv效果更好
nmap 192.168.1.1 -oN test.txt 标准输出写入到指定文件中
nmap 192.168.1.1 -oX test.xml 将输入写成xml的形式
nmap 192.168.1.1 -oG grep.txt 将输出写成特殊格式
nmap 192.168.1.1 -oA results 将输出所有格式,有三种 .xml/.gnmap/.nmap
nmap 192.168.1.1 --open 仅显示开放的端口
nmap 192.168.1.1 -T4 --packet-trace 显示所有发送和接收的数据包
nmap --resume test.txt 恢复扫描,配合-oG等命令使用

服务和版本检测

尝试确定端口上运行的服务的版本
nmap 192.168.1.1 -sV
强度级别0到9,数字越大,正确性越强,默认值为7
nmap 192.168.1.1 -sV --version-intensity 8
轻量级版本扫描,使扫描进程加快,但它识别服务的正确率降低
nmap 192.168.1.1 -sV --version-light
version-all相当于version-intensity的最高级别9,保证对每个端口尝试每个探测报文
nmap 192.168.1.1 -sV --version-all
启用操作系统检测,版本检测,脚本扫描和跟踪路由...
nmap 192.168.1.1 -A
使用TCP/IP进行远程OS指纹识别
nmap 192.168.1.1 -O
当Nmap无法确定所检测的操作系统时,会尽可能地提供最相近的匹配
nmap 192.168.1.1 -O --osscan-guess

防火墙/IDS 规避和欺骗 报文分段,请求的扫描(包括ping扫描)使用微小的碎片IP数据包, 包过滤器检测更难

nmap 192.168.1.1 -f

利用数据包分片技术,某些防火墙为了加快处理速度而不会进行重组处理,这样从而逃脱防火墙或闯入检测系统的检测,注意:mtu 的值必须是 8 的倍数(如 8,16,24,32 等)

nmap 192.168.1.1 --mtu 32

使用 -D 选项就可以达到 IP 欺骗的目的,可以指定多个 IP 或者使用 RND 随机生成几个 IP 地址

nmap -D [decoy1,decoy2…|RND:number] [目标]
nmap -D 10.1.1.1,20.2.2.2 192.168.1.1
nmap -D RND:11 192.168.1.1

源地址欺骗,从 Microso 扫描 Facebook

nmap -S www.microso.com www.facebook.com

指定源主机端口,来手动设定用来扫描的端口,常用的如 20、53、67 端口

nmap -g 53 192.168.1.1

通过 HTTP/SOCKS4 代理中继连接

nmap --proxies http://191.1.1.1:1080,http://192.2.2.2:1080 192.168.1.1

添加垃圾数据,通过在发送的数据包末尾添加随机的垃圾数据,以达到混淆视听的作效果,200 是垃圾数据长度

nmap --data-length 200 192.168.1.1

伪装MAC地址,可以手动指定MAC地址的值。或者为了简单起见,可以填写数字0,这将生成一个随机的MAC地址

nmap --spoof-mac 0 192.168.1.1

伪造检验值,这将使用伪造的 TCP/UDP/SCTP 校验和发送数据

nmap --badsum 192.168.1.1

端口状态

open(开放的)

应用程序正在该端口接收 TCP 连接或者 UDP 报文。发现这一点常常是端口扫描的主要目标。安全意识强的人们知道每个开放的端口都是攻击的入口。攻击者或者入侵测试者想要发现开放的端口。而管理员则试图关闭它们或者用防火墙保护它们以免妨碍了合法用户。非安全扫描可能对开放的端口也感兴趣,因 为它们显示了网络上那些服务可供使用。

closed(关闭的)

关闭的端口对于 Nmap 也是可访问的(它接受Nmap的探测报文并作出响应),但没有应用程序在其上监听。它们可以显示该IP地址上(主机发现,或者ping扫描)的主机正在运行up 也对部分操作系统探测有所 帮助。因为关闭的端口是可访问的,也许过会儿值得再扫描一下,可能一些又开放了。 系统管理员可能 会考虑用防火墙封锁这样的端口。那样他们就会被显示为被过滤的状态,下面讨论。

filtered(被过滤的)

由于包过滤阻止探测报文到达端口, Nmap 无法确定该端口是否开放。过滤可能来自专业的防火墙设备,路由器规则或者主机上的软件防火墙。这样的端口让攻击者感觉很挫折,因为它们几乎不提供任何信息。有时候它们响应 ICMP 错误消息如类型3代码13 (无法到达目标: 通信被管理员禁止),但更普遍的是过滤器只是丢弃探测帧,不做任何响应。 这迫使 Nmap 重试若干次以访万一探测包是由于网络阻塞丢弃 的。 这使得扫描速度明显变慢。

unfiltered(未被过滤的)

未被过滤状态意味着端口可访问,但Nmap不能确定它是开放还是关闭。 只有用于映射防火墙规则集的 ACK 扫描才会把端口分类到这种状态。 用其它类型的扫描如窗口扫描,SYN 扫描,或者 FIN 扫描来扫描未被过滤的端口可以帮助确定端口是否开放。

open | filtered(开放或者被过滤的)

当无法确定端口是开放还是被过滤的,Nmap 就把该端口划分成这种状态。开放的端口不响应就是一个例子。没有响应也可能意味着报文过滤器丢弃了探测报文或者它引发的任何响应。因此 Nmap 无法确定该端口是开放的还是被过滤的。 UDP,IP 协议,FIN,Null,和 Xmas 扫描可能把端口归入此类。

closed | filtered(关闭或者被过滤的)

该状态用于 Nmap 不能确定端口是关闭的还是被过滤的。 它只可能出现在 IPID Idle 扫描中。

nmap 实操

敏感文件探测

常见敏感文件

robots.txt 文件泄露敏感信息

搜索引擎可以通过 robots 文件可以获知哪些页面可以爬取,哪些页面不可以爬取。Robots 协议是网站国际互联网界通行的道德规范,其目的是保护网站数据和敏感信息、确保用户个人信息和隐私不被侵犯,如果 robots.txt 文件编辑的太过详细,反而会泄露网站的敏感目录或者文件,比如网站后台路径,从而得知其使用的系统类型,从而有针对性地进行利用。

image-20240531102901194

User-agent: * 这里的*代表的所有的搜索引擎种类,*是一个通配符
Disallow: / 这里定义是禁止爬寻站点所有的内容
Disallow: /admin/ 这里定义是禁止爬寻admin目录下面的目录
Disallow: /ABC/ 这里定义是禁止爬寻ABC目录下面的目录
Disallow: /cgi-bin/*.htm 禁止访问/cgi-bin/目录下的所有以".htm"为后缀的URL(包含子目录)。
Disallow: /*?* 禁止访问网站中所有包含问号 (?) 的网址
Disallow: /.jpg$ 禁止抓取网页所有的.jpg格式的图片
Disallow:/ab/adc.html 禁止爬取ab文件夹下面的adc.html文件。
Allow: /cgi-bin/ 这里定义是允许爬寻cgi-bin目录下面的目录
Allow: /tmp 这里定义是允许爬寻tmp的整个目录
Allow: .htm$ 仅允许访问以".htm"为后缀的URL。
Allow: .gif$ 允许抓取网页和gif格式图片
Sitemap: 网站地图告诉爬虫这个页面是网站地图。

sitemap.xml

Sitemaps 协议使网站能够告知搜索引擎网站中可供抓取的网址,以便于搜索引擎 google 等更方便地抓取网站。而 sitemap.xml 是遵守该协议的包含了一个网站所有链接的 xml 格式文件。sitemap.xml 文件可以手工编写,也可以通过软件自动生成,比如通过小爬虫在线生成工具。sitemap.xml 文件创建好了之后 可以提交给各个搜索引擎,然后指导搜索引擎去网站搜索什么内容的文件。一般的cms都会自动生成这 个文件。

后台登录入口

一般网站会给用户登录的界面,然后管理员也会有管理员登录的专用界面,虽然这些目录一般不会开 放,但是如果在做目录扫描的时候扫出来了这样的目录,比如(admin或者manager),如果没有次数 限制,那么可以尝试用暴力破解的方式进行攻击。 如果管理员跟普通用户在同一个界面就可以尝试抓包修改值来尝试逻辑漏洞

网站目录

  1. 建站的时候可能根据自己的习惯先把文件传到网站的根目录中然后解压,但是忘记删除了还没做权限控制就会导致备份文件或者数据泄露问题。
  2. 如果网站存在上传功能,就有可能会被访问到这个上传的文件,然后可以利用这个逻辑就可以访问到一些比较敏感的文件。
  3. 如果网站存在安装目录,并且在安装完成之后再次访问安装界面就可以能会被重新安装。
  4. 如果网站是使用 php 搭建的可能如引入一个 phpinfo.php 的文件,这个文件的信息颇多。
  5. 一些程序在升级或者定时备份过程中产生的备份,一般会有固定的后缀名或者名称,根据网站的规则可以找到,所以我们在备份过程中可以关注一下注册文件的路径。

常见后缀

  • phpinfo.php 文件:包含大量的 php 服务的信息
  • 网站的备份文件后缀:tar、tar.gz、zip、rar
  • 常见的备份/临时文件名称:web、website、backup、back、www、wwwroot、temp。
  • 某个文件的备份:该文件名称后缀加 bak。
  • readme.md:有的网站配置后没有删除该文件,里面有CMS的信息。
  • robots.txt:记录目录或者一些cms的信息。
  • 数据库的备份文件:记录数据库的节后.sql

mysql 的管理界面

mysql 的管理经常使用 phpmyadmin 进行管理。如果用 phpmyadmin 进行管理的话,就可以利用 phpmyadmin 的漏洞来尝试攻击。

敏感目录泄露

svn 泄漏

svn是一个开源的版本控制系統。造成SVN源代码漏洞的主要原因是管理员操作不规范将SVN隐藏文件夹 暴露与外网环境,可以利用.svn/entries或wc.db文件获取服务器源码等信息。

HG 泄漏

hg init 的时候会生成 .hg 隐藏文件夹,包含代码以及分支修改信息。

gedit 备份文件 linux 下利用 gedit 文件保存后,会生成以后后缀为~的文件。

vim 备份文件

临时文件是在 vim 编辑文本时就会创建的文件,如果程序正常退出,临时文件自动删除,如果意外退出就会保留,当 vim 异常退出后,因为未处理缓存文件,导致可以通过缓存文件恢复原始文件内容,以 index.php 为例,第一次产生的缓存文件名 为.index.php.swp第二次意外退出后,文件名 为 .index.php.swo 第三次产生的缓存文件则为 .index.php.swn,注意:index 前有" . "是隐藏文件。

DS_Store 备份文件

.DS_Store 是 Mac OS 保存文件夹的自定义属性的隐藏文件。通过 .DS_Store 可以知道这个目录里面所有文件的清单。

git 泄露

Git就是一个开源的分布式的控制系统,可以理解为一个内容寻址文件系统,也就是修改的任意内容都可 以被回溯,再加上他的核心部分呢就是键值对应数据库,所以可以利用该数值恢复到任意版本就会导致 源码的泄漏。

通过 banner 来识别出一些网站部署的框架,然后根据框架迅速定位历史漏洞或者自己搭建相应的环境进行验证测试。

站点其他信息

  • 判断网站操作系统
    • Linux 大小写敏感,Windows大小写不敏感
  • 确定网站采用的语言
    • 如 PHP/Java/Python 等。找后缀,比如php/asp/jsp
  • 前端框架
    • 如 jQuery/BootStrap/Vue/React/Angular等。查看源代码
  • 中间服务器
    • 如 Apache/Nginx/IIS 等 查看 header 中的信息 根据报错信息判断 根据默认页面判断
  • Web容器服务器
    • 如 Tomcat/Jboss/Weblogic 等
  • 后端框架
    • 根据 Cookie 判断 根据 CSS/图片等资源的hash值判断 根据URL路由判断,如 wp-admin 根据网页中的关键字判断 根据响应头中的 X-Powered-By
  • WAF
    • 探测有没有 WAF,如果有,找绕过方式,如果没有没有,进入下一步
  • 扫描敏感目录
    • 扫描敏感目录,看是否存在信息泄漏 扫描之前先自己尝试几个的url,人为看看反应
  • 使用爬虫爬取网站信息
    • 拿到一定信息后,通过拿到的目录名称,文件名称及文件扩展名了解网站开发人员的命名思路,确定其命名规则,推测出更多的目录及文件名

dirsearch

dirsearch 是一个基于 python3 的命令行工具,常用于暴力扫描页面结构,包括网页中的目录和文件。相比其他扫描工具 disearch 的特点是: 支持 HTTP 代理、多线程、支持多种形式的网页(asp,php)、生成报告(纯文本,JSON)、启发式检测 无效的网页、递归扫描、用户代理随机化、批量处理、扫描器与字典 。 下载地址:https://github.com/maurosoria/dirsearch

CMS 指纹识别

CMS

CMS(content management system,内容管理系统),又称整站系统或文章系统。用于网站内容管理,用户只需要下载对应的CMS软件包,部署搭建,就可以直接利用 CMS,简单方便。

识别 CMS 的意义

获取 CMS 类型、Web 服务组件类型及版本信息可以帮助安全工程师快速有效的去验证已知漏洞。有了目标的 CMS,就可以利用相关信息进行测试,进行代码审计等。 在指纹识别的过程中,有很多开源的工具和指纹库,如 WhatWeb、Wapplyzer 等。

识别方法

  • 网站特有文件
    • 如 dedecms:/templets/default/style/dedecms.css、WordPress:/wp-admin/admin-ajax.php
  • 网站独有文件的 md5
    • dedecms:/templets/default/style/dedecms.css、WordPress:/wp-admin/adminajax.php
  • 网站文件命名规则
  • 返回头的关键字
  • 网页关键字
    • 如 dedecms:/data/sessions/index.html
  • Url特征
    • WordPress:/wp-content和/wp-admin之类的路径
  • Meta 特征
  • Script 特征
  • robots.txt
  • 网站路径特征
  • 网站静态资源
  • 爬虫网站目录信息
  • CMS 为了推广自己会在主页放一个官网的超链接

识别工具

WhatWeb 下载地址:https://github.com/urbanadventurer/WhatWeb Wapplyzer Google Chrome 插件,可直接在谷歌应用商店下载 在线查询

网站安全防护

Web 应用防护系统(也称为:网站应用级入侵防御系统。英文:Web Application Firewall,简称: WAF)。利用国际上公认的一种说法:Web应用防火墙是通过执行一系列针对HTTP/HTTPS的安全策略 来专门为Web应用提供保护的一款产品。 WAF 对于一些常规漏洞(如注入漏洞、XSS漏洞、命令执行漏洞、文件包含漏洞)的检测大多是基于“正则表达式”和“AI+规则”的方法,因此会有一定的概率绕过其防御。

WAF 分类

可以把 WAF 分为四类:云 WAF 类、硬件 WAF 类、软件 WAF 类、网站内置 WAF 类

  • 云 WAF 基于云端的检测,安装简单,修改 DNS 解析或在服务器安装云 WAF 的模块即可。
  • 硬件 WAF 串联在内网的交换机上,防护范围大,防护能力也较强
  • 软件 WAF 安装在服务器上根据网站流量决定占用的内存量。
  • 网站内置 WAF 在系统后台内置一项安全功能以便管理者使用。

识别 WAF

看图识别

被不同 WAF 拦截,触发的报错页面也不相同,可以根据经验判断是哪种 WAF。如: 安全狗:

image-20240531102910246

工具识别

看图识别过于依赖经验,可以通过特征使用脚本进行识别。

wafwoof

identYwaf

高级搜索

高级搜索语法

谷歌搜索技巧是利用各种高级搜索语法或者搜索指令,让我们能够使用Google进行精确化的搜索,渗透测试或者学术文件查找都可以应用到这些搜索技巧。

逻辑符号

指令 用法 示例
“”(引号) 用引号来查询一个确切的单词或短语 查找有关《百年孤独》这本书的 网页,语法:“百年孤独”
OR(或者) 用OR分隔搜索词,同时执行两个搜索查询, 这将找到包含多个单词之一的页面。 搜索引用了“Google Drive”、“Dropbox”或“OneDrive”的页 面,语法:Google Drive OR Dropbox OR OneDrive
-(减号、连 字符) 在单词或网站前使用连字符将其从搜索结果中排除 从搜索结果中排除维基百科页 面,语法: -site:wikipedia.org
~(波浪号) 使用波浪号获得目标关键词及其近似词的搜索结果 查找SEO方面的策略或者教程, 语法:SEO ~教程
$ 使用$查找特定价格的商品 查找一款售价在99美金的手机,语法:mobile phone $99
*(星号) 添加星号作为未知单词或事实的占位符 查找以“生活就像一个”开头的引语,语法:生活就像一个*
..(两点) 用两个句点分隔数字,不带空格,以搜索该范围内的数字 查找1950年至2000年间发生的 计算机里程碑,语法:”计算机里程碑” 1950..2000
AROUND(n) 在两个搜索词之间加上AROUND(n),以查找 两个词间有特定距离的页面。 用数字n设置术 语之间的最大距离,这对于查找两个搜索词 之间的关系很有用。 查找在同一句话或段落中提到 Facebook和Microsoft的页面, 语法:Facebook AROUND(7) Microsoft

搜索语法

指令 用法 示例
allintext 使用 allintext:[搜索短语] 查找正文中包含这些单词的页面 查找正文中有关Roth、IRA投资讯息的页面,语法:allintext:Roth IRA 投资
allintitle 使用 allintitle:[搜索短语] 查找标题中包含这些 单词的页面 查找标题中同时包含“Apple”和 “notebook”的页面 语法:allintitle:Apple notebook
allinurl 使用 allinurl:[搜索短语] 查找URL中包含这些 单词的页面 查找 URL 中同时包含”Microsoft” and “Surface”的页面 语法:allinurl:Microsoft Surface
site 使用 site:[URL] 将搜索结果限制到特定网站 查找云点 SEO 网关于谷歌 SEO 的页面 语法:site:yundianseo.com 谷歌 SEO
related 使用 related:[URL] 查找与特定网站类似的网站 查找与云点SEO类似的网站 语法:related:yundianseo.com
define 使用 define:[搜索短语] 查找其定义 查找SEO的定义 语法:define:SEO
location 使用 location:[地点] 查看某个地区内的相关信息 查询南京的酒店,语法:hotel location:Nanjing
filetype 使用 filetype:[后缀] 将结果限制为特定的文件格式,如 PDF 或 DOC。 查找 PDF 格式的 Microsoft Office 键盘快捷键相关文件,语法:filetype:pdf
intext 使用 intext:[关键词] 查找文本正文中包含关键词的页面 查找网页正文包含 pandemonia 的网页,语法:intext:pandemonia
intitle 使用 intitle:[关键词] 查找网页标题中包含关键词的页面 查找网页标题包含 help 的网页,语法:intitle:help
inurl 使用 inurl: [关键词]查找 URL 中包含关键词的 页面 查找 URL 包含 print 的网页 语法:inurl:print
title 使用 title:[关键词] 针对标题进行搜索 查找所有标题中包含张学友的网页 语法:title: 张学友
ext 使用 ext:[关键词] URL 文件后缀名 查找 URL 文件以 php 结尾的网站 语法:title:php

怎么利用谷歌语法做资产收集?
查找关于 system 的 pdf 文件 :type:pdf system 查找子域名: site:baidu.com 查找登录后台: intitle:管理登录 查找安装遗留文件: inurl:"install/install.php" 查任意文件读取:intitle:"index of" 查注入点: inurl:php?id=1

高级搜索引擎

FOFA 语法

指令 用法
= 匹配,=""时,可查询不存在字段或者值为空的情况。
== 完全匹配,==""时,可查询存在且值为空的情况。
&&
|| 或者
!= 不匹配,!=""时,可查询值为空的情况。
*= 模糊匹配,使用或者?进行搜索,比如 banner="mys??" (个人版及以上可用)。
() 确认查询优先级,括号内容优先级最高。

以下是一些FOFA语法查询示例:

  1. 查询所有使用Nginx的网站:

protocol="http" && header="server: nginx"

  1. 查询 Google Dorks 泄露的网站:

protocol="http" && body="site:google.com" && body="search?q=*&start="

  1. 查询使用了Struts2漏洞的网站:

protocol="http" && title="index of /struts2-showcase-"

  1. 查询使用了WordPress的网站:

protocol="http" && body="wp-content"

  1. 查询使用了Tomcat的网站:

protocol="http" && header="server: Apache-Coyote/1.1" && title="Apache

  1. 查询某网站中所有含有“admin”关键字的URL:

domain="example.com" && "admin"

  1. 查询某个IP地址所对应的域名:

ip="xxx.xxx.xxx.xxx"

  1. 查询某个具有特定端口的服务的IP地址:

port="80" && protocol="TCP"

  1. 查询运行特定操作系统版本的服务器:

os="Windows 2008 server r2"

  1. 按照HTTP响应码查询:

http_status_code="500"

  1. 按照网站标题进行查询:

title="登录"

学前沿IT,到英格科技! all right reserved,powered by Gitbook本文发布时间: 2025-04-15 20:07:18

results matching ""

    No results matching ""