信息收集
利用搜索引擎发现信息泄露
[[对信息泄露进行搜索引擎发现侦察|全文]]
测试目标:找出应用程序、系统或组织公开在互联网的敏感设计和配置信息。
使用多个搜索引擎,可带来不同的结果,更加全面。
百度 | Bing | Binsearch.info | Comman Crawl | DuckDuckGo | Google | Internet Archive Wayback Machine | Shodan | Fofa
常见搜索运算符
site
inurl
intitle
intext
filetype
Dorking
指纹识别
[[指纹 Web 服务器|全文]]
服务器指纹识别
测试目标:确定正在运行的Web服务器的版本和类型,以便进一步发现任何已知漏洞。
从 Web 服务器中引出一些响应,然后可以将这些响应与已知响应和行为的数据库进行比较匹配
Banner Grabbing
响应头 html源码获取信息
nc -v target port
telnet target port
openssl
发送格式错误的请求
默认错误页面
自动扫描工具
组件指纹识别
[[指纹 Web 应用程序框架|全文]]
对 Web 应用程序使用的组件进行指纹识别
HTTP 标头 cookie 网页源码 特定文件和文件夹 文件扩展名 错误信息
HTML源码中的线索
[[检查网络服务器图元文件是否有信息泄露|全文]]
分析源码识别隐藏或混淆的路径和功能
提取并映射可能导致更好的了解手头系统的其他信息
Meta FIle
Robots
META Tags
SiteMap
security.txt
humans.txt
Other
网页内容
[[审查网页内容是否存在信息泄露|全文]]
枚举服务器上的所有网站
[[枚举 Web 服务器上的应用程序|全文]]
测试 Web 应用程序漏洞的最重要步骤是找出 Web 服务器上托管了哪些特定 Web 应用程序。许多 Web 应用程序都有已知的漏洞和已知的攻击策略,可以利用这些漏洞和攻击策略来获得远程控制或利用数据。
非标准URL
不同网站关联到不同路径
www.example.com/site1
enumeration
漏洞扫描器
Web 服务器配置错误 并允许目录遍历
网页引用
搜索引擎抓取和索引 site:www.example.com
Fuzzing
非标准端口
www.example.com:port1
端口扫描
nmap -Pn -sT -sV -p- target
masscan -p1-65535 --rate=1000 -e tun0 target
虚拟主机
单个 IP 地址可与多个域名关联
*.example.com
DNS 传送
受到限制 值得一试
$ host -t ns www.owasp.org #识别名称服务器
$ host -l www.owasp.org ns1.secure.net #向名称服务器请求区域传送
$ dig @dns-server -x target
DNS 反向(PTR)查询
基于 Web 的 DNS 搜索
google search
数字证书
证书上的通用名称 (CN) 和主题备用名称 (SAN) 可能包含一个或多个主机名 N和SAN可以通过手动查看证书获取,也可以通过OpenSSL等其他工具获取:
$ openssl s_client -connect 93.184.216.34:443 </dev/null 2>/dev/null | openssl x509 -noout -text | grep -E 'DNS:|Subject:'
Subject: C = US, ST = California, L = Los Angeles, O = Internet Corporation for Assigned Names and Numbers, CN = www.example.org
DNS:www.example.org, DNS:example.com, DNS:example.edu, DNS:example.net, DNS:example.org, DNS:www.example.com, DNS:www.example.edu, DNS:www.example.net
Tools
水泽 nslookup、dig Nessus Nikto nmap 搜索引擎
确定应用入口点
[[确定应用入口点|全文]]
通过请求和响应分析确定可能的入口和注入点
测试人员应该很好地了解应用程序,以及用户和浏览器如何与之同通信
注意传递给应用程序的隐藏表单字段
遍历应用程序时,应该记下 URL、自定义标头、请求/响应正文中的任何有趣的参数,并保存在电子表格。 请求页面 | 代理请求编号 | 有趣的参数 | 请求类型 |
请求内容
确定在何处使用GET 和在何处使用POST
识别 POST 请求中的所有参数
在 POST 请求中,请特别注意任何隐藏参数
识别 GET 请求中使用的所有参数,特别是查询参数
识别查询字符串的所有参数
在识别一个字符串或 POST 请求中的多个参数时需要特别注意的是,执行攻击需要部分或全部参数。测试人员需要识别所有参数(即使已编码或加密)并识别哪些参数由应用程序处理。
还要注意通常看不到的任何其他或自定义类型标头(例如debug: false
)。
响应内容
- 确定新 cookie 的设置 (Set-Cookie标头)、修改或添加位置。
- 确定在正常响应(即未修改的请求)期间存在任何重定向(3xx HTTP 状态代码)、400 状态代码(尤其是 403 Forbidden)和 500 内部服务器错误的位置。
- 还要注意使用任何有趣的标头的位置。例如,
Server: BIG-IP
表示该站点是负载平衡的。因此,如果一个站点是负载平衡的并且一台服务器配置不正确,那么测试人员可能不得不发出多个请求来访问易受攻击的服务器,具体取决于所使用的负载平衡类型。
爬虫
爬取应用执行路径
[[通过应用映射执行路径|全文]]
Map 目标应用程序并了解主要工作流。
Automatic Spidering
爬取应用架构
[[Map 应用框架|全文]]
了解应用程序的架构和使用的技术。