目录
1. 收集域名信息(获取域名的注册信息,包括域名的DNS服务器信息和注册人的联系信息等)
在信息收集中,最主要的就是收集服务器的配置信息和网站的敏感信息,其中包括域名及子域名信息、目标网站系统、CMS指纹、目标网站真实IP、开放的端口等。
1. 收集域名信息(获取域名的注册信息,包括域名的DNS服务器信息和注册人的联系信息等)
1.1 Whois查询
whois是一个标准的互联网协议,可用于收集网络注册信息,注册的域名,IP地址等信息。
在whois查询中,得到注册人的姓名和邮箱信息通常对测试个人站点非常有用,因为我们可以通过搜索引擎和社交网络挖掘出域名所有者的很多信息。对中小站点而言,域名所有人通常就是管理者。
1.2 备案信息查询
若网站搭建在其他国家,则不需要进行备案
查询网站:
ICP备案查询网:https://beian.miit.gov.cn/#/Integrated/index
天眼查:https://www.tianyancha.com/
2. 收集敏感信息
Google是世界上最强的搜索引擎之一,对于一位渗透测试者而言,它可以是一款黑客工具。我们可以通过构造特殊的关键字语法来搜索互联网上的一些相关敏感信息。下面列举一些常用语法及其说明:
关键字 | 说明 |
site | 指定域名 |
inurl | url中存在关键字的网页 |
Intext | 网页正文中的关键字 |
Filetype | 指定文件类型 |
Intitle | 网页标题中的关键字 |
link | link:baidu.com表示所有和baidu.com做链接的url |
Info | 查找指定站点的一些基本信息 |
cache | 搜索Google里关于某些内容的缓存 |
如下图搜索出以域名后缀为edu.cn 网页正文中由“后台管理” 的网站;(用burpsuite工具也可以获取网站的敏感信息
3. 收集子域名信息
子域名也是二级域名,是指顶级域名下的域名。当目标网络规模较大时,直接从主域入手显然不理智,这时就可以先进入目标的某个子域。如何尽可能多地搜集目标的高价值子域呢?如下:
3.1 子域名检测工具
主要有:K8、wydomain、Sublist3r、dnsmaper、subDomainsBrute、Maltego CE等。
3.2 搜索引擎枚举
可以利用Google语法搜索子域名,如下图所示:
3.3 第三方聚合应用枚举
很多第三方服务汇聚了大量DNS(Domain Name System 域名系统)数据集,可通过他们检索某个给定域名的子域名。只需要在搜索栏中输入域名,就可检索到相关的域名信息。
可以利用DNSdumpster网站 https://dnsdumpster.com/ 、在线DNS侦查和搜索工具挖掘出指定域潜藏的大量子域。
3.4 证书透明度公开日志枚举
证书透明度(certificate transparency CT)是证书授权机构(CA)的一个项目,证书授权机构会将每个SSL/TLS证书发布到公共日志中。一个SSL/TLS证书通常包含域名、子域名、邮件地址。查找某个域名所属证书的最简单的方法就是使用搜索引擎搜索公开的CT日志。
上面两个网站可以进行子域名枚举,ctr.sh效果如下图
此外,还有一些在线网站查询子域名,如子域名爆破网站(https://phpinfo.me/domain),IP反查绑定域名网站(http://dns.aizhan.com)等。
4. 收集常用端口信息
在渗透测试的过程中,对端口信息的收集是个重要过程,通过扫描服务器开放的端口以及从该端口判断服务器上存在的服务,可以便于我们渗透目标服务器。
所以我们需要关注常见应用的默认端口和在端口上运行的服务。
常见的端口扫描工具:Nmap,无状态端口扫描工具Masscan,ZMap和御剑高速TCP端口扫描工具。
常见的端口及其说明,以及攻击方向汇总如下:
端口号 | 端口说明 | 攻击方向 |
---|---|---|
21/22/69 | ftp/tftp文件传输协议 | 允许匿名的上传、下载、爆破和嗅探操作 |
2049 | Nfs服务 | 配置不当 |
139 | Samba服务 | 爆破、未授权访问、远程代码执行 |
389 | Ldap目录访问协议 | 注入、允许匿名访问、弱口令 |
端口号 | 端口说明 | 攻击方式 |
---|---|---|
22 | SSH远程连接 | 爆破、SSH隧道及内网代理转发、文件传输 |
23 | Telnet远程连接 | 爆破、嗅探、弱口令 |
3389 | Rdp远程桌面连接 | shift后门(需要Windows Server 2003以下的系统)、爆破 |
5900 | VNC | 弱口令爆破 |
5632 | PyAnywhere服务 | 抓密码、代码执行 |
端口号 | 端口说明 | 攻击方向 |
---|---|---|
80/443/8080 | 常见的Web服务端口 | Web攻击、爆破、对应服务器版本漏洞 |
7001/7002 | WebLogic控制台 | Java反序列化、弱口令 |
8080、8089 | Jboss/Resin/Jetty/Jenkins | 反序列化、控制台弱口令 |
9090 | WebSphere控制台 | Java反序列化、弱口令 |
4848 | GlassFish控制台 | 弱口令 |
1352 | Lotus domino邮件服务 | 弱口令、信息泄露、爆破 |
10000 | Webmin-Web |
弱口令 |
端口号 | 端口说明 | 攻击方向 |
---|---|---|
3306 | Mysql | 注入、提权、爆破 |
1433 | MSSQL数据库 | 注入、提权、SA弱口令、爆破 |
1521 | Oracle数据库 | TNS爆破、注入、反弹shell |
5432 | PostgreSQL数据库 | 爆破、注入、弱口令 |
27017/27018 | MongoDB | 爆破、未授权访问 |
6379 | Redis数据库 | 可尝试未授权访问、弱口令爆破 |
5000 | SysBase/DB2数据库 | 爆破、注入 |
端口号 | 端口说明 | 攻击方向 |
---|---|---|
25 | SMTP邮件服务 | 邮件伪造 |
110 | POP3协议 | 爆破、嗅探 |
143 | IMAP协议 | 爆破 |
端口号 | 端口说明 | 攻击方向 |
---|---|---|
53 | DNS域名系统 | 允许区域传送、DNS劫持、缓存投毒、欺骗 |
67/68 | DHCP服务 | 劫持、欺骗 |
161 | SNMP协议 | 爆破、搜集目标内网信息 |
端口号 | 端口说明 | 攻击方向 |
---|---|---|
2181 | Zookeeper服务 | 未授权访问 |
8069 | Zabbix服务 | 远程执行、SQL注入 |
9200/9300 | Elasticsearch服务 | 远程执行 |
11211 | Memcache服务 | 未授权访问 |
512/513/514 | Linux Rexec服务 | 爆破、Rlogin登录 |
873 | Rsync服务 | 匿名访问、文件上传 |
3690 | Svn服务 | Svn泄露、未授权访问 |
50000 | SAP Management Console | 远程执行 |
5. 指纹识别
这里的指纹是指网站CMS(Content Management System 内容管理系统)指纹识别、计算机操作系统及Web容器的指纹识别等。
应用程序一般在html、js、css等文件中多多少少会包含一些特征码,比如WordPress在robots.txt中会包含wp-admin、首页index.php中会包含generator=wordpress 3.xx,这个特征就是CMS的指纹。那么当碰到其他网站也存在此特征时,就可以快速识别出该CMS,所以叫作指纹识别。
在渗透测试中,对目标服务器进行指纹识别是相当有必要的,因为只有识别出相应的WEB容器或者CMS,才能查找与其相关的漏洞,然后才能进行相应的渗透操作。
CMS又称整站系统或文章系统。以前的网站内容管理一般靠手工维护,但应用CMS的话,开发者只需要给客户一个软件包,客户自己安装配置好,就可以定期更新数据来维护网站,节省了大量的人力物力。
常见的CMS有Dedecms(织梦)、Discuz、PHPWEB、PHPWind、PHPCMS、ECShop、Dvbbs、SiteWeaver、ASPCMS、帝国、Z-Blog、WordPress等。
代表工具有御剑Web指纹识别、WhatWeb、WebRobo、椰树、轻量Web指纹识别等,可以快速识别一些主流CMS。
一些CMS指纹识别查询的网站:
BugScaner:http://whatweb.bugscaner.com/look/
WhatWeb:https://www.whatweb.net/
6. 查找真实IP
在渗透测试过程中,目标服务器可能只有一个域名,那么如何通过这个域名来确定目标服务器的真实IP对渗透测试来说就很重要。如果目标服务器不存在内容分发网络CDN(Content Delivery Network)。可以直接通过www.ip138.com获取目标的一些IP及域名信息。这里主要讲解在以下几种情况下,如何绕过CDN寻找目标的真实IP。
6.1 目标服务器存在CDN
CDN即内容分发网络,主要解决因传输距离和不同运营商结点造成的网络速度性能低下的问题。说的简单点,就是一组在不同运营商之间的对接节点上的高速缓存服务器,把用户经常访问的静态数据资源(如静态的html、css、js图片等文件)直接缓存到节点服务器上,当用户再次请求的时候,会直接分发到离用户近的结点服务器上响应给用户,当用户有实际数据交互时才会从远程web服务器上响应,这样可以大大提高网站的响应速度及用户体验。
所以如果渗透目标购买了CDN服务,就可以直接ping目标的域名,但得到的并非真正的目标web服务器,只是离我们最近的一台目标节点的CDN服务器,这就导致了我们没法直接得到目标的真实IP段范围。
6.2 判断目标是否使用了CDN
通常会通过ping目标主域,观察域名解析情况,以此来判断是否使用了CDN。
还可以利用在线网站17CE(https://www.17ce.com/)进行全国多地区的ping服务器操作,然后对比每个地区ping出的IP结果:一致极有可能不存在CDN;如果大多不太一样或者规律性很强,可以尝试查询IP的归属地,判断是否存在CDN。
6.3 绕过CDN寻找真实IP
在确认目标确实使用了CDN后,就需要绕过CDN寻找目标的真实IP,下面介绍常规的方法:
- 内部邮箱源。一般的邮件系统都在内部,没有经过CDN的解析,通过目标网站用户注册或者RSS【RSS简易信息聚合(Really Simple Syndication)是一种描述和同步网站内容的格式,是使用最广泛的XML应用】订阅功能,查看邮件、寻找邮件头中的邮件服务器域名IP,ping这个邮件服务器的域名,就可以获得目标的真实IP(必须是目标自己的邮件服务器,第三方或者公共邮件服务器是没有用的)。
- 扫描网站测试文件,如phpinfo、test等,从而找到目标的真实IP。
- 分站域名。很多网站主站的访问量会比较大,所以主站都是挂CDN的,但是分站可能没有挂CDN,可以通过ping二级域名获取分站IP,可能会出现分站和主站不是同一个IP但在同一个C段下面的情况,从而能够判断出目标的真实IP段。
- 国外访问。国内的CDN往往只对国内用户的访问加速,而国外的CDN就不一定了。因此。通过国外在线代理网站App Synthetic Monitor(https://asm.ca.com/en/ping.php)访问,可能会得到真实的IP。
- 查询域名的解析记录。也许目标很久以前并没有用过CDN,所以可以通过网站NETCRAFT(https://www.netcraft.com/)来观察域名的IP历史记录,也可以大致分析出目标的真实IP段。
- 如果目标网站有自己的APP,可以尝试利用Fiddle或Burpsuite抓取App的请求,从里面找到真实的IP地址。
- 绕过CloudFlare CDN查找真实IP。现在很多网站都使用CloudFlare提供的CDN服务,在确定了目标网站使用CDN后,可以先尝试通过在线网站CloudFlareWatch(http://ww7.crimeflare.us/#box)对 CloudFlare客户网站进行真实IP查询。
6.4 验证获取的IP
找到目标的真实IP后,如何验证其真实性呢?——如果是web,最简单的验证方法就是直接尝试用IP访问,看看响应的页面是否和访问域名返回的一样;或者在目标段比较大的情况下,借助类似Masscan的工具批扫描对应IP段中所有开了80、443、8080端口的IP,然后逐个尝试IP访问,观察响应结果是否为目标站点。
7. 收集敏感目录的文件
在渗透测试中,探测Web目录结构和隐藏的敏感文件是一个必不可少的环节,从中可以获取网站的后台管理界面、文件上传界面,甚至可以扫描出网站的源代码。
针对网站目录的扫描主要有DirBuster、御剑后台扫描珍藏版、wwwscan、Spinder.py(轻量级快速单文件目录后台扫描)、Sensitivefilescan(轻量级快速单文件目录后台扫描)、Weakfilescan(轻量级快速单文件目录后台扫描)等工具。
DirBuster下载链接:https://pan.baidu.com/s/1FNtmKUzwoGpmwsjzGWF7Aw 提取码: b7gv
除此之外,还有一些在线工具站,如WebScan(https://www.webscan.cc/)