信息收集往往作为渗透测试的第一步至关重要,良好的信息收集是渗透内网的基础。有人说过:渗透测试的本质是信息收集,那么我们从哪里开始信息收集呢?一般是通过域名或者IP地址来进行的。本次总结主要从域名信息采集、子域信息采集、端口信息采集、CMS指纹识别、敏感信息采集、CDN绕过等方面进行总结。
0x01 总体思路
收集域名信息的想法
1.根据域名,通过whois查询相关注册人信息(姓名、邮箱、电话号码)
2、根据注册人信息进行whois反向搜索,找出目标的其他域名信息,形成信息网络
3、根据域名通过搜索引擎和工具查询目标子域名
4、根据域名通过DNS域名解析获取目标域名的IP地址,并找到相同IP的网站
5.根据域名查询目标备案信息
6、根据IP地址查找目标IP的C网段信息,查找该C网段下是否存在目标的其他网站
7、根据IP地址查看域名信息
收集目标站点的想法
1、扫描目标站点的文件,查找是否存在各种敏感信息泄露
机器人.txt
.bak``.zip``.rar``.tar``.tar.gz(备份)
.git
.svn
.swp
.hg
DS_商店
2、扫描目标站点目录,可能存在目录遍历、各种未授权访问、其他Web应用和后台,以下目录可能存在未授权情况
Spring boot:/actuator``/env``/heapdump``/jolokia``/restart``/refresh``/trace
Jboss:/jmx-console
3.对目标站点进行端口扫描,可能存在高危端口和可爆破端口(包括ftp、ssh、snmp、rdp以及数据库相关端口等),以下端口可能是未授权端口
雷迪斯(6379)
mongodb(27017)
内存缓存(11211)
动物园管理员(2181)
桑巴(135-139, 445)
同步(873)
4. 对目标站点进行指纹识别,根据指纹识别结果查找相关漏洞。指纹识别结果包括目标站点使用的脚本语言(前端+后端)、数据库信息、中间件信息、框架信息、CMS信息等。
生存保护信息收集思路
1.如果目标站点有CDN,则需要绕过寻找真实IP
2、如果目标站点是WAF,那么攻击时需要被WAF识别并尝试绕过它
0x02 信息收集
1、域名信息收集
域名是互联网上某台计算机或计算机组名由一串以点分隔的名称组成的名称,主要用于在数据传输过程中标识该计算机的电子位置。一般计算机访问域名时,首先会搜索本地的host文件,找到该域名对应的IP地址(常用于本地域名部署和软件破解)。如果host文件不存在,则返回请求域名服务器获取IP地址。
whois查询
whois是一种用于查询IP、所有者等域名信息的传输协议。包括域名是否已注册、注册域名的详细信息(注册人、注册电子邮件地址、注册商等)。一般中小型网站的域名注册人都是站长,他们可以利用搜索引擎对whois查询的信息进行搜索,以获取更多域名注册人的个人信息。
1、web接口查询
https://whois.aliyun.com/
https://whois365.com/cn/
http://whois.chinaz.com/
http://whois.aizhan.com/
https://who.is/
2、通过命令行查询
whois [域名]
whois baidu.com
在线网站备案查询
网站备案信息是网站所有者根据国家法律法规向国家相关部门申请的备案。如果需要查询企业备案信息(单位信息、备案号、网站负责人、电子邮箱、联系电话、法人信息等)。一般只对国内域名有效。
1、web接口查询
http://www.beianbeian.com/
https://www.tianyancha.com/
https://icp.aizhan.com/
http://cha.fute.com/index/
https://www.qcc.com/
https://aiqicha.baidu.com/
https://beian.miit.gov.cn/#/Integrated/index
http://www.beian.gov.cn/portal/record查询
http://ip.tool.chinaz.com/
http://sh.gsxt.gov.cn/index.html
2、子域名信息收集
子域名是顶级域名的附加部分,例如map.baidu.com是baidu.com的子域名。子域名按照级别数分为二级子域名、三级子域名和多级子域名。通常面对主域的严密防守而不知所措,那么就可以采取迂回战术拿下子域名,无限接近主域。
1、子域名挖掘工具
(1) 子域暴力破解
https://github.com/lijiejie/subDomainsBrute
(2) 子列表3r
https://github.com/aboul3la/Sublist3r
(3) 一应俱全
https://github.com/shmiylty/OneForAll
(4) 层子域挖掘器
2、搜索引擎
(1) 百度、谷歌
站点:[域名]
网址:QQ.com
(2) 佛法
https://fofa.so/
域='[域名]'
域名='qq.com'
(3)钟馗之眼
https://www.zoomeye.org/
站点:[域名]
网址:QQ.com
3、web接口查询
http://tool.chinaz.com/子域名/
https://dnsdumpster.com/
https://www.t1h2ua.cn/tools/
https://hackertarget.com/find-dns-host-records/
https://x.threatbook.cn/
https://phpinfo.me/域名/
https://ruo.me/
4、证书透明度公开日志枚举
https://crt.sh/
https://censys.io/
3. CMS指纹识别
CMS的英文全称是Content management system,即内容管理系统。主要用于集中存储网站相关内容,具有分组管理和版本控制功能。常见的CMS有Dedecms、Discuz、Phpcms、Drupal、WordPress等,通过指纹识别,可以根据CMS的特性和版本,在网络和漏洞库中查找并攻击相应的漏洞。如果CMS是开源的,还可以通过源代码进行代码审计,找到漏洞,然后编写POC和EXP以备将来使用。
1、CMS指纹识别工具
https://github.com/wpscanteam/wpscan
https://github.com/urbanadventurer/WhatWeb
https://github.com/Dionach/CMSmap
https://github.com/Tuhinshubhra/CMSeeK
https://github.com/EASY233/手指
https://github.com/Ms0x0/Dayu
2、web接口查询
http://whatweb.bugscaner.com/look/
https://www.webscan.cc/
https://www.yunsee.cn/
http://finger.tidesec.net/
3、谷歌插件
沃帕利泽
4. 港口信息采集
端口是设备与外界通信的窗口。计算机中的端口对应着各种服务。常见的端口有21、22、23、3389等,默认对应ftp、ssh、talent、远程桌面服务。检测端口的开放可以帮助我们了解计算机提供了哪些服务,同时我们可以完成对服务的相应攻击。比如windows下开放445端口可能存在永恒之蓝漏洞,tomcat开放8009端口可能存在鬼猫漏洞,开放443端口可能存在心血漏洞。
常见端口漏洞信息表
端口号
服务
攻击方式
21/22/69
FTP/TFTP
拆除、嗅探、溢出、后门
22
SSH
爆炸,28 个退格键
23
远程登录
爆破、嗅探
25
邮件传输协议
邮件伪造、爆破
53
域名系统
DNS 区域传输、DNS 劫持、DNS 缓存中毒、DNS 欺骗、穿越防火墙的DNS 隧道
67/68
DHCP
劫持、欺骗
110
流行3
爆破
139
桑巴舞
漏洞利用、未经授权的访问、远程代码执行
143
图像映射
爆破
161
SNMP
爆破
第389章
LDAP
注入,未经授权
512/513/514
操作系统
直接使用rlogin
第873章
同步
未经授权的
1080
插座
爆破、内网渗透
第1352章
莲花
爆破、弱口令、信息泄露(源码)
第1433章
数据库管理系统
喷砂、喷射
1521
甲骨文
爆炸、喷射、TNS远程中毒
2049
网络文件系统
配置不当
2181
动物园管理员
未经授权的
3306
mysql
爆炸、注入、拒绝服务
3389
rdp
爆破、移后门
4848
玻璃鱼
爆破、控制台弱口令、认证绕过
5000
数据库/数据库
喷砂、喷射
5432
PostgreSQL
爆破、弱口令、注入、缓冲区溢出
5632
电脑随处
拒绝服务、代码执行
6379
雷迪斯
未经授权、爆破、弱密码
7001
网络逻辑
反序列化、控制台弱口令、控制台部署webshell
8069
扎比克斯
远程命令执行
8080-8090
网络
常见Web攻击、爆破、中间件漏洞、CMS版本漏洞
9090
网络圈
爆破、控制台弱口令、反序列化
9200/9300
弹性搜索
远程代码执行
11211
内存缓存
未经授权的
27017
蒙古数据库
未经许可爆破
常用的查看本机的开放端口命令
Linux:netstat -ntlp
Windows:netstat -ano
MacOS:netstat -ant
1、端口扫描工具
主要使用nmap和masscan这两个工具进行端口扫描(当然御剑也不错,但是MacOS系统本身并不常用)。 nmap的优点是扫描信息准确,masscan的优点是速度快,两者的大部分命令是通用的。可以组合起来达到非常好的端口扫描效果。
nmap -sV -Pn -p-1.1.1.1 -oX 结果.xml
Masscan --open --banners -p-1.1.1.1 --rate 1000 -oX result.xml
2、web接口查询
http://coolaf.com/tool/port
5. 敏感信息的收集
敏感信息包括压缩源代码、robots.txt、数据库文件、git文件、svn文件、phpinfo等,通过搜索这些敏感文件,可以找到对应的敏感信息,有时甚至可以直接获取后台登录账号密码进入后台。
1、目录扫描、文件扫描
常用的工具有dirsearch、dirmap、7kbscan、Royal Sword等。
https://www.fujieace.com/hacker/tools/yujian.html
https://github.com/7kbstorm/7kbscan-WebPathBrute
https://github.com/lijiejie/BBScan
https://github.com/H4ckForJob/dirmap
https://github.com/maurosoria/dirsearch
2、谷歌黑客语法
filetype:指定文件类型,如.bak、mdb、inc等。
site:指定域名
#例如查询Access数据库:filetype:mdb 'standard jet'(密码|用户名|用户|pass)
3、github信息收集
邮件配置信息泄露:site:github.com smtp@qq.com
数据库信息泄露:site:github.com sa 密码、site:github.com root 密码、site:github.com User ID='sa' 密码
svn信息泄露:site:github.com svn
综合信息泄露:site:github.com密码、site:github.com ftp密码、site:github.com密码、site:github.com内部
六、CDN绕过
CDN的英文全称是Content Delivery Network,即内容分发网络。主要依靠部署在各地的边缘服务器通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,减少网络拥塞,提高用户访问响应速度。关键是分发和存储技术。
如何判断CDN?
一般用ping命令来判断。根据CDN的原理,它主要依靠部署在各地的边缘服务器进行负载均衡和内容分发。各地部署的服务器IP肯定不同,可以尝试多地ping查看域名。是否部署CDN。
1、多地ping检测
通过不同地区和国家的主机Ping目标。如果您没有在其他地区或国家购买CDN服务,您将获得不同的IP地址以确认真实IP地址。
https://ping.chinaz.com/
http://ping.aizhan.com/
2、历史域名解析记录
通过域名解析记录,您可以查看以前的域名解析记录,其中可能包含真实的IP地址。
https://dnsdb.io/zh-cn/
https://x.threatbook.cn/
https://tools.ipip.net/cdn.php
https://viewdns.info/
3、子域名解析记录
如果子域名和主域名在同一台服务器上,并且子域名没有购买CDN服务,那么也可以确认真实IP地址。
4、邮件服务器查询
一般情况下,邮件服务器可能与Web服务器属于同一个IP,因此在邮件通信时可以查看邮件的源代码来查找真实的IP地址。
5、SSL/TLS证书查询
如果网站部署了SSL/TLS证书,该证书将会绑定到相关的IP地址。一旦网站安装了SSL证书,与服务器的通信就会被加密。虽然这看起来很安全,但当连接到端口443 上的IP 时,SSL 证书将会暴露。
https://myssl.com/
https://crt.sh/
https://censys.io/
https://developers.facebook.com/tools/ct/
https://google.com/transparencyreport/https/ct/
6、http数据包查看
(1)找到http header,放入censys中搜索参数。例如,cloudflare 的http 标头为80.http.get.headers.server:cloudflare。找到之后,再寻找其他特征,最后找到交集,得到真实IP。
(2)找到cookie值并使用F5 LTM解码方法。例如,如果cookie值为BIGipServerpool_8.29_8030=487098378.24095.0000,则提取第一部分中的十进制数487098378,然后将其转换为十六进制,然后从后到前为0a .88.08.1d,转换十进制数到10.136.8.29,得到最终的真实IP。
(3)查找网站的源代码和返回包,例如使用80.http.get.body和http.html进行搜索。
0x03 参考文章
https://www.cnblogs.com/qiudabai/p/9763739.html
https://www.freebuf.com/articles/web/248163.html
https://www.freebuf.com/articles/database/195169.html
https://www.freebuf.com/articles/web/280193.html