信息收集
作为渗透测试的第一步往往至关重要,好的信息收集是打穿内网的基础。曾有大佬言:渗透测试的本质就是信息收集
,那么我们从何开始信息收集呢?一般都是通过域名或IP地址进行展开,本小结主要从域名信息收集
、子域名信息收集
、端口信息收集
、CMS指纹识别
、敏感信息收集
、CDN绕过
这几大块进行归纳。
一、根据域名通过whois查询相关注册人信息(姓名、邮箱、电话)
二、根据注册人信息进行whois反查,查找出目标其他域名信息组成信息网
三、根据域名通过搜索引擎和工具查询目标子域名
四、根据域名通过DNS域名解析拿到目标域名的IP地址,查找同IP网站
五、根据域名查询目标备案信息
六、根据IP地址查找目标IP的C段信息,查找该C段下是否有目标的其他网站
七、根据IP地址反查域名信息
一、对目标站点进行文件扫描,查找是否存在各种敏感信息泄漏
robots.txt
.bak``.zip``.rar``.tar``.tar.gz
(备份)
.git
.svn
.swp
.hg
DS_Store
二、对目标站点进行目录扫描,可能存在目录遍历、各种未授权访问、其他web应用以及后台,以下目录可能存在未授权
Spring boot:
/actuator``/env``/heapdump``/jolokia``/restart``/refresh``/trace
阿里druid:
/druid
Jboss:
/jmx-console
三、对目标站点进行端口扫描,可能存在高危端口和可爆破端口(包括ftp、ssh、snmp、rdp、以及数据库相关端口等),以下端口可能存在未授权
redis(
6379
)mongodb(
27017
)Memcached(
11211
)ZooKeeper(
2181
)Samba(
135-139、445
)Rsync(
873
)
四、对目标站点进行指纹识别,从而根据指纹识别结果查找相关漏洞,指纹识别结果包括目标站点所用脚本语言(前端+后端)、数据库信息、中间件信息、框架信息、CMS信息等
一、如果目标站点存在CDN,那么需要绕过寻找真实IP
二、如果目标站点WAF,那么需要通过WAF识别并在攻击时尝试绕过
域名是由一串用点分隔的名字组成的Internet上的某一台计算机或计算机组名的名称,主要用于在数据传输时标识计算机的电子方位。一般情况下计算机访问域名会首先查找本地的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 [Domain Name]
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/recordQuery
http://ip.tool.chinaz.com/
http://sh.gsxt.gov.cn/index.html
子域名
是顶级域名的附加部分,如map.baidu.com是baidu.com的子域名。子域名根据级数的多少分为二级子域名、三级子域名和多级子域名。通常在面对主域的严密防御而手足无措时,那么可以采取迂回战术拿下子域名从而无限靠近主域。
1、子域名挖掘工具
(1)subDomainsBrute
https://github.com/lijiejie/subDomainsBrute
(2)Sublist3r
https://github.com/aboul3la/Sublist3r
(3)OneForAll
https://github.com/shmilylty/OneForAll
(4)Layer子域名挖掘机
2、搜索引擎
(1)百度、谷歌
site:[Domain Name]
site:qq.com
(2)fofa
https://fofa.so/
domain="[Domain Name]"
domain="qq.com"
(3)钟馗之眼
https://www.zoomeye.org/
site:[Domain Name]
site:qq.com
3、web接口查询
http://tool.chinaz.com/subdomain/
https://dnsdumpster.com/
https://www.t1h2ua.cn/tools/
https://hackertarget.com/find-dns-host-records/
https://x.threatbook.cn/
https://phpinfo.me/domain/
https://ruo.me/
4、证书透明度公开日志枚举
https://crt.sh/
https://censys.io/
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/Finger
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、谷歌插件
wappalyzer
端口
是设备与外界通信交流的窗口。在计算机中端口对应着各种服务,常见的端口有21、22、23、3389等,默认情况下分别对应ftp、ssh、talent以及远程桌面服务。探测端口的开放情况可以帮助我们了解计算机有具体提供了哪些服务,同时可以针对服务来完成相对应的攻击,如windows下开启了445端口那么可能存在永恒之蓝漏洞、tomcat开启了8009端口那么可能存在幽灵猫漏洞、443端口开启可能存在心脏滴血漏洞等。
常见端口漏洞信息表
端口号 | 服务 | 攻击方法 |
---|---|---|
21/22/69 | ftp/tftp | 爆破、嗅探、溢出、后门 |
22 | ssh | 爆破、28个退格 |
23 | telnet | 爆破、嗅探 |
25 | smtp | 邮件伪造、爆破 |
53 | dns | DNS区域传输、DNS劫持、DNS缓存投毒、 DNS欺骗、DNS隧道穿透防火墙 |
67/68 | dhcp | 劫持、欺骗 |
110 | pop3 | 爆破 |
139 | samba | 爆破、未授权、远程代码执行 |
143 | imap | 爆破 |
161 | snmp | 爆破 |
389 | ldap | 注入、未授权 |
512/513/514 | linux r | 直接使用rlogin |
873 | rsync | 未授权 |
1080 | socket | 爆破、内网渗透 |
1352 | lotus | 爆破、弱口令、信息泄漏(源代码) |
1433 | mssql | 爆破、注入 |
1521 | oracle | 爆破、注入、TNS远程投毒 |
2049 | nfs | 配置不当 |
2181 | zookeeper | 未授权 |
3306 | mysql | 爆破、注入、拒绝服务 |
3389 | rdp | 爆破、shift后门 |
4848 | glassfish | 爆破、控制台弱口令、认证绕过 |
5000 | sybase/db2 | 爆破、注入 |
5432 | postgreSQL | 爆破、弱口令、注入、缓冲区溢出 |
5632 | pcanywhere | 拒绝服务、代码执行 |
6379 | redis | 未授权、爆破、弱口令 |
7001 | weblogic | 反序列化、控制台弱口令、 控制台部署webshell |
8069 | zabbix | 远程命令执行 |
8080-8090 | web | 常见web攻击、爆破、中间件漏洞、 CMS版本漏洞 |
9090 | websphere | 爆破、控制台弱口令、反序列化 |
9200/9300 | elasticsearch | 远程代码执行 |
11211 | memcacache | 未授权 |
27017 | mongoDB | 爆破、未授权 |
常用的查看本机的开放端口命令
Linux: netstat -ntlp
Windows: netstat -ano
MacOS: netstat -ant
1、端口扫描工具
主要使用nmap和masscan这两款工具进行端口扫描(当然御剑也不错,不过本身是MacOS系统也不太常用),nmap的优势是扫描信息准确,而masscan的优势就是快速,两者命令大多通用可以结合达到很好的端口扫描效果。
nmap -sV -Pn -p- 1.1.1.1 -oX result.xml
masscan --open --banners -p- 1.1.1.1 --rate 1000 -oX result.xml
2、web接口查询
http://coolaf.com/tool/port
敏感信息
包括源代码压缩包、robots.txt、数据库文件、.git文件、.svn文件、phpinfo等。通过查找这些敏感文件可以找到相对应的敏感信息,有时候还能直接获取后台登录账号密码进入后台。
1、目录扫描、文件扫描
常用工具包括dirsearch、dirmap、7kbscan、御剑等
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" (password | username | user | pass)
3、github信息收集
邮件配置信息泄漏:site:github.com smtp @qq.com
数据库信息泄漏:site:github.com sa password、site:github.com root password、site:github.com User ID='sa' password
svn信息泄漏:site:github.com svn
综合信息泄漏:site:github.com password、site:github.com ftp password、site:github.com 密码、site:github.com 内部
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标头,再放入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来进行搜索。
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