0x00 前言
渗透测试对于每个人来说,测试的思路都不一样,但是大体思路还是信息收集->漏洞扫描->漏洞利用->权限提升->清理痕迹->输出报告。不过企业中的灰盒测试一般都是主要漏洞挖掘为主,这样的话,就需要有一个测试的方法论在进行测试了。so,这里给大家整理出渗透测试的方法论分享给大家。
0x01 搜索可见的内容
一般情况下,手动浏览就可以确定应用程序的大部分内容和功能。浏览应用程序的基本方法是从初始页面开始,依次浏览每一个链接和所有的多阶段功能。但是为了仔细检查枚举的内容,全面记录每一项确定的功能,简单的浏览就不再能满足我们的需求,有必要使用更加先进的工具。
(1)首先配置浏览器,使用代理工具,可以使用BurpSuite等工具监控和解析由代理服务器处理的Web内容,对站点实行被动抓取。
首先开启代理,然后打开Burpsuite并找到Target下的Site map
访问目标网站,对其进行自动爬取,由于完全自动化的方法在内容枚举方面还有一定的限制,例如
- 身份验证时爬虫的一些操作会让通过验证的会话中断;
- 向某个敏感内容提交无效输入,应用程序可能会自我防御,终止会话;
- 多阶段功能往往会严格的执行输入确认检查,可能不会接受自动工具提交的值;
- 爬虫可能会发现并使用敏感功能,造成重大损失等等。
所以更多的时候我们选择进行指定爬取,即用户通过常规方式浏览应用程序,来枚举应用程序的所有功能,生成的流量穿过一个组合拦截代理服务器与爬虫的工具,监控所有请求和响应,并且像一个正常的应用程序感知爬虫那样来分析应用程序的响应,BurpSuite中的爬虫就有这种用途。
(3)接下来进行指定爬取
以常规方式浏览整个应用程序,访问发现的每一个url,提交每一个表单并执行全部多阶段功能,尝试在JavaScript激活与禁用、cookie激活与禁用的情况下浏览。
如何禁用cookie
打开设置,找到Privacy,点击Firefox will右边的下拉菜单,选择use custom settings for history,然后将Accept cookies from sites前面的√去掉
如何禁用JavaScript
在地址栏输入about:config,点击 I accept the risk!
搜索javascript,找到javascript.enable,双击关闭
4)完成手动浏览和被动抓取以后,可以用一组发现的url作为种子,使用爬虫抓取应用程序。有时候这样可以发现其他在手动浏览时忽略的内容。在进行自动抓取前,首先应确定任何危险的或可能会中断应用程序会话的url,并配置爬虫,将它们排除在抓取范围之外。
PS:许多Web服务器的根目录下有一个名为robots.txt的文件,其中列出了站点不希望Web爬虫访问或搜索引擎列入索引的url。有时候这个文件中可能会包含一些敏感信息,这些信息很可能会危机Web程序的安全。
0x02 浏览公共资源
(1)使用因特网搜索引擎和历史档案,确定它们编入索引或保存的与目标应用程序有关的内容。
例如使用Wayback Machine查看历史档案
随便搜索一个网站,就用我们团队的网站来测试,可以看到不同的时间节点有保存的快照信息。
使用高级搜索提高效率。例如,在Google
中,可以使用site:
获取所有与目标站点有关的内容,使用link:
获取链接到目标站点的其他站点。如果在搜索过程中找到现有应用程序已经删除的内容,仍然可以从搜索引擎的缓存中查看这些内容。这些已经被删除的内容中可能包含尚未删除的其他资源的链接。
使用site: 目标站点
进行搜索
site:www.baidu.com
将返回Google引用的每一个目标站点的资源
site:www.baidu.com inurl:login将返回所有包含login表达式的页面。在大型且复杂的应用程序中,可以快速定位感兴趣的资源,如管理菜单、密码重置等功能
使用link:进行搜索
link:www.wandouxueyuan.com返回其他Web站点和应用程序中所有包含目标站点的链接的页面,其中包括过去内容的链接或仅第三方可用的功能。
使用related进行搜索
related:www.tencent.com它将返回与目标站点“相似”的页面,可能会包含大量的无关资料,但是也可能包含在其他站点与目标有关的讨论,可能会有所帮助。
(3)搜索在应用程序内容[如联系信息,包括并未在屏幕上显示的内容(如HTML注释)]中发现的任何姓名与电子邮件地址。除Web搜索外,还应进行新闻和分组搜索。在论坛上寻找与目标应用程序及其支持基础架构有关的所有技术信息。
此处使用evilscience靶机作为检索对象
在这个网站中有很多的注释,当然这些注释没有什么用,此处只是为了演示
在一些安全性不是很强的网站里面还会直接找到用户名
例如:
新闻搜索:
(4)检查已发布的任何WSDL文件,以生成应用程序可能采用的功能名称和参数值列表。
0x03 发现隐藏内容
0x04 查找默认的内容
0x05 枚举标识符制定的功能
0x06 调试参数
0x07 调试参数
0x08 确定数据输入点
0x09 确定所使用的技术
0x10 解析受攻击面
0x11 通过客户端传送数据
0x12 客户端输入控件
###