目录
知识点
网络资产
网站IP及域名、子域名等基本信息
目标系统软硬件技术架构
公司地址、新闻动态、组织架构等相关信息
重要人员信息
敏感目录、弱口令、操作系统类型、数据库类型、漏洞等关键数据
机密文档、网络拓扑等敏感信息
CDN
CDN的解释
CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。通俗易懂的解释:通过IP访问实际资源时,如果CDN上并没有缓存资源,则会到源站请求资源,并缓存到CDN节点上,这样,用户下一次访问时,该CDN节点就会有对应资源的缓存了。
CDN对渗透测试的影响
隐藏真实源IP 是CDN对渗透测试的主要影响,导致对目标IP测试错误。普通的访问路径是:用户访问域名 -> CDN节点 -> 真实服务器IP -> 访问目标主机。因此,绕过CDN找到真实IP是进行有效渗透测试的关键。
CDN的作用
加速用户对该网站的打开速度,提升用户体验。
网站不容易宕机,多个服务器达到负载均衡,不会让流量集中涌入其中某一台服务器。
解决延迟问题,提高直播等相关内容的时效性。
绕过CDN查找主机真实IP的方法
- 验证是否存在CDN
方法1:使用多地ping服务
通过多地ping服务检查目标IP地址是否唯一。如果不唯一,多半使用了CDN。常用的多地ping网站有:
这些工具可以从不同地理位置ping一个网站,并返回不同的IP地址。若返回的IP地址不一致,则可能是使用了CDN。
方法2:使用nslookup命令
利用nslookup命令检测域名解析的IP地址数量。如果解析结果中有多个IP地址,说明使用了CDN。示例如下:
有CDN的示例:
无CDN的示例:
- 绕过CDN查找网站真实IP
方法1:查询历史DNS记录
通过查询历史DNS记录,可以找到使用CDN前的IP地址。常用的查询网站有:
- DNSDB
- 微步在线
- Netcraft
- ViewDNS
- IPIP
这些平台提供详细的历史DNS记录,攻击者可以输入网站域名并查看其历史IP地址。
除了过去的DNS记录,即使是当前的记录也可能泄漏原始服务器IP。
方法2:查询子域名
CDN成本较高,很多站长只对主站或流量大的子站点使用CDN。通过查询子域名找到其真实IP。常用工具:
- 微步在线
- DNSDB
- Google搜索:使用site:baidu.com -www进行查询
- 子域名挖掘机:输入域名即可基于字典挖掘子域名
- Subdomainbrute:利用Python脚本收集子域名
方法3:网络空间引擎搜索
使用网络空间搜索引擎(如Shodan、Fofa)查找目标网站的真实IP。方法如下:
Fofa搜索:输入title:"网站的title关键字"或body:"网站的body特征"
这些搜索引擎能够搜索和索引互联网上的设备和服务,通过特定的关键词和特征或者是网站源码,可以找到与目标网站相关的真实IP。
方法4:利用SSL证书
SSL证书可以暴露真实IP。通过扫描互联网获取SSL证书,进而找到服务器的真实IP。常用工具:
- Censys:用于搜索联网设备信息,扫描整个互联网。
假如你在xyz123boot.com上托管了一个服务,原始服务器IP是136.23.63.44。在Censys上搜索parsed.names:xyz123boot.com,可以找到该域名的证书,并获取其真实IP。
方法5:利用HTTP标头
通过比较HTTP标头来查找原始服务器。例如,使用SecurityTrails平台搜索特定HTTP标头。
方法6:利用网站返回的内容
如果原始服务器IP也返回了网站的内容,那么可以在网上搜索大量的相关数据。浏览网站源代码,寻找独特的代码片段。在JavaScript中使用具有访问或标识符参数的第三方服务(例如Google Analytics,reCAPTCHA)是攻击者经常使用的方法。
方法7:使用国外主机解析域名
国内很多CDN只做国内线路,使用国外的主机访问域名可能获取到真实IP,看下国外的服务器ping的ip是否是同一个
方法8:网站漏洞查找
遗留文件:如phpinfo页面泄露,可能会显示服务器的外网IP地址。
漏洞探针:如SSRF漏洞,可以通过目标网站上的漏洞让VPS获取对方反向连接的IP地址,还有就是XSS盲打、命令执行反弹shell等
方法9:网站邮件订阅查找
查看RSS邮件订阅的邮件源码,通常包含服务器的真实IP。
利用方法:
通过主动服务器发送邮件,例如验证码
通过错误的收信名称来服务器发送邮件
主要原理:服务器主动发送邮件时显示的ip为真实ip
方法10:全网扫描
判断厂商:(ipip)——缩小ip范围
通过ip库查询:纯真数据库——确认ip段
通过网站特征进行爆破——就是通过网站特征来一个一个ip爆破
方法11:F5 LTM解码法
通过解码F5 LTM负载均衡器的Set-Cookie字段
DNS解析详细步骤
- 用户输入: 当用户在浏览器中输入一个域名(如www.example.com)时,DNS解析过程开始。
- 检查浏览器缓存: 浏览器首先检查自身的DNS缓存,看是否有该域名对应的IP地址。如果有,则直接使用缓存中的IP地址。
- 检查操作系统缓存: 如果浏览器缓存中没有,则检查操作系统的DNS缓存。
- 检查本地hosts文件: 接下来检查本地hosts文件,看是否有该域名的映射关系。
- 请求本地DNS服务器(递归查询): 如果前面都没有找到,浏览器会向本地DNS服务器(通常由ISP提供)发送查询请求。
- 根域名服务器查询: 如果本地DNS服务器没有缓存,它会向根域名服务器发送查询。
- 顶级域名服务器查询: 根服务器会返回负责.com顶级域的DNS服务器地址。本地DNS服务器再向其查询。
- 权威域名服务器查询: 顶级域名服务器返回负责example.com的权威DNS服务器地址。本地DNS服务器再次查询。
- 获取IP地址: 权威DNS服务器返回www.example.com的IP地址给本地DNS服务器。
- 返回结果: 本地DNS服务器将IP地址返回给客户端。
- 缓存结果: 本地DNS服务器和客户端通常会缓存这个结果,以加速后续的查询。
- 建立连接: 有了IP地址后,浏览器就可以与目标服务器建立连接了
Nmap
基本使用方法
1. nmap -sT 192.168.96.4 //TCP连接扫描,不安全,慢
2. nmap -sS 192.168.96.4 //SYN扫描,使用最频繁,安全,快
3. nmap -Pn 192.168.96.4 //目标机禁用ping,绕过ping扫描
4. nmap -sU 192.168.96.4 //UDP扫描,慢,可得到有价值的服务器程序
5. nmap -sI 僵尸ip 目标ip //使用僵尸机对目标机发送数据包
6. nmap -sA 192.168.96.4 //检测哪些端口被屏蔽
7. nmap 192.168.96.4 -p <portnumber> //对指定端口扫描
8. nmap 192.168.96.1/24 //对整个网段的主机进行扫描
9. nmap 192.168.96.4 -oX myscan.xml //对扫描结果另存在myscan.xml
10. nmap -T1~6 192.168.96.4 //设置扫描速度,一般T4足够。
11. nmap -sV 192.168.96.4 //对端口上的服务程序版本进行扫描
12. nmap -O 192.168.96.4 //对目标主机的操作系统进行扫描
13. nmap -sC <scirptfile> 192.168.96.4 //使用脚本进行扫描,耗时长
14. nmap -A 192.168.96.4 //强力扫描,耗时长
15. nmap -6 ipv6地址 //对ipv6地址的主机进行扫描
16. nmap -f 192.168.96.4 //使用小数据包发送,避免被识别出
17. nmap –mtu <size> 192.168.96.4 //发送的包大小,最大传输单元必须是8的整数
18. nmap -D <假ip> 192.168.96.4 //发送参杂着假ip的数据包检测
19. nmap --source-port <portnumber> //针对防火墙只允许的源端口
20. nmap –data-length: <length> 192.168.96.4 //改变发生数据包的默认的长度,避免被识别出来是nmap发送的。
21. nmap -v 192.168.96.4 //显示冗余信息(扫描细节)
22. nmap -sn 192.168.96.4 //对目标进行ping检测,不进行端口扫描(会发送四种报文确定目标是否存活,)
23. nmap -sP 192.168.96.4 //仅仅对目标进行ping检测。
24. nmap -n/-R 192.168.96.4 //-n表示不进行dns解析,-R表示对ip进行dns反向解析
25. nmap --system-dns 192.168.96.4 //扫描指定系统的dns服务器
26. nmap –traceroute 192.168.96.4 //追踪每个路由节点。
27. nmap -PE/PP/PM: 使用ICMP echo, timestamp, and netmask 请求包发现主机。
28. nmap -sP 192.168.96.4 //主机存活性扫描,arp直连方式。
扫描pikachu
使用nmap -T4 -A -v -Pn IP : 最常⽤的⼀种扫描#
-T4设置时序,越⾼扫描越快
-A 启⽤操作系统检测,版本检测,脚本扫描和跟踪路由
-v 增加详细级别(使⽤-vv 或更⾼级别以获得更好的效果)
-Pn ⽆ ping 扫描
SYN半开扫描的原理
跳过主机存活检测扫描使用场景
发送SYN包: 扫描器向目标端口发送一个SYN包,跟要建立正常的TCP连接一样。
等待响应:
如果端口开放: 目标会回应一个SYN-ACK包。
如果端口关闭: 目标会回应一个RST包。
如果被过滤: 可能不会收到任何响应,或收到一个ICMP不可达消息。
终止连接: 对于开放的端口,扫描器不会完成三次握手,直接发送一个RST包来终止连接。
记录结果: 根据收到的响应,扫描器确定端口状态。
优势:
速度快: 不完成完整的TCP连接。
较难被检测: 不在目标系统日志中留下完整连接记录。
使用方法:
在Nmap中,使用 -sS 选项进行SYN扫描:
nmap -sS <target>
跳过主机存活检测扫描使用场景
跳过主机存活检测(也称为跳过ping扫描)是指直接进行端口扫描,而不用先确定主机是否在线。
使用方法:
在Nmap中,使用 -Pn 选项跳过主机存活检测:
nmap -Pn <target>
主要使用场景:
防火墙环境:许多防火墙会阻止ICMP请求(ping)
-Pn 选项假设所有目标主机都是在线的。
隐蔽扫描
跳过主机发现可以减少发送到目标的数据包数量,因为直接进行端口扫描,不需要探测。
降低被入侵检测系统(IDS)或入侵防御系统(IPS)检测的风险。
已知主机
当你确定目标主机在线时,可以使用此选项节省时间。
全面扫描
在需要扫描所有指定IP地址的情况下,无论它们是否看似在线。
Dirmap
基本使用方法
单目标,默认为http
python3 dirmap.py -i https://target.com -lcf
python3 dirmap.py -i 192.168.1.1 -lcf
子网(CIDR格式)
python3 dirmap.py -i 192.168.1.0/24 -lcf```
网络范围
python3 dirmap.py -i 192.168.1.1-192.168.1.100 -lcf
扫描Pikachu
Dirmap每次扫描的结果不一样,原因如下:
网络条件: 网络连接质量的变化可能导致某些请求在一次扫描中成功,而在另一次扫描中失败。
随机性: dirmap 可能在内部使用了一些随机化策略来避免被检测为自动化工具。
超时设置: 如果没有明确设置超时参数,某些请求可能在一次扫描中超时,而在另一次中成功。
并发问题: 多线程扫描可能导致结果的不一致。
爬虫缺陷:作者注释:“爬虫模式”只爬取了目标的当前页面,用于生成动态字典。项目将来会将“爬虫模块”与“生成动态字典功能”分离,因为爬虫每次爬取目录路径不同,导致扫描结果差异
dirmap高级应用
查看项目中的README文件,得到dirmap高级应用方法:
dirmap.conf配置详解
#递归扫描处理配置
[RecursiveScan]
#是否开启递归扫描:关闭:0;开启:1
conf.recursive_scan = 0
#遇到这些状态码,开启递归扫描。默认配置[301,403]
conf.recursive_status_code = [301,403]
#URL超过这个长度就退出扫描
conf.recursive_scan_max_url_length = 60
#这些后缀名不递归扫
conf.recursive_blacklist_exts = ["html",'htm','shtml','png','jpg','webp','bmp','js','css','pdf','ini','mp3','mp4']
#设置排除扫描的目录。默认配置空。其他配置:e.g:['/test1','/test2']
#conf.exclude_subdirs = ['/test1','/test2']
conf.exclude_subdirs = ""
等等,以下是几条高级命令运行结果:
设置线程数:
python dirmap.py -i http://127.0.0.1/pikachu/ -lcf -t 50
使用 -t 参数可以设置扫描线程数,默认为 32。
排除特定状态码:
python dirmap.py -i http://127.0.0.1/pikachu/ -lcf --no-progress --exclude-status 404
Fscan实践
基本用法
fscan.exe -h *** 基本扫描
fscan.exe -h *** -p 80,443,3306 指定端口扫描
fscan.exe -h *** -o result.txt 保存结果到文件
fscan.exe -h *** -proxy 127.0.0.1:8080 使用代理
fscan.exe -h *** -t 1000 指定线程数
fscan.exe -h *** -np 禁用Ping探测
实践
扫描主机80、3006(即phpstudy占用)端口,禁用ping探测,指定线程数为1000