Loading

渗透测试之信息收集(Web安全攻防渗透测试实战指南第1章)

收集域名信息

获得对象域名之后,需要收集域名的注册信息,包括该域名的DNS服务器信息和注册人的联系方式等。

whois查询

对于中小型站点而言,域名所有人往往就是管理员,因此得到注册人的姓名和邮箱信息对测试个人站点非常有用。

 

 

 还有一些在线whois网站:

  • 爱站工具网:  https://whois.aizhan.com/
  • 站长之家:  http://whois.chinaz.com/
  • VirusTotal:  https://www.virustotal.com/gui/home/

备案信息查询

备案主要针对国内网站,网站搭建在其他国家则不需要备案。常见的网站有以下两个:

  • ICP备案查询网:  http://beianbeian.com
  • 天眼查:  https://www.tianyancha.com/

收集敏感信息

利用Google hacking

关键字 说明
site 指定域名
inurl URL中存在指定关键字的网页
intext 网页正文中的关键字
filetype 指定文件类型
intitle 网页标题中的关键字
link link:baidu.com即表示返回所有和baidu.com做了链接的url
info 查找指定站点的一些基本信息
cache 搜索google中关于某些内容的缓存

eg:搜索一些学校后台管理的网页

site:edu.cn intext:后台管理

 

 

 

还可以利用google搜索收集数据库文件、SQL注入、配置信息、源代码泄露、未授权访问和robots.txt等信息、

还可以通过Burp Suite的Repeater功能获取一些服务器的信息、

还可以通过在GitHub上查找相关信息。

还可以通过乌云漏洞表查询历史漏洞信息: http://wooyun.2xss.cc/bugs.php            乌云已经无了,现在存在的都是别人搭建的一些镜像网站

还有一些社工库:   http://site3.sjk.space/sfz.php

收集子域名信息

对于baidu.com域来说,   www.baidu.com  tieba.baidu.com    zhidao.baidu.com 都是其子域名

主域都是重点防护区域,子域相对薄弱

子域名检测工具

主要有Layer子域名挖掘机、K8、wydomain、Sublist3r、dnsmaper、subDomainsBrute、Maltego CE等。

Layer子域名挖掘机界面包含域名、解析IP、CDN列表、Web服务器和网站状态。目前存在5.0更新版和4.X纪念版,主要区别是5.0增加了多层子域名遍历功能。

https://www.cnblogs.com/guojia000/p/11393502.html     这里面有下载地址

 

 

subDomainBrute可以递归地发现三级域名、四级域名、、、执行该工具的命令

python subDomainsbrute.py xxxx.com

 

搜索引擎枚举

google语法:                 site:baidu.com

 

 

第三方聚合应用枚举

很多第三方服务汇聚了大量的DNS数据集,可通过他们检索某些给定域名的子域名。

 https://dnsdumpster.com/

 

 

证书透明度公开日志枚举

证书透明度(Certificate Transparency,CT)是证书授权机构(CA)的一个项目,证书授权机构会将每个SSL/TLS证书发布到公共日志中。一个SSL/TLS证书通常包含域名、子域名和邮件地址。

查找某个域名所属证书的最简单方法就是使用搜索引擎搜索引擎搜索一些公开的CT日志。

https://crt.sh/

https://censys.io/ipv4

还有一些在线网站查找子域名:

https://phpinfo.me/domain


 

收集常用端口信息

由开放端口得知开放的服务

常用工具:Nmap、Masscan、ZMap、御剑告诉TCP端口扫描工具

常见端口 & 说明 & 攻击方向

文件共享服务端口
端口号 端口说明 攻击方向
21、22、69 ftp、tftp文件传输协议 允许匿名的上传下载、爆破和嗅探操作
2049 nfs服务 配置不当
139 samba服务 爆破、未授权访问、远程代码执行
389 Ldap目录访问协议 注入、允许匿名访问、弱口令

 

远程连接服务端口
端口号 端口说明 攻击方向
22 SSH远程连接 爆破、SSH隧道及内网代理转发、文件传输
23 telnet远程连接 爆破、嗅探、弱口令
3389 RDP远程桌面连接 Shift后门(winserver2003以下)、爆破
5900 VNC 弱口令爆破
5632 PyAnywhere 抓密码、代码执行

 

Web应用服务端口
端口号 端口说明 攻击方向
80、443、8080(Tomcat) 常见的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 爆破、注入、弱口令
27017、27018 MongoDB 爆破、未授权访问
6379 redis 未授权访问、弱口令
5000

SysBase/DB2

爆破、注入

 

邮件服务端口
端口号 端口说明 攻击方向
25 SMTP邮件服务 邮件伪造
110 POP3协议 爆破、嗅探
143 IMAP协议 爆破

 

网络协议常见端口
端口号 端口说明 攻击方向
53  DNS域名系统 允许区域传送、DNS劫持、缓存投毒、欺骗
67、68 DHCP服务 劫持、投毒
161 SNMP服务 爆破、搜集目标内网信息

 

特殊服务端口
端口号 端口说明 攻击方向
2181 Zoomkeeper服务 未授权访问
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.xx,这个特征就是这个CMS的指纹,那么当碰到其他网站也存在此特征时,就可以快速识别出该CMS,所以叫作指纹识别。

在渗透测试中,对目标服务器进行指纹识别是相当有必要的,因为只有识别出相应的Web容器或者CMS,才能查找与其相关的漏洞,然后才能进行相应的渗透操作。

CMS (Content Management System)又称整站系统或文章系统。在2004年以前,如果想进行网站内容管理,基本上都靠手工维护,但在信息爆炸的时代,完全靠手工完成会相当痛苦。所以就出现了CMS,开发者只要给客户一个软件包, 客户自己安装配置好,就可以定期更新数据来维护网站,节省了大量的人力和物力。常见的CMS有Dedecms (织梦)、Discuz、 PHPWEB、 PHPWind、PHPCMS、ECShop、Dvbbs、 SiteWeaver、 ASPCMS、 帝国、z-Blog、WordPress等。

代表工具有御剑Web指纹识别、WhatWeb、WebRobo、 椰树、轻量WEB指纹识别等,可以快速识别一些主流CMS。

除了这些,还有一些在线识别网站:

  • https://www.whatweb.net/
  • http://whatweb.bugscanner.com/look
  • https://www.yunsee.cn/cms

查找真实IP

如果目标服务器不存在CDN,那么真实IP好找得一批

CDN干嘛的?

CDN即内容分发网络,主要解决因传输距离和不同运营商节点造成的网络速度性能低下的问题。说得简单点,就是一组在不同运营商之间的对接节点 上的高速缓存服务器,把用户经常访问的静态数据资源(例如静态的html、css、 js图片等文件)直接缓存到节点服务器上,当用户再次请求时,会直接分发到在离用户近的节点服务器上响应给用户,当用户有实际数据交互时才会从远程Web服务器上响应,这样可以大大提高网站的响应速度及用户体验。

所以如果渗透目标购买了CDN服务,可以直接ping目标的域名,但得到的并非真正的目标Web服务器,只是离我们最近的一台目标节点的CDN服务器,这就导致了我们没法直接得到目标的真实IP段范围。

判断目标是否使用了CDN

通常会通过ping目标主域,观察域名的解析情况,以此判断是否使用了cdn、

 

 还可以利用网站     https://www.17ce.com/          上进行全国多地区的ping服务器操作,然后对比每个地区ping出的IP结果,查看这些IP是否一致,如果都是一样的,极有可能不存在CDN。如果IP大多不太一样或者规律性很强, 可以尝试查询这些IP的归属地,判断是否存在CDN。

绕过CDN寻找真实IP

在确认了目标确实用了CDN以后,就需要绕过CDN寻找目标的真实IP,下面介绍一些常规的方法。

  • 内部邮箱源。一般的邮件系统都在内部,没有经过CDN的解析,通过目标网站用户注册或者RSS订阅功能,查看邮件、寻找邮件头中的邮件服务器域名IP, ping这个邮件服务器的域名,就可以获得目标的真实IP (注意,必须是目标自己的邮件服务器,第三方或公共邮件服务器是没有用的)。
  • 扫描网站测试文件,如phpinfo、test等,从而找到目标的真实IP。
  • 分站域名。很多网站主站的访问量会比较大,所以主站都是挂CDN的,但是分站可能没有挂CDN,可以通过tping 级域名获取分站IP, 可能会出现分站和主站不是同一个IP但在同一个C段下面的情况,从而能判断出目标的真实IP段。
  • 国外访问。国内的CDN往往只对国内用户的访问加速,而国外的CDN就不一定了。因此,通过国外在线代理网站App Synthetic Monitor (https://asm.ca.com/en/ping.php)访问,可能会得到真实的IP。

 

  • 查询域名的解析记录。也许目标很久以前并没有用过CDN,所以可以通过网站NETCRAFT (https://www.netcraft.com/) 来观察域名的IP历史记录,也可以大致分析出目标的真实IP段。
  • 如果目标网站有自己的App,可以尝试利用Fiddler或Burp Suite抓取App的请求,从里面找到目标的真实IP。
  • 绕过CloudFlare CDN查找真实IP。现在很多网站都使用CloudFlare提供的CDN服务,在确定了目标网站使用CDN后,可以先尝试通过在线网站CloudFlareWatch (http://ww1.crimeflare.us/#box) 对CloudFlare客户网站进行真实IP查询。

获取获取的IP

找到目标的真实IP以后,如何验证其真实性呢?如果是Web,最简单的验证方法是直接尝试用IP访问,看看响应的页面是不是和访问域名返回的一样;或者在目标段比较大的情况下,借助类似Masscan的工具批扫描对应IP段中所有开了80、443、8080端口的IP,然后逐个尝试IP访问,观察响应结果是否为目标站点。

收集敏感目录文件

在渗透测试中,探测Web目录结构和隐藏的敏感文件是一个必不可少的环节,从中可以获取网站的后台管理页面、文件上传界面,甚至可能扫描出网站的源代码。

针对网站目录的扫描主要有DirBuster、御剑后台扫描珍藏版、wwwscan、Spinder.py (轻量级快速单文件月录后台扫描)、Sensitivefilescan (轻量级快速单文件目录后台扫描)、Weakfilescan (轻量级快速单文件目录后台扫描)等工具。

社会工程学

社会工程学在渗透测试中起着不小的作用,利用社会工程学,攻击者可以从一名员工的口中挖掘出本应该是秘密的信息。
假设攻击者对一家公司进行渗透测试,正在收集目标的真实IP阶段,此时就可以利用收集到的这家公司的某位销售人员的电子邮箱。首先,给这位销售人员发送邮件,假装对某个产品很感兴趣,显然销售人员会回复邮件。这样攻击者就可以通过分析邮件头来收集这家公司的真实IP地址及内部电子邮件服务器的相关信息。
通过进一步地应用社会工程学,假设现在已经收集了目标人物的邮箱、QQ、电话号码、姓名,以及域名服务商,也通过爆破或者撞库的方法获取邮箱的密码,这时就可以冒充目标人物要求客服人员协助重置域管理密码,甚至技术人员会帮着重置密码,从而使攻击者拿下域管理控制台,然后做域劫持。
除此以外,还可以利用"社工库"查询想要得到的信息,如下图所示,社工库是用社会工程学进行攻击时积累的各方数据的结构化数据库。这个数据库里有大量信息,甚至可以找到每个人的各种行为记录。利用收集到的邮箱,可以在社工库中找到已经泄露的密码,其实还可以通过搜索引擎搜索到社交账号等信息,然后通过利用社交和社会工程学得到的信息构造密码字典,对目标用户的邮箱和OA账号进行爆破或者撞库。

 

 

 

posted @ 2020-09-05 19:13  coderge  阅读(1940)  评论(0编辑  收藏  举报