一般来说,在做渗透测试之前,都会进行信息收集,尽可能多的获取目标的信息,这对我们的渗透工作会帮助很大。信息收集一般有域名及子域名信息、目标网站系统、指纹信息、端口信息等等。
1、域名信息
获得目标域名之后,第一步应该先获得该域名的注册信息、注册人信息等等。
1.1、Whois查询
用于收集网络注册信息、注册域名、IP地址等信息。
kali已经安装有whois工具,可以直接通过whois命令查询
nslookup、dig查询(DNS域名信息查询工具)
命令:dig xxx.com,nslookup xxx.com
两者不同的是nslookup获取到的是DNS服务器上cache找到的结果,而dig则是查询到的精确结果
常用的在线查询网站:
1.2、备案信息查询
国内的网站的所有者都需要向国家有关部门申请备案,因此通过备案信息查询也可以查询到域名的一些信息。
常用的网站有:
2、收集敏感信息
2.1、Google Hacking
Google是很好的一门收集敏感信息的搜索引擎,通过Google Hacking语法,可以搜索到泄露的信息。
下面列举了部分常用的语法:
语法 | 描述 |
---|---|
intitle | 搜索网页标题中包含有特定字符的网页 |
inurl | 搜索包含有特定字符的URL |
filetype | 搜索指定类型的文件。比如输入filetype:txt,将返回所有以txt结尾的文件url |
site | 找到与指定网站有联系的URL |
intext | 把网页中的正文内容中的某个字符做为搜索条件 |
cache | 搜索google里关于某些内容的缓存 |
link | 搜索所有和指定url做了链接的url |
info | 查找指定站点的一些基本信息 |
其他搜索引擎也可以用这种方法,语法基本无差
2.2、GitHub
GitHub上面也可以利用GitHub语法去进行搜索,可以找到部分敏感信息,比如代码泄露、账号密码之类的。
基本的搜索语法有:
语法 | 描述 |
---|---|
in:name xxxx | 搜索仓库标题含有xxxx |
in:descripton xxxx | 搜索仓库描述含有xxxx |
in:readme xxxx | 搜索readme文件含有xxxx |
stars:>3000 | 搜索stars大于3000的仓库 |
stars:1000…3000 | stars数量大于1000小于3000的仓库 |
forks:>1000 | forks数量大于1000的搜索关键字 |
size:>=5000 | 仓库大于5000k(5M)的搜索仓库 |
pushed:>2019-02-12 | 发布时间大于2019-02-12的仓库 |
created:>2019-02-12 | 创建时间大于2019-02-12的仓库 |
mirror:true(false) | 是否是镜像仓库 |
user:jack | 用户名为"jack"的仓库 |
license:apache-2.0 | 仓库的 LICENSE为"apache-2.0" |
language:java | 使用"java"语言的仓库 |
is:public | 公开的仓库 |
is:private | 匹配有权限的私有仓库 |
topic:5 | 匹配拥有5个topic的仓库 |
另外也有其他方法可以查看敏感信息,比如发包,看返回包,可以看到一些服务器信息。
3、子域名信息
子域名也就是二级域名,一般情况下,一个网站的主站防守肯定是最严格的,因此直接硬干主站不太理智,所以更多的是去测试那些二级域名,甚至是三级域名、四级域名。因此我们需要收集很多的子域名,方便我们进行渗透。
3.1、子域名检测工具
(1)Layer子域名挖掘机
(2)Sublist3r
也是一款挺不错的子域名爆破工具
(3)subDomainsBrute
这一款可以递归发现三级域名、四级域名等不容易被探测到的域名
3.2、搜索引擎
利用Google Hacking查询子域名,前面有说过语法,这里就不多说了。
3.3、证书透明度公开日志枚举
证书透明度是证书授权机构的一个项目,证书授权机构会将每个SSL或者TLS证书发布到公共日志中去,证书一般都会包含域名、子域名等信息。
crt.sh:https://crt.sh/
censys:https://censys.io/
4、开放端口收集
端口扫描是最常见的信息收集方法。最常见的扫描工具有nmap、御剑端口扫描工具。
nmap除了可以扫描端口,还可以扫描存活主机、指纹识别等,是一款很强大的扫描工具,具体怎么扫描网上也有很多教程。
本文所说的信息收集方法皆以kali作为前提
5、指纹识别
这里的指纹识别指的是CMS指纹识别,操作系统以及web容器的指纹识别。
CMS:快速搭建网站的管理系统。在早期的web系统中,我们要发布一篇文章是相对比较困难的,需要有专业的web人员来编写,十分不方便,后来就有了CMS系统来帮助开发和搭建。
常见的CMS有:Dedecms、phpweb、帝国、WordPress等等
其他的CMS可以参考这篇文章:https://www.cnblogs.com/sym945/p/11715984.html
代表工具有:御剑指纹识别、whatweb,轻量指纹识别等等。
也有一些在线网站,比如:
BugScanner:http://whatweb.bugscaner.com/look/
whatweb:https://whatweb.net/
6、CDN
CDN:内容分发网络。简单来说就是在各地都有节点服务器,访问的时候就近去附近的节点获取资源,主要是为了改善网络加载时间,减少服务器负载。但是这样就会造成我们没法直接去得到真实的ip。
6.1、判断是否使用了CDN
一般可以用多地ping的方式来判断是否使用了CDN。
多地ping:https://www.17ce.com/
http://ping.chinaz.com/tb.sz.gov.cn
6.2、寻找真实ip
二级域名:可以通过ping二级域名来获取分站ip,分站可能没有挂cdn,因此可以大概推断出真实ip是在哪个网段
国外访问:可以通过代理国外访问,一般cdn是针对国内,国外没有效果。可以通过国外在线代理ping来访问(https://asm.ca.com/en/ping.php)。
手机APP:有APP的可以用brup抓包获得真实ip
网络空间搜索引擎:fofa
7、收集敏感目录
收集敏感目录文件是渗透测试中必不可少的一个步骤,常用的目录扫描工具有:
dirbuster,御剑后台扫描,wwwscan,nikto等