《渗透测试之信息收集》
前言
最近学习渗透测试,先从最基本的开始吧。
在进行渗透测试之前,最重要的就是信息收集,我们要尽可能地收集目标的信息,越详细越好。
收集域名信息
知道目标的域名之后,我们要做的第一件事就是获取域名的注册信息,包括该域名的DNS服务器信息和注册人的联系信息等。
whois查询
whois是一个标准的互联网协议,可用于收集网络注册信息,注册的域名,IP地址等信息。
Kali下默认安装whois
whois 域名
1 | root@kali:~# whois sec-redclub.com |
在线whois查询的常用网站有:
爱站工具网
站长之家
VirusTotal
备案信息查询
主要针对国内网站,如果网站搭建在国外,则不需要备案。
常用的网站:
收集敏感信息
Google Hacking语法
关键字 | 说明 |
---|---|
Site | 指定域名 |
Intext | 网页正文中的关键字 |
Inurl | URL中存在关键字的网页 |
Filetype | 指定文件类型 |
Intitle | 网页标题中的关键字 |
link | link:baidu.com 即表示返回所有和baidu.com做了链接的URL |
Info | 查找指定站点的一些基本信息 |
cache | 搜索Google里关于某些内容的缓存 |
举个例子:
尝试搜索学校网站的后台,语法为:Site:edu.cn intext:后台管理
意思为搜索网页正文中含有“后台管理”并且域名后缀是edu.cn的网站
不仅是Google搜索引擎,还有百度、雅虎、Bing、Shodan等,语法大同小异。
还有,通过Burpsuite的Repeater也可以获取一些服务器的信息,如服务器的server类型及版本,PHP的版本信息等。
收集子域名信息
子域名也就是二级域名,是指顶级域名下的域名。如果我们的目标网络规模比较大,直接从主域入手难度太大,所有不如先从目标的某个子域入手,再想办法接近目标。
子域名检测工具
用于子域名检测的工具有很多,比如,Layer子域名挖掘机、wydomain、Sublist3r、dnsmaper、subDomainsBrute等等。
Layer子域名挖掘机
直接输入域名进行扫描
subDomainsBrute
可以用小字典递归地发现三级、四级,甚至五级域名等不容易被探测到的域名
执行命令:
python subDomainsbrute.py xxx.com
Sublist3r
列举多种资源,如在Google、Bing、Baidu等搜索引擎中查到的子域名,还可以列出VirusTotal、DNSdumpster等查到的子域名
搜索引擎枚举
可以利用Google语法搜索子域名,例如搜索Baidu的子域名,使用site:baidu.com
收集常用端口信息
通过扫描服务器开放的端口以及从该端口判断服务器上存在的服务,便于渗透目标服务器。
最常见的工具就是nmap,还有Masscan、ZMap等工具。
指纹识别
这里的指纹是指网站cms指纹识别、计算机操作系统及web容器的指纹识别等。
应用程序一般在html、js、css等文件中多多少少会包含一些特征码,比如WordPress在robots.txt中会包含wp-admin、首页index.php中包含generator=wordpress 3.xx,这个特征就是cms的指纹。当碰到这些特征时,就可以快速识别出该cms,所以叫指纹识别。
常见的cms有dedecms(织梦)、discuz、PHPWEB、PHPCMS、帝国、WordPress等。
常用的工具有:御剑web指纹识别、WhatWeb、WebRobo、轻量WEB指纹识别等。
除了这些工具,还有一些在线网站查询cms指纹识别
BugScaner: http://whatweb.bugscaner.com/look
云悉指纹: http://www.yunsee.cn/finger.html
whatweb: https://whatweb.net
查找真实IP
如果目标服务器不存在CDN,可以直接通过www.ip138.com获取目标的一些IP及域名信息。如果目标服务器存在CDN,如何让CDN找到目标服务器的真实IP呢???
目标服务器存在CDN
什么是CDN呢? CDN就是内容分发网络,主要解决因传输距离和不同运营商节点造成的网络速度性能低下的问题。
所以如果目标服务器使用了CDN,可以直接ping目标的域名,但得到的并不是真正的目标服务器,只是离我们最近的一台目标节点的CDN服务器,这就导致了我们无法直接得到目标的真实IP。
判断目标是否使用了CDN
通常会通过ping目标主域,观察域名的解析情况,以此来判断其是否使用了CDN。
还可以利用在线网站17CE(https://www.17ce.com)进行全国多地区的ping服务器,然后对比每个地区ping出的IP结果,查看这些IP是否一致,如果一样,极有可能不存在CDN;如果IP大多不太一样活规律性很强,可以尝试查询这些ip的归属地,判断是否存在CDN。
绕过CDN寻找真实IP
- 内部邮箱源
- 扫描网站测试文件
- 分站域名
- 国外访问
- 查询域名解析记录
- 如果目标网站有自己的APP,尝试抓取APP的请求
- 绕过CloudFlare CDN查找真实IP
验证获取的IP
找到真实IP以后,如何验证其真实性呢? 如果是web,直接用IP访问,看看相应页面是不是和访问域名返回的一样;或者在目标段较大的情况下,借助类似Masscan的工具批量扫描对于IP中所有开了80、443、8080端口的IP,逐个尝试IP访问。
收集敏感目录文件
探测web目录结构和隐藏的敏感文件,从中获取网站的后台管理页面、文件上传页面,甚至网站的源代码。
扫描工具主要有:DirBuster、御剑、wwwcan、dirmap等。