渗透测试之信息搜集
信息搜集
信息搜集指在对目标进行渗透测试前所做的一系列工作,具体为对目标资产信息的搜集主要包括但不限于whois信息,子域名,目标IP,旁站C段查询,邮箱搜集,CMS类型,敏感目录,端口信息,服务器与中间件信息等内容的搜集。
信息搜集贯穿于整个渗透测试,就渗透测试的结果来说成功失败都取决于与信息搜集的深度和广度,而从渗透测试的本质来看渗透测试其实就是信息搜集。信息搜集的越全面越多越丰富对于后期的渗透思路也就更广,渗透测试的成功率也就也高,今天就对信息搜集相关知识做一个梳理,写的不好的请各位大佬多多指导!!!
信息搜集方式
主动信息搜集:通过主动对服务器或web程序直接发起访问,探测目标的相关资产信息,这种搜集方法通常容易被目标察觉,但搜集的信息更为全面丰富
被动信息搜集:通过第三方不与目标直接接触的探测方式,包括whois查询,google语法搜索等方式方法,此方法不容易被目标察觉,但搜集的信息需要甄别,而且较少。
搜集内容
1.whois查询
whois是用来查询域名注册所有者等信息的传输协议。简单说,whois就是一个用来查询域名是否已经被注册,以及注册域名的详细信息的数据库(如域名所有人、域名注册商)。通过whois来实现对域名信息的查询。早期的whois查询多以命令行接口存在,但是现在出现了一些网页接口简化的线上查询工具,可以一次向不同的数据库查询。网页接口的查询工具仍然依赖whois协议向服务器发送查询请求,命令行接口的工具仍然被系统管理员广泛使用。whois通常使用TCP协议43端口。每个域名/IP的whois信息由对应的管理机构保存。
whois信息可以获取关键注册人的信息,包括注册商、联系人、联系邮箱、联系电话、创建时间等,可以进行邮箱反查域名,爆破邮箱,社工,域名劫持等等
常用网站和工具:站长之家、爱站、微步在线、kali自带的whois查询
2企业信息
企业信息搜集主要包括:
1:搜集企业的发展、文化、工商信息、涉诉信息、商标专利、失信信息、企业变更与企业年报、以及企业关联关系查询等,
2.员工信息(手机号码、邮箱、姓名等),组织框架、企业法人、企业综合信息等。
3.其中员工信息收集是信息收集中的一项重要工作,员工信息包括:员工姓名、员工工号、员工家庭及交际信息、上网习惯等。(社会工程学)
4.员工身份信息:员工简历,员工身份证,手机号,生日,家乡,住址等个人信息。5、员工社交账号信息:QQ号,QQ群,微博,微信,支付宝,员工邮箱账号等
通过以上这些信息的搜集可以方便后续的一个渗透广度。
常用工具:天眼查、企查查、启信宝
3.子域名
子域名收集可以发现更多渗透测试范围内的域名/子域名,以增加漏洞发现机率;通常一台服务器上不可能只有一个站点,而是有很多个站点,这些站点之间没有必然的联系,他们相互独立运行,使用不同的域名,可能有些端口都不同,但是它们却共存在一台服务器上。这就给我们提供了一个新的思路,如果我们要对某一个站点进行直接渗透无法突破时,那么我们可以对同服务器的其他站点进行渗透,只要能打破一个缺口,就能攻击整个服务器上的其他站点,甚至是一个服务集群
常用方法:google语法、Kali中的DNS分析工具、Dnsenum、Dnsmap、Dnsrecon、whois查询、Fierce
Window中子域名查询:subDomainsbrute工具、Layer子域名挖掘机
4.目标IP
对于目标IP的搜集,首先,我们要判断该域名是否存在CDN的情况,现在大部分网站都加了CDN,CDN的虚假IP干扰了我们的渗透测试,所以我们查找到目标真实IP,对于网站是否使用CDN有以下判断方法:
方法1:使用各种多地 ping 的服务,查看对应 IP 地址是否唯一,如果不唯一多半是使用了CDN, 多地 Ping 网站有:站长工具的多地ping
方法2:使用 nslookup 进行检测,原理同上,如果返回域名解析对应多个 IP 地址多半是使用了 CDN。
4.1CDN绕过
方法1:Ping法:直接ping example.com而不是www.example.com,因为现有很多CDN厂商基本只要求把www.example.com cname到CDN主服务器上去,那么直接ping example.com有可能直接获得真实IP
方法2:二级域名,因为CDN的价格也是不便宜。很多厂商一般都只会对一级域名进行设置CDN,而二级域名通常不会设置,这时我们就可以利用前面搜集的到二级域名来进行ping,从而获得真实IP
方法3:查询历史DNS记录,查看 IP 与 域名绑定的历史记录,可能会存在使用 CDN 前的记录,相关查询网站有:DNS查询、微步在线、在线域名信息查询等
方法4:网络空间引擎搜索法,常见的有以前的钟馗之眼,shodan,fofa搜索。以fofa为例,只需输入:title:“网站的title关键字”或者body:“网站的body特征”就可以找出fofa收录的有这些关键字的ip域名,很多时候能获取网站的真实ip。
方法还有很多,详细的可以搜索CDN绕过方法。
5.网站指纹识别
网站指纹识别就是通过对网站的特殊文件和一些配置文件的查看来识别网站所采用的开发语言、开发框架,以及识别网站所用的操作系统、服务器和一些中间件信息,通过搜集这些内容可以查看网站是否存在已知漏洞,以帮助我们后期的渗透测试(主要就是一些CMS漏洞和中间件漏洞)
目前常见的web应用指纹识别主要有以下四种方式
1:网页中发现关键字
2:特定文件的MD5(主要是静态文件、不一定要是MD5)
3:指定URL的关键字
4:指定URL的TAG模式
手工网站指纹识别信息有以下这些地方:
1.指定路径下指定名称的js文件或代码。
2.指定路径下指定名称的css文件或代码。
3.<title>中的内容,有些程序标题中会带有程序标识,但不是很多。
4.meta标记中带程序标识<meta name="description"/><meta name="keywords"/><meta name="generator"/><meta name="author"/><meta name="copyright"/>中带程序标识。
5.display:none中的版权信息。
6.页面底部版权信息,关键字© Powered by等。
7.readme.txt、License.txt、help.txt等文件。
8.指定路径下指定图片文件,如一些小的图标文件,后台登录页面中的图标文件等,一般管理员不会修改它们。
9.注释掉的html代码中<!--
10.http头的X-Powered-By中的值,有的应用程序框架会在此值输出。
11.cookie中的关键字
12.robots.txt文件中的关键字
13.404页面
14.302返回时的旗标
常见工具:whatweb、云悉、BugScanner……
6.旁站C段搜集
旁站指和目标服务器处于同一台服务器上的其他网站,如果目标站的安全程度较高,那么可以通过安全性较差的旁站来入手,之后可以通过提权文件包含等手段拿下目标
常用工具:御剑、WebRobot、K8_C段旁注工具等
C段指和目标机器ip处于同一个网络c段的其他机器,如果说我们目标机器为192.18.1.1的服务比较高,我们可以通过攻击同网段的其他机器来进行内网攻击,从而控制目标机器
常用工具:Cain、Sniffit 、Snoop、Tcpdump、Dsniff、webscancc、Nmap、Zenmap
7.邮箱搜集
邮箱搜集主要是搜集目标的一些邮箱数据,包括公司对外邮箱账号以及公司内部员工的一些邮箱账号信息、公司内部所采用的邮件服务商等
其次确定目标的邮件服务器所在的真实位置,看看邮件服务器自身有没有什么错误配置,比如,没有禁用VREY或者EXPN命令导致用户信息泄露。然后从whois中获取域名的注册人、管理员邮箱,利用搜索引擎或者社工库查看有木有泄露的密码,然后尝试泄露的密码进行登录。
通过邮箱的搜集可以扩大我们的一个攻击面,包括后续的一些字典制作都提供了数据。
8.CMS类型
内容管理系统(content management system,CMS)是一种位于WEB 前端(Web 服务器)和后端办公系统或流程(内容创作、编辑)之间的软件系统,可以说它就是web应用模板的统称。通过识别CMS的类型,我们可以查看是否存在已知的漏洞,并且可以对网站所采用的CMS进行代码审计,从而发现漏洞。
CMS识别方式有网站特有文件,例如/templets/default/style/dedecms.css — dedecms;网站独有文件的md5,例如favicon.ico,但是该文件可以被修改导致不准确;网站命名规则;返回头的关键字;网页关键字;URL特征;Meta特征;Script特征;robots.txt;网站路径特征;网站静态资源;爬取网站目录信息等
常用工具:云悉WEB资产梳理|在线CMS指纹识别平台、bugscaner、TideFinger 潮汐指纹
9.敏感文件\目录
敏感文件\目录指保存有网站一些配置信息或者数据的文件可以被访问,如robots.txt、crossdomin.xml、sitemap.xml、源码泄漏文件
首先用扫描器扫描目录,这里需要我们去搜集一些常见的敏感文件名和目录路径做成字典。字典越大扫描出的结果可能越多,这一步主要扫出网站的管理员入口,一些敏感文件(.mdb,.excel,.word,.zip,.rar),查看是否存在源代码泄露。常见有.git文件泄露,.svn文件泄露,.DB_store文件泄露,WEB-INF/web.xml泄露。
目录扫描有两种方式,使用目录字典进行暴力才接存在该目录或文件返回200或者403;使用爬虫爬行主页上的所有链接,对每个链接进行再次爬行,收集这个域名下的所有链接,然后总结出需要的信息。
常见的文件或目录泄露风险:
后台目录:弱口令,万能密码,爆破
安装包:获取数据库信息,甚至是网站源码
上传目录:截断、上传图片马等
mysql管理接口:弱口令、爆破,万能密码,然后脱裤,甚至是拿到shell
安装页面 :可以二次安装进而绕过
phpinfo:会把你配置的各种信息暴露出来
编辑器:fck、ke、等
iis短文件利用:条件比较苛刻 windows、apache等
常用的工具有:御剑,kali下的dirb,DirBrute。
10.服务器操作系统信息
对于服务器操作系统的识别是我们攻击开展的基础,操作系统主要有:Linux 和Windows。现在企业网站服务器的操作系统有百分之九十以上用的是Linux操作系统。知道了服务器的操作系统之后,还需要知道操作系统使用的具体版本。因为很多低版本的操作系统都存在已知的漏洞。对于服务器版本我们可以通过nmap这类扫描软件来进行判断。
而判断是Linux还是Windows第一种方法就是通过ping来探测,Windows的TTL值都是一般是128,Linux则是64。所以大于100的肯定是Windows,而几十的肯定是Linux。但是,通过TTL值来判断服务器类型也不是百分之百准确的,有些windows服务器的TTL值也是几十,而且有的服务器禁止ping。
第二种可以判断操作系统的就是可以用过命令大小写来区分,Windows对于命令不区分大小写,linux则严格区分大小写。
常用工具:nmap、masscan、metasploit
11.端口信息
服务和安全是相对应的,每开启一个端口,那么攻击面就扩大了一点,开启的端口越多,也就意味着服务器面临的威胁越大,被攻击的点也就越多,所以说识别一些常见的端口也就知道了服务器开启了哪些服务,比如3389端口开启,可以认为服务器系统为windows并且开启了远程服务的功能。所以,端口扫描在渗透测试中是非常重要的,下列对一些常见端口进行分析
端口号 |
服务 |
安全风险 |
20/21 |
ftp 默认的数据和命令传输端口[可明文亦可加密传输] |
许匿名的上传下载、爆破、嗅探、win提权、远程执行(proftpd 1.3.5)、各类后门(proftpd,vsftp 2.3.4) |
22 |
SSH |
可根据已搜集到的信息尝试爆破、中间人、ssh隧道及内网代理转发、文件传输、等等…常用做linux远程操作 |
23 |
telnet传输 |
爆破、嗅探,一般常用于路由 |
25 |
Smtp简单邮件传输协议 |
邮件伪造、vrfy/expn 查询邮件用户信息、可使用smtp-user-enum工具来自动跑 |
53 |
DNS解析 |
允许区域传送,dns劫持、、缓存投毒、欺骗以及各种基于dns隧道的远控 |
80-89/443/8080-8989 |
Web服务常见端口 |
各种常用web服务端口、目标oa、各类java控制台、服务器web管理面板、web中间件漏洞利用、各类web框架漏洞利用等等…… |
137/139/445 |
samba[smb实现windows和linux间文件共享,明文] |
可尝试爆破以及smb自身的各种远程执行类漏洞利用、如、ms08-067、ms17-010、探等…… |
1433 |
Mssql数据库 |
注入、提权、弱口令、爆破 |
1521 |
Oracle数据库 |
注入、弹shell… |
3306 |
Mysql数据库 |
注入、提权、爆破 |
3389 |
Windows远程桌面 |
爆破、cve-2019-0708 |
12.中间件应用程序信息
12.1网站容器判断
网站容器就是指网站部署所采用的web服务器类型是什么,常见的有IIS、Apache、Nginx、Tomcat等,识别了网站的容器,我们就可以对具体的容器进行相应的漏洞查询,比如常见的中间件漏洞(提醒同一容器不同版本漏洞不同)
识别方法:nmap扫描等方法
12.2网站脚本类型
网站脚本类型就是指网站开发所采用的哪种语言,常见的有php 、Jsp 、Asp 、Aspx
识别方法:1.根据网站URL来判断;2可以根据Firefox、Google Chrome的插件来判断如wappalyzer;3可以通过google语法来判断,如site:xxx filetype:php
12.3数据库类型
这里我们需要了解网站采用的是哪种类型的数据库,常见的数据库有:Mysql、Oracle、SqlServer 还是 Access。识别数据库类型,对于我们进行SQL注入或者进行爆破都有一定帮助。
识别方法:nmap扫描、通过端口查看例如3306是mysql,1521是Oracle,1433是SqlServer
13.WAF 信息探测
WAF也称Web应用防护系统,Web应用防火墙是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品。
识别工具:wafw00f、sqlmap、xenoitx
14.社工
社工主要就是利用一些人性缺陷来进行攻击,简单的包括使用各种社工库等。。。。。