进行渗透测试之前,最重要的一步就是信息收集。在这个阶段,要尽可能地收集目标的信息。越了解测试目标,测试的工作就越容易。在信息收集中,最主要的就是收集服务器的配置信息和网站的敏感信息,包括域名及子域名信息、目标网站系统、CMS指纹、目标网站真实IP、开放的端口等
收集域名信息
知道目标的域名之后,要做的第一件事就是获取域名的注册信息,包括该域名的DNS服务器信息和注册人的联系信息等
Whois查询
Whois是一个标准的互联网协议,可用于收集网络注册信息,注册的域名、IP地址等信息。Which simple means,Whois就是一个用于查询域名是否已被注册以及注册域名的详细信息的数据库(如域名所有人,域名注册商,域名所有人的邮箱、电话、地址)。在Whois查询中,得到相关信息后,可以通过搜索引擎和社交网络挖掘出域名所有人的很多信息。对中小站点来说,域名所有人往往就是管理员
在线Whois查询常用网站
备案信息查询
收集敏感信息
Google的常用语法及其说明
关键字 | 说明 |
---|---|
site | 指定域名 |
inurl | URL中存在关键字的网页 |
intext | 网页正文中的关键字 |
filetype | 指定文件类型 |
intitle | 网页标题中的关键字 |
link | link:baidu.com即表示返回所有和baidu.com做了链接的URL |
info | 查找指定站点的一些基本信息 |
cache | 搜索Google里关于某些内容的缓存 |
利用Google搜索可以进行收集数据库文件、SQL注入、配置信息、源代码泄露、未授权访问和robots.txt等敏感信息
使用Burp Suite的Repeater功能同样可以获取一些服务器的信息,如运行 的Server类型及版本、PHP的版本信息等
收集子域名信息
子域名是二级域名,是指顶级域名下的域名
若主域难以进入,可先进入目标的某个子域
Layer子域名挖掘机
解压密码: ms08067.com
工具有很多,此工具使用方法比较简单,在域名对话框中直接输入域名就可以进行扫描
subDomainsbrute
此工具可以用小字典递归地发现三级域名、四级域名甚至是五级域名等不容易被探测到的域名。执行该工具命令:
python subDomainsbrute.py xxx.com
搜索引擎枚举
site:cuit.edu.cn
https://dnsdumpster.com
证书透明度公开日志枚举
证书透明度(CT)是证书授权机构(CA)的一个项目,证书授权机构会将每个SSL/TLS证书发布到公共日志中。一个SSL/TLS证书通常包含域名、子域名和邮件地址
可以用个https://crt.sh和https://censys.io
子域名爆破网站
IP反查绑定域名网站
收集常用端口信息
通过扫描服务器开放的端口以及从该端口判断服务器上存在的服务,就可以对症下药
文件共享服务端口
端口号 | 端口说明 | 攻击方向 |
---|---|---|
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服务 | 抓密码、代码执行 |
Web应用服务端口
端口号 | 端口说明 | 攻击方向 |
---|---|---|
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爆破、注入、反弹Sell |
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 | Easticsearch服务 | 远程执行 |
11211 | Memcache服务 | 未授权访问 |
512/513/514 | Linux Rexec服务 | 爆破、Rlogin登录 |
873 | Rsync服务 | 匿名访问、文件上传 |
3690 | Svn服务 | Svn泄露、未授权访问 |
50000 | SAP Management Concole | 远程执行 |
指纹识别
识别网站CMS、计算机操作系统、Web容器。只有识别出相应的Web容器或者CMS,才能查找与其相关的漏洞,然后才能进行相应的渗透操作
查找真实IP
CDN是什么
CDN即内容分发网络,主要解决因传输距离和不同运营商节点造成的网络速度性能低下的问题。Which simple means,就是一组在不同运营商之间的对接节点上的高速缓存服务器,把用户经常访问的静态数据资源(例如静态的html、css、js图片等文件)直接缓存到节点服务器上,当用户再次请求时,离用户近的节点直接响应给用户,当用户有实际数据交互时才会从远程Web服务器上响应,这样可以大大提高网站的响应速度及用户体验。
判断目标是否使用了CDN
ping
多地ping
绕过CDN寻找真实IP
- 内部邮箱源。ping目标自己的邮件服务器域名才有效
- 扫描网站测试文件,如phpinfo、test等,从而找到目标的真实IP
- 分站域名。分站不一定挂CDN
- 国外访问。国内的CDN往往只对国内用户的访问加速。通过国外在线代理网站,可能会得到真实的IP
- 查看域名的解析记录。也许目标很久以前没有用CDN,通过网站NETCRAFT来观察域名的IP历史记录,也可以大致分析出目标的真实IP段
- 如果目标有自己的App,可以尝试利用Fiddler或Burp Suite抓取App的请求,从里面找到目标的真实IP
- 绕过CloudFlare CDN查找真实IP。现在很多网站都使用CloudFlare提供的CDN服务,在确定了目标网站使用CDN后,可以尝试通过在线网站CloudFlareWatch对CloudFlare客户网站进行真实IP查询
-
收集敏感目录文件
DirBuster
此工具专门用于探测Web服务器的目录和隐藏文件
- 在Target URL输入框中输入要扫描的网址,扫描时将请求方法设置为”Auto Switch(HEAD and GET)”选项
- 设置线程数值,推荐在20~30之间,太大容易死机
- 设置扫描类型,如果使用个人字典扫描,则选择”List based brute force”选项
- 单击”Brower”选择字典
- 在Select starting options中选择”URL Fuzz”方式进行扫描。设置fuzzing时需要注意,在URL to fuzz里输入”/{dir}”。这里的{dir}是一个变量,用来代表字典中的每一行