第一章:渗透测试之信息收集
信息收集主要内容:服务器配置信息、网站敏感信息。
其中包括:域名及子域名信息、目标网站系统、CMS指纹、目标网站的真实IP、开放端口等。
总之:只要与目标网站有关就尽量去搜集。
收集域名信息
目标域名->域名的注册信息
域名注册信息:包括域名的DNS服务器信息、注册联系人的信息。
Whois查询
Whois是一个标准的互联网协议,可用于收集网络注册信息、注册的域名、IP地址等信息。kali系统中Whois默认安装用法如下
whois baidu.com
在线Whois查询的常用网站:
爱站工具之家:https://whois.aizhan.com
站长之家:https://ping.chinaz.com/
VirusTotal:https://www.virustotal.com
可以查到的信息:域名服务商,域名拥有者及他们的邮箱、电话、地址等。
备案信息查询
但凡国内的合法网站都要在工业和信息化部政务服务平ICP/IP地址/域名信息备案管理系统做备案 。
ICP备案网查询网:https://beian.miit.gov.cn
天眼查:https://www.tianyancha.com
收集敏感信息
Google是世界上最强的搜索引擎(之一),绝佳的工具。
Google常用语法及其说明
关键字 | 说明 |
---|---|
Site | 指定域名 |
Inurl | URL中存在的关键字的网页 |
Intext | 网页正文中的关键字 |
Filetype | 指定文件类型 |
Intitle | 网页标题中的关键字 |
link | link:baidu.com表示返回所有和baidu.com做了链接的URL |
Info | 查找指定站点的一些基本信息 |
cache | 搜索Google里关于某些内容的缓存 |
例子:
“site:edu.cn intext:后台管理”:搜索网页正文中含有“后台管理”并且域名后缀为“edu.cn”的网站。
Burp Suite
Burp Suite的Repeater可以获取一些服务器信息,运行的Server类型版本、PHP的版本信息等。
扩展
Google还可以用来收集数据库文件、SQL注入、配置信息、源代码泄露、未授权访问、和robots.txt等敏感信息。 baidu、bing、yahoo、shodan、fofa、鹰图等大同小异。
Github上可以寻找相关敏感信息,数据库连接信息、邮箱密码、uc-key、阿里的osskey,甚至是泄露的源码等。
国家信息安全漏洞库:http://www.cnnvd.org.cn
CNVD工控系统行业漏洞:http://ics.cnvd.org.cn/
CVE中文漏洞信息库:http://cve.scap.org.cn/
ICS-CERT:https://ics-cert.us-cert.gov/advisories
绿盟科技-安全漏洞:http://www.nsfocus.net/index.php?act=sec_bug
值得推荐的威胁情报平台:https://blog.youkuaiyun.com/jayjaydream/article/details/112569549
收集子域名信息
**子域名:**也就是二级域名,指顶级域名下的域名。规模较大的目标网络,主域名一定时重点防护区域,从子域名开始迂回接近目标乃是明智的选择。
子域名检测工具
Layer子域名挖掘机、Sublistr3r和subDomainsBrute。
Layer子域名挖掘机:
使用方法简单,直接输入域名,显示子域名、解析IP、CDN列表、web服务器状态和网站状态。
Sublistr3r:
可以列举多种资源,如在Google、Yahoo、Bing、Baidu和Ask等搜索引擎中可以查到的子域名,还可以列出Netcraft、VirusTotal、TreatCrowd、DNSdumpster和Reverse DNS查到的子域名。
subDomainsBrute:
特点是可以用小字典递归发现三级、四级域名等不易探测的域名;
python subDomainsBrute.py xxx.com
搜索引擎枚举
利用Google语法搜索子域名:“site:baidu.com”
第三方聚合应用枚举
很多第三方服务汇聚大量DNS数据集,可以头通过它们检索,只需在搜索栏中输入域名,就可以检索到相关的域名信息。
也可以利用DNSdumpster网站、在线DNS侦查和搜索的工具。
hydra/可视化xHydra
hydra
-
-R 继续上一次借着破解
-
-S 采用SSL链接
-
-s PORT 指定端口
-
-l LOGIN 指定用户
-
-L FILE 指定用户名字典
-
-p PASS 小写指定密码破解,少用,一般采用密码字典
-
-P FILE 大写,指定密码字典
-
-e ns 可选项,n:空密码试探,s:使用指定用户名和密码试探
-
-C FILE 使用冒号分隔,例如:”登录名:密码“ 代替-L/-P参数
-
-M FILE 指定目标列表文件一行一条(指定多个IP时使用)
-
-o FILE 指定结果输出文件
-
-f 在使用-M参数后,找到一对登录名或密码时候终止破解
-
-t TASK 同时运行的线程数,默认为16
-
-w TIME 设置最超时时间,单位秒,默认30
-
-v /-V 显示详细过程
hydra -L /home/kali/user.txt -P /home/kali/password.txt ssh://192.168.66.131 -vV -f -t 15
证书透明度公开日志枚举
证书透明度(Certificate Teansparency,CT)是证书授权机构(CA)的一个项目,证书授权机构会将每个SSL/TLS证书发布到公共日志中。一个SSL/TLS证书通常包含域名、子域名和邮件地址。查找某个域名所属证书所属证书最简单的方法是使用搜索引擎搜索一些公开的CT日志。
推荐
https://phpinfo.me/domain
https://search.censys.io(可查证书和主机)
IP反查绑定域名:https://dns.aizhan.com/
收集常用端口信息
常见端口扫描工具:Nmap
无状态端口扫描工具:Masscan、ZMap、御剑高速TCP端口扫描工具
常见端口及说明
文件共享服务端口
端口号 | 端口说明 | 攻击方向 |
---|---|---|
21/22/69 | Ftp/Tftp文件传输协议 | 允许匿名的上传、下载、爆破和嗅探操作 |
2049 | Nfs服务 | 配置不当 |
139 | Samba服务 | 爆破、未授权访问、远程代码执行 |
389 | Ldap目录访问协议 | 注入、允许匿名访问、弱口令 |
远程连接服务端口
端口号 | 端口说明 | 攻击方向 |
---|---|---|
22 | SSH远程连接 | 爆破、SSH隧道及内网代理转发、文件传输 |
23 | Telnet | 爆破、嗅探、弱口令 |
3389 | Rdp远程桌面 | Shift后门(Windows Sever2003以下系统)、爆破 |
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 | [Loutus domino](https://baike.baidu.com/item/Lotus Domino%2FNotes/657628?fr=aladdin)邮件服务 | 弱口令、信息泄露、爆破 |
10000 | Webmin-Web控制面板 | 弱口令 |
数据库服务端口
端口号 | 端口说明 | 攻击方向 |
---|---|---|
3306 | MySQL | 注入、提权、爆破 |
1433 | MSSQL数据库 | 注入、提权、SA弱口令 |
1524 | 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服务 | Snv泄露、未授权访问 |
50000 | SAP Management Console | 远程执行 |
指纹识别
**指纹:**指网站的CMS指纹识别、计算机操作系统及Web容器的指纹识别等。
**CMS指纹:**应用程序一般在html、js、css、等文件中多多少少都会包含一些特征码,比如WordPress在robots.txt中会包含generator=wordpress 3.xx,这个特征码就是这个CMS的指纹。当碰到其他网站也存在此特征码时,就可以快速识别出CMS,所以叫做指纹识别。
**作用:**渗透测试中,只有识别出相应的Web容器或者CMS,才能查找与其相关的漏洞。
CMS
CMS(Content Management System)又称整站系统或文件系统。开发者只需要给可会一个软件包,客户自己安装配置好,可以定期更新数据来维护网站,节省大量人力物力。
**常见CMS:**Dedecms、Discuz、PUPWEB、PHPWind、PHPCMS、ECShop、Dvbbs、SiteWeaver、ASPCMS、帝国、Z-Blog、WordPress等。
指纹识别工具
**代表工具:**御剑Web指纹识别、WhatWeb、WebRobo、椰树、轻量WEB指纹识别得等,可以快速识别一些主流CMS。
查询网站:
BugScaner:http://whatweb.bugscaner.com/look
云悉指纹:http://www.yunsee.cn/finger.html
查找真实IP
若目标服务器无CDN,可以直接通过www.ip138.com获取目标的一些IP及域名信息。
目标服务器存在CDN
CDN(内容分发网络)
如果目标购买了CDN服务,则无法无法直接访问真正的目标,访问的只是距离最近的一台目标节点的CDN服务器。
判断目标是否使用了CDN
通常会通过ping目标主域,观察域名解析情况,由此判断是否使用了CDN。
可以利用在线网站17CE:https://www.17ce.com 进行全国多地区的ping服务器操作,然后对比每个地区ping的IP结果是否一致,若都是一样的,则极有可能不存在CDN;若大多不一样或者规律性很强,可以尝试查询这些IP的归属地,以判断是否存在CDN。
绕过CDN寻找真实IP
内部邮箱资源
一般邮件系统都在内部,没有经过CDN的解析,通过目标网站用户注册或者RSS订阅功能,查看邮件、寻找邮件源头中的邮件服务器域名IP,ping这个邮件服务器的域名就可以获取目标的真实IP(必须时目标自己的邮件服务器,第三方或公共邮件服务器没用)。
扫描网站测试文件
如phpinfo、test等
分站域名
很多网站主站的访问量会比较大,所以主站都是挂CDN的,但分站可能没有挂,可以平二级域名获取分站IP,可能会出现分站和主站不是同一个IP但在同一个C段下的情况,可由此判断出目标的真实IP。
国外访问
国内的CDN往往只针对国内用户,而国外的CDN就不一定了。通过国外在线代理网站访问,可能会得到真实的IP。在线代理服务器网站大全
查询域名的解析记录
也许目标很久以前没有用过CDN,可以通过网站NETCRAFT来观察域名IP历史记录,也可以大致分析出目标的真实IP。
查看 IP 与 域名绑定的历史记录,可能会存在使用 CDN 前的记录,相关查询网站有:
- https://dnsdb.io/zh-cn/
- https://x.threatbook.cn/
- http://toolbar.netcraft.com/site_report?url=
- http://viewdns.info/
如果目标网站有自己的App
可以尝试利用Fiddler或Burp Suite抓取App的请求,从中找到目标的真实IP。
验证获取的IP
找到真实的IP以后,最简单的验证方法是直接访问IP,看响应页面和访问域名时的页面是否相同;或者在目标段比较大的情况下,借助类似于Masscan的工具批量扫描对应IP段中所有开了80、443、8080端口的IP,然后逐个尝试访问,观察响应结果是否为目标站点。
收集敏感目录文件
探测Web目录和隐藏的敏感文件必不可少,从中可以获取网站的后台管理页面、文件上传页面,甚至时网站的源码。
**目录扫描工具:**DirBuster(kali自带)、御剑后台扫描珍藏版、wwwscan,轻量级快速单文件目录后台扫描:Spinder.py、Sensitivefilescan、Weakfilesacan。
**在线工具网站:**WebScan:http://www.webscan.cc
DirBuster
Target URL输入框输入要扫描的网址;请求方法选择“Auto Switch(HEAD and GET)”;
线程设置20~30,太大容易死机;若使用个人字典扫描选择“List based brute force“,并单击”Browse“选择自己的字典;
Select staring option中选择URL Fuzz方式进行扫描,
例子:目标https://xxx.com/admin/,则在URL to fuzz中填”/admin/{dir}.php“,其意思是扫描admin目录下所有php文件。
社会工程学
人是最大的漏洞🐕
攻击者可以从一名员工的口中挖掘出本应该是秘密的信息
假设攻击者对一家公司进行渗透测试,正在手收集目标的真实IP阶段,此时可以利用收集到的这家公司的某位销售人员的电子邮箱。
首先,给这位销售发送邮件,假装对某个产品很感兴趣,显然销售会回复邮件,这样可以通过分析邮件头来收集真实IP和内部邮件服务器的相关信息。
进一步应用社会工程学,假设已经收集了目标人物的邮箱、QQ、电话、姓名,域名服务商,并且通过爆破或撞库获取到邮箱密码;此时可以冒充目标任务,要求客服人员协助重置域管理密码,甚至技术人员会帮着重置密码,从而拿下域管理控制台,然后做域劫持。
除此以外,还可以利用社工库查询想要的信息。
工具推荐
kali中的:theHarvester、DirBuster、hydra/可视化xHydra(穷举爆破神器)
theHarvester -d 域名.com -l 10 -b baidu --filename 1.xml
御剑扫描后台,layer子域名扫描,Pker
QQ群,github也可以查信息,能用的工具方法多了去了