所有环节的入口

信息收集在无论是漏洞挖掘还是渗透测试中都有着举足轻重的地位,一个好的信息收集可以让你少走许多弯路,能够更好的定向突破。

网络入口

  1. 网络拓扑信息:外网出口
  2. IP信息:C段
  3. APP程序
  4. 后台系统
  5. 网络边界设备等等

域名信息

Whois

Whois 可以查询域名是否被注册,以及注册域名的详细信息的数据库,其中可能会存在一些有用的信息,例如域名所有人、域名注册商、邮箱等。

搜索引擎搜索

搜索引擎通常会记录域名信息,可以通过 site: domain 的语法来查询。google等等。

第三方查询

网络中有相当多的第三方应用提供了子域的查询功能,例如:

  1. DNSDumpster(进行目标域名的DNS记录枚举,收集子域名信息,发现目标的IP地址和相关DNS服务器)
  2. Virustotal(扫描文件、URL是否含有恶意代码,查询域名/IP是否被安全厂商标记为恶意,进行威胁情报分析,收集与目标相关的安全事件和关联信息)
  3. CrtSearch (查询某个域名所有被公开签发的SSL/TLS证书,枚举子域名和关联域名(证书中通常会包含多域名信息),帮助发现隐藏的子域和子系统)
  4. 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. 判断网站操作系统
    1.Linux大小写敏感
    2.Windows大小写不敏感
  2. 扫描敏感文件
    1. robots.txt
    2. crossdomain.xml
    3. sitemap.xml
    4. xx.tar.gz
    5. xx.bak
  3. 确定网站采用的语言
  4. 前端框架 (如jQuery / BootStrap / Vue / React / Angular等)
  5. 中间服务器
    1. 如 Apache / Nginx / IIS 等
    2. 查看header中的信息
    3. 根据报错信息判断
    4. 根据默认页面判断
  6. Web容器服务器 (如Tomcat / Jboss / Weblogic等)
  7. 后端框架
    1. 根据Cookie判断
    2. 根据CSS / 图片等资源的hash值判断
    3. 根据URL路由判断,如wp-admin
    4. 根据网页中的关键字判断
    5. 根据响应头中的X-Powered-By
  8. CDN信息 (常见的有Cloudflare、yunjiasu)
  9. 探测有没有WAF,如果有,什么类型的
  10. 扫描敏感目录,看是否存在信息泄漏

搜索引擎利用

恰当地使用搜索引擎(Google/Bing/Yahoo/Baidu等)可以获取目标站点的较多信息。

搜索引擎处理流程

数据预处理

  1. 长度截断
  2. 大小写转化
  3. 去标点符号
  4. 简繁转换
  5. 数字归一化,中文数字、阿拉伯数字、罗马字
  6. 同义词改写
  7. 拼音改写

处理

  1. 分词
  2. 关键词抽取
  3. 非法信息过滤

搜索技巧

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