testfire.net是IBM公司为了演示旗下比较有名的Web漏洞扫描器AppScan的强大功能所搭建的模拟银行网站,所以上面会有很多Web安全漏洞。可以以该网站为目标去测试。 vulnweb.com网站也类似
进行渗透测试之前, 最重要的一步就是信息收集,在这个阶段,我们要尽可能地收集目标组织的信息。所谓“知己知彼,百战不殆”,我们越是了解测试目标,测试的工作就越容易。
在划定了测试范围之后,就需要进入信息收集阶段。在这个阶段,渗透人员需要使用各种公开资源尽可能地获取测试目标的相关信息。他们搜集信息的互联网渠道主要有:论坛/公告板/新闻组/媒体文章/博客/社交网络/github/其他商业或非商业性的网站。此外,他们也可以借助各种搜索引擎中获取相关数据,如谷歌、雅虎、MSN必应、百度等。收集的信息主要包括:
(1)收集目标网站服务器信息:域名、子域名、CNAME、cdn、真实IP、系统类型、版本等;
(2)识别并收集目标网站指纹信息:CMS、中间件、网页编程语言等及其通用漏洞调查收集;
(3)扫描并收集目标网站目录结构:一些文件可以访问获得信息、后台管理页面位置、日志位置等;
(4)网站的敏感信息:
- whois信息、姓名、备案、邮箱、电话反查(邮箱丢社工库,社工准备等);
- 弱口令扫描、密码爆破等(如针对系统管理员、网站后台管理员、数据库管理员等);
- 网站源码是否泄露等,如github源码。
(5)收集目标服务器主机端口信息:不同端口提供不同的攻击思路和方向;
(6)网络防护信息:网络边界设备或网络节点设备,如有没有防火墙,有没有IPS、IDS或WAF,网络行为管理,全流量分析。
收集的信息越多,渗透测试成功的概率越高。 在信息收集中,最主要的就是收集服务器的配置信息和网站的敏感信息,其中包括域名及子域名信息、目标网站系统、CMS指纹、目标网站真实IP 、开放的端口等。换句话说,只要是与目标网站相关的信息,我们都应该去尽量搜集。
知道目标的域名之后,我们要做的第一件事就是获取域名的注册信息,注意关注该域名的注册商和注册人的联系方式(电话和邮箱)等信息。域名信息收集的常用方法有以下这几种。 (1)Whois查询; (2)反查 (2)备案信息查询
2.1.1 Whois简介
Whois是一个标准的互联网协议, 可用于收集域名注册信息,注册的域名、IP地址等信息。简单来说, Whois就是一个用于查询域名是否己被注册以及注册域名的详细信息的数据库(如域名所有人、域名注册商)。
在Whois查询中,得到注册人的姓名和邮箱信息通常对测试个人站点非常有用,因为我们可以通过搜索引擎和社交网络挖掘出域名所有人的很多信息。对中小站点而言,域名所有人往往就是管理员。
2.1.2 Whois操作
(1)Kali系统:在Kali系统中, Whois 己经默认安装,只需输入要查询的域名即可,代码为(一般域名不包含主机名,如·baidu.com)。注意,Kali系统需连接真实网络,能上网。 (2)站长之家(https://whois.chinaz.com);
(3)阿里云查询(https://whois.aliyun.com/)
除了用whois查询以外,还可以进行反查 (1)邮箱反查:这个邮箱曾经注册过哪些域名。 (2)注册人反查:这个注册人曾经注册过哪些域名。 (3)电话反查:这个电话曾经注册过哪些域名。
网站备案是根据国家法律法规规定,需要网站的所有者向国家有关部门申请的备案,这是国家信息产业部对网站的一种管理,为了防止在网上从事非法的网站经营活动的发生。主要针对国内网站,如果网站搭建在其他国家,则不需要进行备案。
(1)ICP备案查询网:https://www.beianx.cn/
(2)天眼查: http : //www.tianyancha.como
子域名也就是二级域名, 是指顶级域名下的域名。假设我们的目标网络规模比较大,直接从主域入手显然是很不理智的, 因为对于这种规模的目标, 一般其主域都是重点防护区域,所以不如先进入目标的某个子域,然后再想办法迂回接近真正 的目标,这无疑是个比较好的选择。那么问题来了,怎样才能尽可能多地搜集目标的高价值子域呢? 常用的方法有以下这几种。
可以查询子域名的网站,需要科学上网。在表单中直接提交域名即可,这种方法查询大型网站比较有优势。 通过网站的证书:
DNS区域传送(DNS zone transfer)指的是一台备用服务器使用来自主服务器的数据刷新系的域(zone)数据库。这为运行中的DNS服务提供了一定的冗余度,其目的是为了防止主域名服务器因意外故障变得不可用时影响到整个域名的解析。一般来说,DNS区域传送操作之在网络里真的有备用域名DNS赋予其时才有必要用到,但许多DNS服务器却被错误地配置成只要有client发出请求,就会向对方提供一个zone数据库的详细信息(没有身份认证),所以说允许不受信任的因特网用户执行DNS区域传送操作是后果最为严重的错误配置之一。一般防御域传送漏洞的措施是指定从DNS服务器。
(1)可以使用dig工具来检测域传送漏洞,命令为,例如:。通过域传送漏洞可以获取子域名信息及子域名对应的IP地址。 (2)可以用nslookup (3)可以用nmap工具
用于子域名检测的工具主要有Layer子域名挖掘机、K8 、wydomain , Sublist3r dnsmaper 、subDomainsBrute 、Maltego CE 、dnsrecon(kali自带)等。重点推荐Layer子域名挖掘机、Sublist3r和subDomainsBrute 。
3.3.1 Layer子域名挖掘机5.0下载及使用
(1)layer子域名挖掘机5.0下载百度云链接,提取码:121l。 (2)在windows系统双击exe文件即可使用。其中dic.txt为常用子域名字典,如www等。
(3)输入要扫描的域名开启扫描,扫描进度在左下角查看。 (4)鼠标右击列表可以导出域名,选择位置保存为txt文件,默认保存在软件所在文件夹下。
3.3.2 subDomainsBrute下载及使用
subDomainsBrute下载:工具GIthub下载地址,在如下图处下载并解压。具体使用方法可详见《【信息收集】渗透测试信息收集的种类及方法》
可以利用Google语法搜索子域名,例如使用site:baidu.com语法搜索百度旗下的子域名。
很多第三方服务汇聚了大量DNS 数据集,可通过它们检索某个给定域名的子域名。只需在其搜索栏中输入域名,就可检索到相关的域名信息。 读者也可以利用DNSdumpster网站(https://dnsdumpster.com/)、在线DNS侦查和搜索的工具挖掘出指定域潜藏的大量子域。
证书透明度(Certificate Transparency, CT)是证书授权机构(CA)的一个项目,证书授权机构会将每个SSL/TLS证书发布到公共日志中。一个SSL/TLS证书通常包含域名、子域名和邮件地址,这些也经常成为攻击者非常希望获得的有用信息。查找某个域名所属证书的最简单的方法就是使用搜索引擎搜索一些公开的CT日志。 (1)首推好用网站:https://crt.sh (2)次推好用网站:https://censys.io/ (3)其他网站:https://phpinfo.me/domain
通过DNS解析找到IP地址,主要有以下几种方法 (1)ping (2)nslookup (3)dig工具 (4)dnsenum工具 (5)站长之家
解析出来的地址属于非权威解答
kali自带dig工具,在使用dig时解析域名时,出现了如下错误。可参考文章《【常见问题解决】kali中可以使用ping但无法使用nslookup和dig命令》解决问题。 输入命令,解析域名时的结果如下: dig命令的其他用法
dnsenum会自动检测域传送漏洞,比较推荐。(kali自带)
站长之家官网首页 站长之家DNS查询
这里主要讲解在以下这几种情况下,如何绕过CDN寻找目标服务器的真实IP 。
4.6.1 CDN技术概述
定义:CDN的全称是Content DeliveryNetwork,即内容分发网络。
简介:CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。
基本原理:CDN的基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。利用节点缓存技术,通过在网络各处放置节点服务器,构成了在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。
目的:是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。
参考资料:、、
4.6.2 对渗透测试的影响
cdn会隐藏服务器真实的ip地址,无法对目标网站的操作系统进行渗透,但cdn站点又可以理解为是目标站点的镜像站点(大多数都是静态cdn加速),拥有相同的网站架构,且cdn服务器可与站点服务器进行交互,因此sql注入,xss等漏洞的挖掘并不受太大影响。
4.6.3 判断及绕过CDN的方法
4.6.3.1 判断方法
通过超级ping的网站可以看到CDN的解析情况,可以浏览器搜索“超级ping”打开对应网页输入域名进行搜索,或直接在浏览器输入“https://ping.chinaz.com/+目标域名”的方式进行检索。以百度WEB服务器为例,https://ping.chinaz.com/www.baidu.com。 返回结果有多个,说明启用了CND技术。.
4.6.3.2 绕过CDN寻找真实IP的方法
(1)内部邮箱源。一般的邮件系统都在内部,没有经过CDN的解析,通过目标网站用户注册或者RSS订阅功能,查看邮件、寻找邮件头中的邮件服务器域名IP,ping 这个邮件服务器的域名, 就可以获得目标的真实IP (注意,必须是目标自己的邮件服务器,第三方或公共邮件服务器是没有用的)。
(2)扫描网站测试文件,如phpinfo 、test 等,从而找到目标的真实IP 。
(3)分站域名。很多网站主站的访问量会比较大,所以主站都是挂CDN 的,但是分站可能没有挂CDN,可以通过ping二级域名获取分站IP,可能会出现分站和主站不是同一个IP但在同一个C段下面的情况,从而能判断出目标的真实IP段。
(4)国外访问。国内的CDN往往只对国内用户的访问加速,而国外的CDN就不一定了。因此,通过国外在线代理网站App Synthetic Monitor (https://asm.ca.com/en/ping.php)访问,可能会得到真实的IP。
(5)查询历史域名的解析记录。也许目标很久以前并没有用过CDN,所以可以通过网站NETC RAFT(https://www.netcraft.com/)来观察域名的IP历史记录,也可以大致分析出目标的真实IP段。
(6)如果目标网站有自己的App,可以尝试利用Fiddler或BurpSuite截取App的请求,从里面找到目标的真实IP。
(7)绕过CloudFlare CDN查找真实IP 。现在很多网站都使用CloudFlare提供的CDN服务,在确定了目标网站使用CDN后,可以先尝试通过在线网站Cloud Flare Watch ( http://www.crimeflare.us/cfs.html#box)对CloudFlare客户网站进行真实IP查询。
4.6.4 验证获取的IP
找到目标的真实IP以后,如何验证其真实性呢?如果是Web,最简单的验证方法是直接尝试用IP访问,看看响应的页面是不是和访问域名返回的一样;或者在目标段比较大的情况下,借助类似Masscan的工具批扫描对应IP段中所有开了80、443、8080端口的IP,然后逐个尝试IP访问,观察响应结果是否为目标站点。
网站:站长之家:http://ip.chinaz.com/
同一个IP上的网站,例如A站与B站处于同一个IP上,A与B站的关系为旁站;另外A站与B站的IP均为1.1.1.*,叫C段。
(1)查询 IP经纬度 网站:,查询 IP经纬度 (2)得到IP经纬度后,通过GPS查询物理位置
此处提到的敏感信息主要包括:数据库文件、SQL注入、配置信息(server及PHP版本等)、源代码泄露、未授权访问和robots.txt等。
Google是世界上最强的搜索引擎之一,对一位渗透测试者而言,它可能是一款绝佳的黑客工具。我们可以通过构造特殊的关键字语法来搜索互联网上的相关敏感信息。下面列举了一些Google 的常用语法及其说明。(掌握)
实例:
- 我们尝试搜索一些学校网站的后台,语法为, 意思是搜索网页正文中含有“后台管理”并且域名后缀是edu.cn的网站,搜索结果如图所示。
- 搜索容易存在sql注入的页面,例如:
- 搜索指定的文件类型,例如:filetype pdf
- 搜索phpinfo,例如:intext:“PHP Version”
钟馗之眼zoomeye支持公网设备指纹检索和Web指纹检索。网址指纹包括应用名、版本、前端框架、后端框架、服务端语言、服务器操作系统、网站容器、内容管理系统和数据等。钟馗之眼zoomeye网址为:。以下列举常用的几种语法: (1)指定组件名称,指定版本。例如,,表示搜索IIS6.0组件
(2)指定端口号、指定主机。例如,,表示搜索开启3389端口的windows主机
shodan可以搜索联网设备,例如摄像头。网址为: (1)搜索JAWS/1.1摄像头。默认使用使用口令[admin/空],即可登录后台,查看摄像头。若无法登录,可绕过,在控制台输入以下JS代码,然后直接访问/view2.html。即可绕过登录验证进入控制台
通过BurpSuite工具同样可以获取一些服务器的信息,如运行的Server类型及版本、PHP的版本信息等。针对不同的Server ,可以利用不同的漏洞进行测试。
除此之外,也可以尝试在GitHub 上寻找相关敏感信息,如数据库连接信息、邮箱密码、uc-key 、阿里的osskey,有时还可以找到泄露的源代码等。 读者可以通过乌云漏洞表查询历史漏洞信息。
网站信息收集只要指收集指纹信息
必要性:在渗透测试中,只有识别出相应的Web容器或者CMS ,才能查找与其相关的漏洞,然后才能进行相应的渗透操作。
内容管理系统(content management system,CMS):是一种位于WEB前端(Web 服务器)和后端办公系统或流程(内容创作、编辑)之间的软件系统。内容的创作人员、编辑人员、发布人员使用内容管理系统来提交、修改、审批、发布内容。
采用netcraft扩展工具可以收集指纹信息,netcraft扩展工具的安装和使用方法如下: (1)打开火狐浏览器,点击其菜单栏,单击附加组件(add-ons)按钮。 (2)在搜索框输入netcraft,进行搜索 (3)进入搜索页面后,单击Netcraft Extension工具 (4)选择Add to Firefox (5)弹出对话框后,选择Add。 (6)之后勾选对话框,且选择Okay
(7)Netcraft Extension工具安装完成后,会在火狐浏览器的右上角显示下图所示的图标。 (8)当访问一个网站时,Netcraft Extension工具会显示该网站的相关信息。 (9)若想得到更详细的信息,可以点击site report,如下图,可以得到网站的IP地址、操作系统、服务器类型等信息。
Wappalyzer插件的安装方法与Netcraft Extension一致.
Web指纹识别代表工具有WhatWeb 、御剑Web 指纹识别、WebRobo 、椰树、轻量WEB指纹识别等,可以快速识别一些主流CMS。 Whatweb是kali系统自带工具,可以搜索直接使用。
- BugScaner: http://whatweb.bugscaner.com/look/。
- 云悉指纹:http://www.yunsee.cn/finger.html。
- WhatWeb: https://whatweb.net/。
目的:在渗透测试中,探测Web 目录结构和隐藏的敏感文件是一个必不可少的环节,从中可以获取网站的后台管理页面、文件上传界面, 甚至可能扫描出网站的源代码。
针对网站目录的扫描主要有:DirBuster 、御剑后台扫描珍藏版、wwwscan 、Spinder.py (轻量级快速单文件目录后台扫描)、Sensitivefilescan (轻量级快速单文件目录后台扫描)、Weakfilescan (轻量级快速单文件目录后台扫描)等工具。
(1)扫描线程自定义:用户可根据自身电脑的配置来设置调节扫描线程; (2)集合DIR扫描 ASP ASPX PHP JSP MDB数据库 包含所有网站脚本路径扫描; (3)默认探测200 (也就是扫描的网站真实存在的路径文件)。 (4)使用界面:
简介:DirBuster是OWASP开发的一款基于Java编写的、专门用于探视Web服务器的目录和隐藏文件。因为是用Java编写的,所以需要在Java运行环境ORE )下安装。该工具的界面是纯图形化的,用法相对简单。 (1)kali系统中自带了DirBuster工具,可以搜索找到该工具。 (2)点击运行后软件界面如下图。
(3)并按如下步骤进行设置,适当调整窗口大小,可以看到Start按钮。
- 在Target URL输入框中输入要扫描的网址,扫描时将请求方法设置为“Auto Switch”。
- 设置线程的数值,推荐在20-30之间。太大了容易引起系统死机。
- 选择字典类型,如果使用个人字典扫描,先选择“ List based brute force ”选项,再单击“ Browse ”选择字典,可以选择工具自带的字典,也可以选择自己的字典。可以点击List info查看软件自带字典的简介再做选择。
- 在Select starting options 中选择“ URL Fuzz ”方式进行扫描。设置fruzzing 时需要注意,在URL to fuzz里输入“/{dir}”。这里的{dir}是一个变量,用来代表字典中的每一行。如果你扫描的目标是http://www.xxx.com/admin/ ,那么就要在URL to fuzz 里填写“/admin/{dir}”,意思是在“{dir}”的前后可以随意拼接你想要的目录或者后缀,例如输入“/admin/{dir}.php ”就表示扫描admin目录下的所有php文件。
(1)社会工程学在渗透测试中起着不小的作用,利用社会工程学,攻击者可以从一名员工的口中挖掘出本应该是秘密的信息。 (2)假设攻击者对一家公司进行渗透测试,正在收集目标的真实IP阶段,此时就可以利用收集到的这家公司的某位销售人员的电子邮箱。首先,给这位销售人员发送邮件,假装对某个产品很感兴趣,显然销售人员会回复邮件。这样攻击者就可以通过分析邮件头来收集这家公司的真实IP地址及内部电子邮件服务器的相关信息。 (3)通过进一步地应用社会工程学,假设现在己经收集了目标人物的邮箱、QQ 、电话号码、姓名,以及域名服务商, 也通过爆破或者撞库的方法获取邮箱的密码,这时就可以冒充目标人物要求客服人员协助重置域管理密码,甚至技术人员会帮着重置密码,从而使攻击者拿下域管理控制台,然后做域劫持。 (4)除此以外,还可以利用“社工库”查询想要得到的信息,社工库是用社会工程学进行攻击时积累的各方数据的结构化数据库。这个数据库里有大量信息,甚至可以找到每个人的各种行为记录。利用收集到的邮箱,可以在社工库中找到己经泄露的密码,其实还可以通过搜索引擎搜索到社交账号等信息,然后通过利用社交和社会工程学得到的信息构造密码字典,对目标用户的邮箱和OA账号进行爆破或者撞库。
(1)了解信息收集阶段的目的; (2)掌握信息收集的内容; (3)掌握各种信息收集内容的方法。