所有环节的入口
信息收集在无论是漏洞挖掘还是渗透测试中都有着举足轻重的地位,一个好的信息收集可以让你少走许多弯路,能够更好的定向突破。
网络入口
- 网络拓扑信息:外网出口
- IP信息:C段
- APP程序
- 后台系统
- 网络边界设备等等
域名信息
Whois
Whois 可以查询域名是否被注册,以及注册域名的详细信息的数据库,其中可能会存在一些有用的信息,例如域名所有人、域名注册商、邮箱等。
搜索引擎搜索
搜索引擎通常会记录域名信息,可以通过 site: domain 的语法来查询。google等等。
第三方查询
网络中有相当多的第三方应用提供了子域的查询功能,例如:
- DNSDumpster(进行目标域名的DNS记录枚举,收集子域名信息,发现目标的IP地址和相关DNS服务器)
- Virustotal(扫描文件、URL是否含有恶意代码,查询域名/IP是否被安全厂商标记为恶意,进行威胁情报分析,收集与目标相关的安全事件和关联信息)
- CrtSearch (查询某个域名所有被公开签发的SSL/TLS证书,枚举子域名和关联域名(证书中通常会包含多域名信息),帮助发现隐藏的子域和子系统)
- ThreatMiner (通过域名、IP、文件哈希、URL等查询威胁相关数据,收集APT活动、恶意基础设施、攻击者工具等信息,帮助安全研究人员进行关联分析)
网站信息利用
网站中有相当多的信息,网站本身、各项安全策略、设置等都可能暴露出一些信息。
网站本身的交互通常不囿于单个域名,会和其他子域交互。对于这种情况,可以通过爬取网站,收集站点中的其他子域信息。这些信息通常出现在JavaScript文件、资源文件链接等位置。
网站的安全策略如跨域策略、CSP规则等通常也包含相关域名的信息。有时候多个域名为了方便会使用同一个SSL/TLS证书,因此有时可通过证书来获取相关域名信息。
域传送漏洞
DNS域传送 (zone transfer) 指的是冗余备份服务器使用来自主服务器的数据刷新自己的域 (zone) 数据库。这是为了防止主服务器因意外不可用时影响到整个域名的解析。
一般来说,域传送操作应该只允许可信的备用DNS服务器发起,但是如果错误配置了授权,那么任意用户都可以获得整个DNS服务器的域名信息。这种错误授权被称作是DNS域传送漏洞。
Passive DNS
Passive DNS被动的从递归域名服务器记录来自不同域名服务器的响应,形成数据库。利用Passive DNS数据库可以知道域名曾绑定过哪些IP,IP曾关联到哪些域名,域名最早/最近出现的时间,为测试提供较大的帮助。Virustotal、passivetotal、CIRCL等网站都提供了Passive DNS数据库的查询。
泛解析
泛解析是把 *.example.com 的所有A记录都解析到某个IP 地址上,在子域名枚举时需要处理这种情况以防生成大量无效的记录。
重要记录
CNAME
CNAME即Canonical name,又称alias,将域名指向另一个域名。其中可能包含其他关联业务的信息。很多网站使用的CDN加速功能利用了该记录。
MX记录
MX记录即Mail Exchanger,记录了发送电子邮件时域名对应的服务器地址。可以用来寻找SMTP服务器信息。
NS记录
NS (Name Server) 记录是域名服务器的记录,用来指定域名由哪个DNS服务器来进行解析。
SPF记录
SPF (Sender Policy Framework) 是为了防止垃圾邮件而提出来的一种DNS记录类型,是一种TXT类型的记录,用于登记某个域名拥有的用来外发邮件的所有IP地址。通过SPF记录可以获取相关的IP信息,常用命令为 dig example.com txt 。
CDN
CDN验证
可通过多地ping的方式确定目标是否使用了CDN,常用的网站有 http://ping.chinaz.com/ https://asm.ca.com/en/ping.php 等。
域名查找
使用了CDN的域名的父域或者子域名不一定使用了CDN,可以通过这种方式去查找对应的IP。
历史记录查找
CDN可能是在网站上线一段时间后才上线的,可以通过查找域名解析记录的方式去查找真实IP。
邮件信息
通过社会工程学的方式进行邮件沟通,从邮件头中获取IP地址,IP地址可能是网站的真实IP或者是目标的出口IP。
端口信息
站点信息
- 判断网站操作系统
1.Linux大小写敏感
2.Windows大小写不敏感 - 扫描敏感文件
1. robots.txt
2. crossdomain.xml
3. sitemap.xml
4. xx.tar.gz
5. xx.bak - 确定网站采用的语言
- 前端框架 (如jQuery / BootStrap / Vue / React / Angular等)
- 中间服务器
1. 如 Apache / Nginx / IIS 等
2. 查看header中的信息
3. 根据报错信息判断
4. 根据默认页面判断 - Web容器服务器 (如Tomcat / Jboss / Weblogic等)
- 后端框架
1. 根据Cookie判断
2. 根据CSS / 图片等资源的hash值判断
3. 根据URL路由判断,如wp-admin
4. 根据网页中的关键字判断
5. 根据响应头中的X-Powered-By - CDN信息 (常见的有Cloudflare、yunjiasu)
- 探测有没有WAF,如果有,什么类型的
- 扫描敏感目录,看是否存在信息泄漏
搜索引擎利用
恰当地使用搜索引擎(Google/Bing/Yahoo/Baidu等)可以获取目标站点的较多信息。
搜索引擎处理流程
数据预处理
- 长度截断
- 大小写转化
- 去标点符号
- 简繁转换
- 数字归一化,中文数字、阿拉伯数字、罗马字
- 同义词改写
- 拼音改写
处理
- 分词
- 关键词抽取
- 非法信息过滤
搜索技巧
site:www.hao123.com
返回此目标站点被搜索引擎抓取收录的所有内容
site:www.hao123.com keyword
返回此目标站点被搜索引擎抓取收录的包含此关键词的所有页面
此处可以将关键词设定为网站后台,管理后台,密码修改,密码找回等
site:www.hao123.com inurl:admin.php
返回目标站点的地址中包含admin.php的所有页面,可以使用admin.php/manage.php或者其他关键词来寻找关键功能页面
link:www.hao123.com
返回所有包含目标站点链接的页面,其中包括其开发人员的个人博客,开发日志,或者开放这个站点的第三方公司,合作伙伴等
related:www.hao123.com
返回所有与目标站点”相似”的页面,可能会包含一些通用程序的信息等
intitle:"500 Internal Server Error" "server at"
搜索出错的页面
inurl:"nph-proxy.cgi" "Start browsing"
查找代理服务器
除了以上的关键字,还有allintile / allinurl / allintext / inanchor / intext / filetype / info / numberange / cache等。
3.5.2.1. 通配符
* 代表某一个单词
OR 或者 | 代表逻辑或
单词前跟 + 表强制查询
单词前跟 - 表排除对应关键字
" 强调关键字
Github
在Github中,可能会存在源码泄露、AccessKey泄露、密码、服务器配置泄露等情况,常见的搜索技巧有:
@example.com username/user/key/login/ftp/
@example.com config/ftp/smtp/pop
@example.com security_credentials/connetionstring
```@example.com JDBC/ssh2_auth_password/send_keys