本文只用作学习研究,请勿非法使用!!!
本文只用作学习研究,请勿非法使用!!!
本文只用作学习研究,请勿非法使用!!!
渗透测试之信息收集:
信息收集是渗透测试中最重要的一步。在此阶段,要尽可能的收集目标组织的信息。知己知彼,百战不殆。越是了解测试目标,测试的工作就越容易。在信息收集中,最重要的是收集服务器的配置信息和网站的敏感信息。包括域名及子域名信息、目标网站系统、CMS指纹、目标网站真实IP、开放的端口等。只要与网站相关的信息,我们都应该去尽量的收集
收集域名信息:
知道目标的域名后,第一件事就是获取域名的注册信息,包括该域名的DNS服务器信息和注册人的联系信息等
Whois查询:
Whois:标准的互联网协议,可用于收集网络注册信息、注册的域名、IP地址等信息。主要用于查询域名是否已被注册以及注册域名的详细信息的数据库(如域名所有人、域名注册商等)。在Whois查询中,得到注册人的姓名和邮箱对测试个人站点非常有用,因为可用通过搜索引擎和社交网络挖掘出域名所有人的很多信息。通常来说,对中小站点而言,域名所有人就是管理员
Kali系统默认安装:whois www.baidu.com
在线Whois查询网站:
- 爱站工具网:http://whois.aizhan.com
- 站长之家:http://whois.chinaz.com
- VirusTotal:http://www.virustotal.com
可通过这些网站查询域名的相关信息,如域名服务商、域名拥有者以及他们的邮箱、电话、地址等
备案信息查询:
网站备案是根据国家法律法规规定,需要网站的所有者向国家有关部门申请备案,是国家信息产业部对网站的一种管理,主要是为了防止在网上从事非法的网站经营活动的发生。主要针对国内网站,如果网站搭建在其他国家,则不需要备案
常用网站:
- ICP备案查询网:https://www.beianx.cn/
- 天眼查:http://tianyancha.com
收集敏感信息:
可使用Google,Google是世界上最强的搜索引擎之一,可通过构造特殊的关键字语法来搜索互联网上的相关敏感信息,也可以很轻松的得到想要的信息,如收集数据库文件、SQL注入、配置信息、源代码泄露、未授权访问和robotx.txt等敏感信息
其他搜索引擎:百度、雅虎、Bing、Shodan,语法大同小异
语法:
- site:指定域名
- inurl:URL中存在关键字的网页
- intext:网页正文中的关键字
- filetype:指定文件类型
- intitle:网页标题中的关键字
- link:如link:baidu.com表示返回所有和baidu.com做了链接的URL
- info:查找指定站点的一些基本信息
- cache:搜索Google里关于某些内容的缓存
- site:edu.cn intext:后台管理:搜索网页正文中含有"后台管理"并且域名后缀是edu.cn的网站
还可通过Burp Suite的Repeater功能获取一些服务器的信息,如运行的Server类型及版本、PHP的版本信息等。针对不同的Server,可以利用不同的漏洞进行测试
除此之外,还可以尝试在Github上寻找相关敏感信息,如数据库连接信息、邮箱密码、uc-key(UC客户端与服务端通信的通信密钥)、阿里的osskey(分布式存储的key),有时还可以找到泄露的源代码等
收集子域名信息:
子域名:二级域名,指顶级域名下的域名。如果目标网络规模比较大,直接从主域入手很难找到漏洞,因为这种规模的目标,一般主域都是重点防护区域,所以可以才气迂回战术,先进入目标的某个子域,然后想办法接近真正的目标
子域名检测工具:
Layer子域名挖掘机、K8、wydomain、Sublist3r、dnsmaper、subDomainsBrute、Maltego CE等。
Layer子域名挖掘机:在域名对话框输入域名就可以进行扫描,显示界面有域名、解析IP、CDN列表、WEB服务器和网站状态,这些很重要
subDomainsBrute:可以用小字典递归的发现三级域名、四级域名,甚至五级域名等不容易被探测到的域名,使用方法:python subDomainsbrute.py baidu.com
Sublist3r:比较常用,可以列举多种资源,如在Google、Yahoo、Bing、Baidu和ASK等搜索引擎中可查到的子域名,还可以列出Netcraft、VirusTotal、ThreatCrowd、DNSdumpster和Reverse DNS查到的子域名
搜索引擎枚举:
可利用Google语法搜索子域名,如搜索百度旗下的子域名:“site:baidu.com”
第三方聚合应用枚举:
很多第三方服务汇聚了大量DNS数据集,可通过他们检索某个给定域名的子域名。只需要在其搜索栏中输入域名,就可以检索到相关的域名信息
也可以利用DNSdumpster网站(https://dnsdumpster.com/)、在线DNS侦察和搜索的工具挖掘出指定域潜藏的大量子域
证书透明度公开日志枚举:
证书透明度(Certificate Transparency,CT)是证书授权机构(CA)的一个项目,证书授权机构会将每个SSL/TLS证书发布到公共日志中。一个SSL/TLS证书通常包含域名、子域名和邮件地址,这些也经常成为攻击者非常希望获得的有用信息。查找某个域名所属证书的最简单的方法就是使用搜索引擎搜索一些公开的CT日志
- https://crt.sh
- https://censys.io
其他在线网站查询子域名:
- 子域名爆破网站:https://phpinfo.me/domain
- IP反查绑定域名网站:http://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 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爆破、注入、反弹shell |
5432 | PostgreSQL数据库 | 爆破、注入、弱口令 |
2701/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 | 远程执行 |
指纹识别:
指网站CMS指纹识别、计算机操作系统及web容器的指纹识别等
应用程序一般在HTML、JS、CSS等文件中多多少少会包含一些特征码,如WordPress在robots.txt中会包含wp-admin、首页index.php中会包含generator=wordpress 3.x,这个特征就是这个CMS的指纹,当碰到其他网站也存在此特征时,就可以快速识别出该CMS,所以也叫指纹识别
在渗透测试中,对目标进行指纹识别很有必要,因为只有识别出相应的WEB容器或者CMS,才能查找与其相关的漏洞,然后才能进行相应的渗透操作
CMS(Content Management System):整站系统或文章系统
常见的CMS:Dedecms(织梦)、Discuz、PHPWEB、PHPWind、PHPCMS、ECShop、SiteWeaver、ASPCMS、帝国、Z-Blog、WordPress等
- 工具:
- 御剑WEB指纹识别
- WhatWeb
- WebRobo
- 椰树
- 轻量WEB指纹识别
- 在线网站:
查找真实IP:
目标服务器存在CDN:
CDN:内容分发网络,主要解决因传输距离和不同运营商节点造成的网络速度性能低下的问题。简单地说,就是一组在不同运营商之间的对接节点上的高速缓存服务器,把用户经常访问的静态数据资源(例如静态的HTML、CSS、JS图片等文件)直接缓存到节点服务器上,当用户再次请求时,会直接分发在离用户近的节点服务器上响应给用户,当用户有实际数据交互时才会从远程web服务器上响应,这样就可以大大提高网站的响应速度及用户体验
如果目标购买了CDN服务,可以直接ping目标的域名,但得到的并不是真实的IP地址,只是离我们最近的一台目标节点的CDN服务器,所以会导致没法直接得到目标的真实IP段范围
判断目标是否使用了CDN:
- 直接ping:
- 观察域名的解析情况,借此判断是否使用了CDN(比如出现其他域名,或者出现子域名等现象)
- 在线网站:
- https://www.17ce.com/
- 如果IP一致,证明不存在CDN
- 如果出现很多IP或者IP规律性很强,证明存在CDN,可以尝试查询这些IP的归属地,判断是否存在CDN
- https://www.17ce.com/
绕过CDN寻找真实IP:
- 内部邮箱源:
- 一般的邮件系统都在内部,没有经过CDN的解析,通过目标网站用户注册或者RSS订阅功能,查看邮件、寻找邮件头中的邮件服务器域名IP,之后ping这个邮件服务器的域名,就可以获得目标的真实IP(必须是自己的邮件服务器,第三方或公共邮件服务器是没有用的)
- 扫描网站测试文件:
- 如phpinfo、test等,从而找到目标的真实IP
- 分站域名:
- 很多网站主站的访问量比较大,所以主站都是挂CDN的,但是分站可能没有挂CDN,可以通过ping二级域名获取分站IP,可能会出现分站和主站不是同一个IP但在同一个C段下面的情况,从而判断出目标的真实IP段
- 国外访问:
- 国内的CDN往往只对国内用户的访问加速,而国外的CDN就不一定了。因此可通在线代理网站App Synthetic Monitor访问,可能会得到真实的IP
- App Synthetic Monitor(目前异常):https://asm.ca.com/en/ping.php
- 查询域名的解析记录:
- 可能目标很久以前并没有用过CDN,所以可以通过网站NETCRAFT来观察域名的IP历史记录,也可以大致分析出目标的真实IP段
- 如果目标网站有自己的APP,可以尝试利用Fiddler或Burp Suite抓取APP的请求,从里面找到目标的真实IP
- 绕过CloudFlare CDN查找真实IP:
- 现在很多网站都使用CloudFlare提供的CDN服务,在确定了目标网站使用CDN后,可以先尝试通过在线网站Cloud FlareWatch对CloudFlare客户网站进行真实IP查询
- Cloud FlareWatch(目前异常):http://www.crimeflare.us/cfs.html#box
- 验证获取的IP:
- 找到目标的真实IP后,需要验证其真实性。如果是WEB,最简单的验证验证方法是直接尝试用IP访问,看看响应的页面是不是和访问域名返回的一样;或者在目标段比较大的情况下,借助类似Masscan的工具批扫描对应IP段中所有开了80、443、8080端口的IP,然后逐个尝试IP访问,观察响应结果是否为目标站点
- 找到目标的真实IP后,需要验证其真实性。如果是WEB,最简单的验证验证方法是直接尝试用IP访问,看看响应的页面是不是和访问域名返回的一样;或者在目标段比较大的情况下,借助类似Masscan的工具批扫描对应IP段中所有开了80、443、8080端口的IP,然后逐个尝试IP访问,观察响应结果是否为目标站点
收集敏感目录文件:
在渗透测试中,探测WEB目录结构和隐藏的敏感文件是一个必不可少的环节,从中可以获取网站的后台管理页面、文件上传界面,甚至可能扫描出网站的源代码
- 扫描工具:
- DirBuster:
- OWASP开发的一款基于JAVA编写的、专门用于探测WEB服务器的目录和隐藏文件。因为是用JAVA编写的,所以需要在JAVA运行环境(JRE)下安装
- 此工具是图形化工具
- Target URL:扫描的网址,扫描时需要将请求方法设置为"Auto Swith(HEAD and GET)"
- 线程的数值:推荐在20-30之间。太大容易引起系统死机
- 扫描类型:
- 个人字典扫描:选择"List based brute force",单击"Browse"选择字典,可以选择工具自带的字典,也可以选择自己的字典
- 系统字典扫描:选择"Pure Brute Force",点击"Char set"可选择字典类型(大小写、数字、特殊字符),也可设置字典的最小长度和最大长度(范围越广,字典越大)
- Select starting options:
- URL Fuzz:
- 在URL to fuzz中输入"/{dir}"。这里的{dir}是一个变量,用来代表字典中的每一行
- 如果扫描的目标是http://192.168.137.11/admin/,那么就要在URL to fuzz中填写"/admin/{dir}“,意思是在”{dir}“的前后可以随意拼接你想要的目录或者后缀,例如输入”/admin/{dir}.php",表示扫描admin目录下的所有php文件
- URL Fuzz:
- DirBuster:
- 御剑后台扫描珍藏版
- wwwscan:
- Spinder.py(轻量级快速单文件目录后台扫描)
- Sensitivefilesscan(轻量级快速单文件目录后台扫描)
- Weakfilescan(轻量级快速单文件目录后台扫描)
社会工程学:
社会工程学在渗透测试中起着不小的左右,利用社会工程学,攻击者可以从一名员工的口中挖掘出本应该是秘密的信息
假设攻击者对一家公司进行渗透,正在收集目标的真实IP阶段,此时就可以利用收集到的这家公司的某位销售人员的电子邮箱。给这位销售人员发送邮件–>假装对某个产品很感兴趣–>销售人员回复邮件–>攻击者通过分析邮件头来收集这家公司的真实IP地址及内部电子邮件服务器的相关信息
进一步的应用社会工程学:假设已经收集了目标人物的邮箱、QQ、电话号码、姓名以及域名服务商,可通过爆破或者撞库的方法获取邮箱的密码,之后就可以冒充目标人物要求客服人员协助重置域管理密码,甚至技术人员会帮着重置密码,从而使攻击者拿下域管理控制台,然后做域劫持
还可利用"社工库"查询想要的信息:社工库是用社会工程学进行攻击时积累的各方数据的结构化数据库。这个数据库里有大量信息,甚至可以找到每个人的各种行为记录。利用收集到的邮箱,可以在社工库中找到已经泄露的密码,还可以通过搜索引擎搜索到社交账号等信息,然后通过利用社交和社会工程学得到的信息构造密码字典,对目标用户的邮箱和OA账号进行爆破或者撞库