对某app的一次渗透(app渗透和网站渗透)
APP怎么查看漏洞,怎么渗透
1 文件检查:检查dex、res文件是否存在源代码、资源文件被窃取、替换等安全问题。
2 漏洞扫描:扫描代码是否使用混淆,存在安全漏洞。检测签名、XML主配文件进行安全检查,是否容易被静态注入、嵌入恶意代码。详见网站:http://safe.ijiami.cn/
3 后门检测:检测APP是否存在被二次打包,然后植入后门程序或第三方代码等风险。
4 一键生成:一键生成App关于源码、文件、权限、关键字等方面的安全风险分析报告。
常见APP漏洞及风险:静态破解、二次打包、本地存储数据窃取、界面截取、输入法攻击、协议抓取等。
如何通过修改burp suite 中的raw 信息进行渗透测试
刚接触web安全的时候,非常想找到一款集成型的渗透测试工具,找来找去,最终选择了Burp Suite,除了它功能强大之外,还有就是好用,易于上手。于是就从网上下载了一个破解版的来用,记得那时候好像是1.2版本,功能也没有现在这么强大。在使用的过程中,慢慢发现,网上系统全量的介绍BurpSuite的书籍太少了,大多是零星、片段的讲解,不成体系。后来慢慢地出现了不少介绍BurpSuite的视频,现状也变得越来越好。但每每遇到不知道的问题时,还是不得不搜寻BurpSuite的官方文档和英文网页来解决问题,也正是这些问题,慢慢让我觉得有必要整理一套全面的BurpSuite中文教程,算是为web安全界做尽自己的一份微薄之力,也才有了你们现在看到的这一系列文章。
我给这些文章取了IT行业图书比较通用的名称: 《BurpSuite实战指南》,您可以称我为中文编写者,文章中的内容主要源于BurpSuite官方文档和多位国外安全大牛的经验总结,我只是在他们的基础上,结合我的经验、理解和实践,编写成现在的中文教程。本书我也没有出版成纸质图书的计划,本着IT人互联分享的精神,放在github,做免费的电子书。于业界,算一份小小的贡献;于自己,算一次总结和锻炼。
以上,是为小记。
感谢您阅读此书,阅读过程中,如果发现错误的地方,欢迎发送邮件到 t0data@hotmail.com,感谢您的批评指正。
本书包含以下章节内容:
第一部分 Burp Suite 基础
Burp Suite 安装和环境配置
Burp Suite代理和浏览器设置
如何使用Burp Suite 代理
SSL和Proxy高级选项
如何使用Burp Target
如何使用Burp Spider
如何使用Burp Scanner
如何使用Burp Intruder
如何使用Burp Repeater
如何使用Burp Sequencer
如何使用Burp Decoder
如何使用Burp Comparer
第二部分 Burp Suite 高级
数据查找和拓展功能的使用
BurpSuite全局参数设置和使用
Burp Suite应用商店插件的使用
如何编写自己的Burp Suite插件
第三部分 Burp Suite 综合使用
使用Burp Suite测试Web Services服务
使用Burp, Sqlmap进行自动化SQL注入渗透测试
使用Burp、PhantomJS进行XSS检测
使用Burp 、Radamsa进行浏览器fuzzing
使用Burp 、Android Killer进行安卓app渗透测试
第一章 Burp Suite 安装和环境配置
Burp Suite是一个集成化的渗透测试工具,它集合了多种渗透测试组件,使我们自动化地或手工地能更好的完成对web应用的渗透测试和攻击。在渗透测试中,我们使用Burp Suite将使得测试工作变得更加容易和方便,即使在不需要娴熟的技巧的情况下,只有我们熟悉Burp Suite的使用,也使得渗透测试工作变得轻松和高效。
Burp Suite是由Java语言编写而成,而Java自身的跨平台性,使得软件的学习和使用更加方便。Burp Suite不像其他的自动化测试工具,它需要你手工的去配置一些参数,触发一些自动化流程,然后它才会开始工作。
Burp Suite可执行程序是java文件类型的jar文件,免费版的可以从免费版下载地址进行下载。免费版的BurpSuite会有许多限制,很多的高级工具无法使用,如果您想使用更多的高级功能,需要付费购买专业版。专业版与免费版的主要区别有
Burp Scanner
工作空间的保存和恢复
拓展工具,如Target Analyzer, Content Discovery和 Task Scheduler
本章主要讲述Burp Suite的基本配置,包含如下内容:
如何从命令行启动Burp Suite/br
如何设置JVM内存 大小/br
IPv6问题调试
如何从命令行启动Burp Suite
Burp Suite是一个无需安装软件,下载完成后,直接从命令行启用即可。但Burp Suite是用Java语言开发的,运行时依赖于JRE,需要提前Java可运行环境。
如果没有配置Java环境或者不知道如何配置的童鞋请参考win7电脑上的Java环境配置 配置完Java环境之后,首先验证Java配置是否正确,如果输入java -version 出现下图的结果,证明配置正确且已完成。
这时,你只要在cmd里执行java -jar /your_burpsuite_path/burpSuite.jar即可启动Burp Suite,或者,你将Burp Suite的jar放入class_path目录下,直接执行java -jar burpSuite.jar也可以启动。
==注意:your_burpsuite_path为你Burp Suite所在路径,burpSuite.jar文件名必须跟你下载的jar文件名称一致==
如何设置JVM内存 大小
如果Java可运行环境配置正确的话,当你双击burpSuite.jar即可启动软件,这时,Burp Suite自己会自动分配最大的可用内存,具体实际分配了多少内存,默认一般为64M。当我们在渗透测试过程,如果有成千上万个请求通过Burp Suite,这时就可能会导致Burp Suite因内存不足而崩溃,从而会丢失渗透测试过程中的相关数据,这是我们不希望看到的。因此,当我们启动Burp Suite时,通常会指定它使用的内存大小。 一般来说,我们通常会分配2G的内存供Burp Suite使用,如果你的电脑内存足够,可以分配4G;如果你的电脑内存足够小,你也可以分配128M。当你给Burp Suite分配足够多的内存时,它能做的工作也会更多。指定Burp Suite占用内存大小的具体配置方法是在启动脚本里添加如下命令行参数: 假设启动脚本的名称为burp_suite_start.bat,则该bat脚本的内容为
java -jar -Xmx2048M /your_burpsuite_path/burpsuite.jar
其中参数-Xmx指定JVM可用的最大内存,单位可以是M,也可以是G,如果是G为单位的话,则脚本内容为:
java -jar -Xmx2G /your_burpsuite_path/burpsuite.jar
更多关于JVM性能调优的知识请阅读 Oracle JVM Tuning
IPv6问题调试
Burp Suite是不支持IPv6地址进行数据通信的,这时在cmd控制台里就会抛出如下异常
java.net.SocketException: Permission denied
同时,浏览器访问时,也会出现异常
Burp proxy error: Permission denied: connect
当出现如上问题时,我们需要修改启动脚本,添加对IPv4的指定后,重启Burp Suite即可。
java -jar -Xmx2048M -Djava.net.preferIPv4Stack=true /your_burpsuite_path/burpsuite.jar
通过 -Djava.net.preferIPv4Stack=true参数的设置,告诉Java运行环境,使用IPv4协议栈进行数据通信,IPv6协议将会被禁止使用。 这个错误最常见于64位的windows操作系统上,使用了32位的JDK
第二章 Burp Suite代理和浏览器设置
Burp Suite代理工具是以拦截代理的方式,拦截所有通过代理的网络流量,如客户端的请求数据、服务器端的返回信息等。Burp Suite主要拦截http和https协议的流量,通过拦截,Burp Suite以中间人的方式,可以对客户端请求数据、服务端返回做各种处理,以达到安全评估测试的目的。
在日常工作中,我们最常用的web客户端就是的web浏览器,我们可以通过代理的设置,做到对web浏览器的流量拦截,并对经过Burp Suite代理的流量数据进行处理。
下面我们就分别看看IE、Firefox、Google Chrome下是如何配置Burp Suite代理的。
IE设置
当Burp Suite 启动之后,默认分配的代理地址和端口是127.0.0.1 :8080,我们可以从Burp Suite的proxy选项卡的options上查看。如图:
现在,我们通过如下步骤的设置即可完成IE通过Burp Suite 代理的相关配置。
启动IE浏览器
点击【工具】菜单,选择【Internet】选项
打开【连接】选项卡,点击【局域网设置】,进行代理设置。
在代理服务器设置的地址输入框中填写127.0.0.1,端口填写8080,点击【确定】,完成代理服务器的设置。
这时,IE的设置已经完成,你可以访问 http://burp 将会看到Burp Suite的欢迎界面。
FireFox设置
与IE的设置类似,在FireFox中,我们也要进行一些参数设置,才能将FireFox浏览器的通信流量,通过BurpSuite代理进行传输。详细的步骤如下:
启动FireFox浏览器,点击【工具】菜单,点击【选项】。
在新打开的about:preferences#advanced窗口中,依次点击【高级】-【网络】,我们将会看到FireFox连接网络的设置选项。
点击【设置】,在弹出的【连接设置】对话框中,找到“http代理”,填写127.0.0.1,端口填写8080,最后点击【确认】保存参数设置,完成FireFox的代理配置。
当然,FireFox浏览器中,可以添加FireFox的扩展组件,对代理服务器进行管理。例如FireX Proxy、Proxy Swither都是很好用的组件,感兴趣的读者可以自己下载试用一下。
Google Chrome设置
Google Chrome使用Burp Suite作为代理服务器的配置步骤如下:
启动Google Chrome浏览器,在地址栏输入chrome://settings/,回车后即显示Google Chrome浏览器的配置界面
点击底部的【显示高级设置】,将显示Google Chrome浏览器的高级设置。
当然,你也可以直接在搜索框中输入“代理”,回车后将自动定位到代理服务器设置功能。
点击【更改代理服务器设置】,windows系统下将会弹出IE浏览器的代理设置,此时,按照IE浏览器的设置步骤,完成代理服务器的配置即可。
除了上述的三种常用的浏览器外,还有Safari浏览器也有不少的用户在使用,其代理配置请点击阅读进行查看。
第三章 如何使用Burp Suite代理
Burp Proxy 是Burp Suite以用户驱动测试流程功能的核心,通过代理模式,可以让我们拦截、查看、修改所有在客户端和服务端之间传输的数据。
本章主要讲述以下内容:
Burp Proxy基本使用
数据拦截与控制
可选项配置Options
历史记录History
Burp Proxy基本使用
通过上一章的学习,我们对Burp Suite代理模式和浏览器代理设置有了基本的了解。Burp Proxy的使用是一个循序渐进的过程,刚开始使用时,可能并不能很快就获取你所期望的结果,慢慢地当你熟悉了它的功能和使用方法,你就可以用它很好地对一个产品系统做安全能力评估。 一般使用Burp Proxy时,大体涉及环节如下:
首先,确认JRE已经安装好,Burp Suite可以启动并正常运行,且已经完成浏览器的代理服务器配置。
打开Proxy功能中的Intercept选项卡,确认拦截功能为“Interception is on”状态,如果显示为“Intercept is off”则点击它,打开拦截功能。
打开浏览器,输入你需要访问的URL(以http://baike.baidu.com/为例)并回车,这时你将会看到数据流量经过Burp Proxy并暂停,直到你点击【Forward】,才会继续传输下去。如果你点击了【Drop】,则这次通过的数据将会被丢失,不再继续处理。
当我们点击【Forward】之后,我们将看到这次请求返回的所有数据。
当Burp Suite拦截的客户端和服务器交互之后,我们可以在Burp Suite的消息分析选项卡中查看这次请求的实体内容、消息头、请求参数等信息。消息分析选项视图主要包括以下四项:
Raw 这是视图主要显示web请求的raw格式,包含请求地址、http协议版本、主机头、浏览器信息、Accept可接受的内容类型、字符集、编码方式、cookie等。你可以通过手工修改这些信息,对服务器端进行渗透测试。
params 这个视图主要显示客户端请求的参数信息、包括GET或者POST请求的参数、Cookie参数。渗透人员可以通过修改这些请求参数来完成对服务器端的渗透测试。
headers 这个视图显示的信息和Raw的信息类似,只不过在这个视图中,展示得更直观、友好。
Hex 这个视图显示Raw的二进制内容,你可以通过hex编辑器对请求的内容进行修改。
默认情况下,Burp Proxy只拦截请求的消息,普通文件请求如css、js、图片是不会被拦截的,你可以修改默认的拦截选项来拦截这些静态文件,当然,你也可以通过修改拦截的作用域、参数或者服务器端返回的关键字来控制Burp Proxy的消息拦截,这些在后面的章节中我们会进一步的学习。 所有流经Burp Proxy的消息,都会在http history记录下来,我们可以通过历史选项卡,查看传输的数据内容,对交互的数据进行测试和验证。同时,对于拦截到的消息和历史消息,都可以通过右击弹出菜单,发送到Burp的其他组件,如Spider、Scanner、Repeater、Intruder、Sequencer、Decoder、Comparer、Extender,进行进一步的测试。如下图所示:
数据拦截与控制
Burp Proxy的拦截功能主要由Intercept选项卡中的Forward、Drop、Interception is on/off、Action、Comment 以及Highlight构成,它们的功能分别是: Forward的功能是当你查看过消息或者重新编辑过消息之后,点击此按钮,将发送消息至服务器端。 Drop的功能是你想丢失当前拦截的消息,不再forward到服务器端。Interception is on表示拦截功能打开,拦截所有通过Burp Proxy的请求数据;Interception is off表示拦截功能关闭,不再拦截通过Burp Proxy的所有请求数据。 Action的功能是除了将当前请求的消息传递到Spider、Scanner、Repeater、Intruder、Sequencer、Decoder、Comparer组件外,还可以做一些请求消息的修改,如改变GET或者POST请求方式、改变请求body的编码,同时也可以改变请求消息的拦截设置,如不再拦截此主机的消息、不再拦截此IP地址的消息、不再拦截此种文件类型的消息、不再拦截此目录的消息,也可以指定针对此消息拦截它的服务器端返回消息。
Comment的功能是指对拦截的消息添加备注,在一次渗透测试中,你通常会遇到一连串的请求消息,为了便于区分,在某个关键的请求消息上,你可以添加备注信息。
Highlight的功能与Comment功能有点类似,即对当前拦截的消息设置高亮,以便于其他的请求消息相区分。
除了Intercept中可以对通过Proxy的消息进行控制外,在可选项设置选项卡Options中也有很多的功能设置也可以对流经的消息进行控制和处理。
可选项配置Options
当我们打开可选项设置选项卡Options,从界面显示来看,主要包括以下几大板块(涉及https的功能不包含在本章内容里,后面会一章专门叙述):
客户端请求消息拦截
服务器端返回消息拦截
服务器返回消息修改
正则表达式配置
其他配置项
客户端请求消息拦截
客户端请求消息拦截是指拦截客户端发送到服务器端消息的相关配置选项,其界面如下:
主要包含拦截规则配置、错误消息自动修复、自动更新Content-Length消息头三个部分。
如果intercept request based on the follow rules的checkbox被选中,则拦截所有符合勾选按钮下方列表中的请求规则的消息都将被拦截,拦截时,对规则的过滤是自上而下进行的。当然,我们可以根据自己的需求,通过【Up】和【Down】按钮,调节规则所在位置和排序。同时,我们可以点击【Add】添加一条规则,也可以选中一条规则,通过点击【Edit】进行编辑、点击【Remove】进行删除。当我们点击【Add】按钮时,会弹出规则添加的输入对话框,如下图:
拦截规则添加时,共包含4个输入项。Boolean opertor表示当前的规则与其他规则是与的方式(And)还是或的方式(Or)共存;Match type表示匹配类型,此处匹配类型可以基于域名、IP地址、协议、请求方法、URL、文件类型、参数, cookies, 头部或者内容, 状态码, MIME类型, HTML页面的title等。Match relationship表示此条规则是匹配还是不匹配Match condition输入的关键字。当我们输入这些信息,点击【OK】按钮,则规则即被保存。
如果Automatically fix missing的checkbox被选中,则表示在一次消息传输中,Burp Suite会自动修复丢失或多余的新行。比如说,一条被修改过的请求消息,如果丢失了头部结束的空行,Burp Suite会自动添加上;如果一次请求的消息体中,URl编码参数中包含任何新的换行,Burp Suite将会移除。此项功能在手工修改请求消息时,为了防止错误,有很好的保护效果。
如果Automatically update Content-Length的checkbox被选中,则当请求的消息被修改后,Content-Length消息头部也会自动被修改,替换为与之相对应的值。
如何对网站进行渗透测试和漏洞扫描
零、前言
渗透测试在未得到被测试方授权之前依据某些地区法律规定是违法行为。 这里我们提供的所有渗透测试方法均为(假设为)合法的评估服务,也就是通常所说的道德黑客行为(Ethical hacking),因此我们这里的所有读者应当都是Ethical Hackers,如果您还不是,那么我希望您到过这里后会成为他们中的一员 ;)
这里,我还想对大家说一些话:渗透测试重在实践,您需要一颗永不言败的心和一个有着活跃思维的大脑。不是说您将这一份文档COPY到您网站上或者保存到本地电脑您就会了,即使您将它打印出来沾点辣椒酱吃了也不行,您一定要根据文档一步一步练习才行。而且测试重在用脑,千万别拿上一两个本文中提到的工具一阵乱搞,我敢保证:互联网的安全不为因为这样而更安全。祝您好运。。。
一、简介
什么叫渗透测试?
渗透测试最简单直接的解释就是:完全站在攻击者角度对目标系统进行的安全性测试过程。
进行渗透测试的目的?
了解当前系统的安全性、了解攻击者可能利用的途径。它能够让管理人员非常直观的了解当前系统所面临的问题。为什么说叫直观呢?就像Mitnick书里面提到的那样,安全管理(在这里我们改一下,改成安全评估工作)需要做到面面俱到才算成功,而一位黑客(渗透测试)只要能通过一点进入系统进行破坏,他就算是很成功的了。
渗透测试是否等同于风险评估?
不是,你可以暂时理解成渗透测试属于风险评估的一部分。事实上,风险评估远比渗透测试复杂的多,它除渗透测试外还要加上资产识别,风险分析,除此之外,也还包括了人工审查以及后期的优化部分(可选)。
已经进行了安全审查,还需要渗透测试吗?
如果我对您说:嘿,中国的现有太空理论技术通过计算机演算已经能够证明中国完全有能力实现宇航员太空漫步了,没必要再发射神8了。您能接受吗?
渗透测试是否就是黑盒测试?
否,很多技术人员对这个问题都存在这个错误的理解。渗透测试不只是要模拟外部黑客的入侵,同时,防止内部人员的有意识(无意识)攻击也是很有必要的。这时,安全测试人员可以被告之包括代码片段来内的有关于系统的一些信息。这时,它就满足灰盒甚至白盒测试。
渗透测试涉及哪些内容?
技术层面主要包括网络设备,主机,数据库,应用系统。另外可以考虑加入社会工程学(入侵的艺术/THE ART OF INTRUSION)。
渗透测试有哪些不足之处?
主要是投入高,风险高。而且必须是专业的Ethical Hackers才能相信输出的最终结果。
你说的那么好,为什么渗透测试工作在中国开展的不是很火热呢?
我只能说:会的,一定会的。渗透测试的关键在于没法证明你的测试结果就是完善的。用户不知道花了钱证明了系统有问题以后,自己的安全等级到了一个什么程序。但是很显然,用户是相信一个专业且经验丰富的安全团队的,这个在中国问题比较严重。在我接触了一些大型的安全公司进行的一些渗透测试过程来看,测试人员的水平是对不住开的那些价格的,而且从测试过程到结果报表上来看也是不负责的。我估计在三年以后,这种情况会有所改观,到时一方面安全人员的技术力量有很大程度的改观,另一方面各企业对渗透测试会有一个比较深刻的理解,也会将其做为一种IT审计的方式加入到开发流程中去。渗透测试的专业化、商业化会越来越成熟。
二、制定实施方案
实施方案应当由测试方与客户之间进行沟通协商。一开始测试方提供一份简单的问卷调查了解客户对测试的基本接收情况。内容包括但不限于如下:
目标系统介绍、重点保护对象及特性。
是否允许数据破坏?
是否允许阻断业务正常运行?
测试之前是否应当知会相关部门接口人?
接入方式?外网和内网?
测试是发现问题就算成功,还是尽可能的发现多的问题?
渗透过程是否需要考虑社会工程?
。。。
在得到客户反馈后,由测试方书写实施方案初稿并提交给客户,由客户进行审核。在审核完成后,客户应当对测试方进行书面委托授权。这里,两部分文档分别应当包含如下内容:
实施方案部分:
...
书面委托授权部分:
...
三、具体操作过程
1、信息收集过程
网络信息收集:
在这一部还不会直接对被测目标进行扫描,应当先从网络上搜索一些相关信息,包括Google Hacking, Whois查询, DNS等信息(如果考虑进行社会工程学的话,这里还可以相应从邮件列表/新闻组中获取目标系统中一些边缘信息如内部员工帐号组成,身份识别方式,邮件联系地址等)。
1.使用whois查询目标域名的DNS服务器
2.nslookup
set type=all
domain
server ns server
set q=all
ls -d domain
涉及的工具包括:Google,Demon,webhosting.info,Apollo,Athena,GHDB.XML,netcraft,seologs 除此之外,我想特别提醒一下使用Googlebot/2.1绕过一些文件的获取限制。
Google hacking 中常用的一些语法描述
1.搜索指定站点关键字site。你可以搜索具体的站点如site:www.nosec.org。使用site:nosec.org可以搜索该域名下的所有子域名的页面。甚至可以使用site:org.cn来搜索中国政府部门的网站。
2.搜索在URL网址中的关键字inurl。比如你想搜索带参数的站点,你可以尝试用inurl:asp?id=
3.搜索在网页标题中的关键字intitle。如果你想搜索一些登陆后台,你可以尝试使用intitle:"admin login"
目标系统信息收集:
通过上面一步,我们应当可以简单的描绘出目标系统的网络结构,如公司网络所在区域,子公司IP地址分布,VPN接入地址等。这里特别要注意一些比较偏门的HOST名称地址,如一些backup开头或者temp开关的域名很可能就是一台备份服务器,其安全性很可能做的不够。
从获取的地址列表中进行系统判断,了解其组织架构及操作系统使用情况。最常用的方法的是目标所有IP网段扫描。
端口/服务信息收集:
这一部分已经可以开始直接的扫描操作,涉及的工具包括:nmap,thc-amap
1.我最常使用的参数
nmap -sS -p1-10000 -n -P0 -oX filename.xml --open -T5 ip address
应用信息收集:httprint,SIPSCAN,smap
这里有必要将SNMP拿出来单独说一下,因为目前许多运营商、大型企业内部网络的维护台通过SNMP进行数据传输,大部分情况是使用了默认口令的,撑死改了private口令。这样,攻击者可以通过它收集到很多有效信息。snmp-gui,HiliSoft MIB Browser,mibsearch,net-snmp都是一些很好的资源。
2、漏洞扫描
这一步主要针对具体系统目标进行。如通过第一步的信息收集,已经得到了目标系统的IP地址分布及对应的域名,并且我们已经通过一些分析过滤出少许的几个攻击目标,这时,我们就可以针对它们进行有针对性的漏洞扫描。这里有几个方面可以进行:
针对系统层面的工具有:ISS, Nessus, SSS, Retina, 天镜, 极光
针对WEB应用层面的工具有:AppScan, Acunetix Web Vulnerability Scanner, WebInspect, Nstalker
针对数据库的工具有:ShadowDatabaseScanner, NGSSQuirreL
针对VOIP方面的工具有:PROTOS c07 sip(在测试中直接用这个工具轰等于找死)以及c07 h225, Sivus, sipsak等。
事实上,每个渗透测试团队或多或少都会有自己的测试工具包,在漏洞扫描这一块针对具体应用的工具也比较个性化。
3、漏洞利用
有时候,通过服务/应用扫描后,我们可以跳过漏洞扫描部分,直接到漏洞利用。因为很多情况下我们根据目标服务/应用的版本就可以到一些安全网站上获取针对该目标系统的漏洞利用代码,如milw0rm, securityfocus,packetstormsecurity等网站,上面都对应有搜索模块。实在没有,我们也可以尝试在GOOGLE上搜索“应用名称 exploit”、“应用名称 vulnerability”等关键字。
当然,大部分情况下你都可以不这么麻烦,网络中有一些工具可供我们使用,最著名的当属metasploit了,它是一个开源免费的漏洞利用攻击平台。其他的多说无益,您就看它从榜上无名到冲进前五(top 100)这一点来说,也能大概了解到它的威力了。除此之外,如果您(您们公司)有足够的moeny用于购买商用软件的话,CORE IMPACT是相当值得考虑的,虽然说价格很高,但是它却是被业界公认在渗透测试方面的泰山北斗,基本上测试全自动。如果您觉得还是接受不了,那么您可以去购买CANVAS,据说有不少0DAY,不过它跟metasploit一样,是需要手动进行测试的。最后还有一个需要提及一下的Exploitation_Framework,它相当于一个漏洞利用代码管理工具,方便进行不同语言,不同平台的利用代码收集,把它也放在这里是因为它本身也维护了一个exploit库,大家参考着也能使用。
上面提到的是针对系统进行的,在针对WEB方面,注入工具有NBSI, OWASP SQLiX, SQL Power Injector, sqlDumper, sqlninja, sqlmap, Sqlbftools, priamos, ISR-sqlget***等等。
在针对数据库方面的工具有:
数据库 工具列表 Oracle(1521端口): 目前主要存在以下方面的安全问题:
1、TNS监听程序攻击(sid信息泄露,停止服务等)
2、默认账号(default password list)
3、SQL INJECTION(这个与传统的意思还不太一样)
4、缓冲区溢出,现在比较少了。 thc-orakel, tnscmd, oscanner, Getsids, TNSLSNR, lsnrcheck, OAT, Checkpwd, orabf MS Sql Server(1433、1434端口) Mysql(3306端口) DB2(523、50000、50001、50002、50003端口) db2utils Informix(1526、1528端口)
在针对Web服务器方面的工具有:
WEB服务器 工具列表 IIS IISPUTSCANNER Tomcat 想起/admin和/manager管理目录了吗?另外,目录列表也是Tomcat服务器中最常见的问题。比如5.*版本中的http://127.0.0.1/;index.jsp
http://www.example.com/foo/"../manager/html
http://www.example.com:8080/examples/servlets/servlet/CookieExample?cookiename=HAHAcookievalue=%5C%22FOO%3B+Expires%3DThu%2C+1+Jan+2009+00%3A00%3A01+UTC%3B+Path%3D%2F%3B
http://www.example.com:8080/servlets-examples/servlet/CookieExample?cookiename=BLOCKERcookievalue=%5C%22A%3D%27%3B+Expires%3DThu%2C+1+Jan+2009+00%3A00%3A01+UTC%3B+Path%3D%2Fservlets-examples%2Fservlet+%3B JBOSS jboss的漏洞很少,老版本中8083端口有%符号的漏洞:
GET %. HTTP/1.0可以获取物理路径信息,
GET %server.policy HTTP/1.0可以获取安全策略配置文档。
你也可以直接访问GET %org/xxx/lib.class来获取编译好的java程序,再使用一些反编译工具还原源代码。 Apache Resin http://victim/C:%5C/
http://victim/resin-doc/viewfile/?file=index.jsp
http://victim/resin-doc/viewfile/?contextpath=/otherwebappservletpath=file=WEB-INF/web.xml
http://victim/resin-doc/viewfile/?contextpath=/servletpath=file=WEB-INF/classes/com/webapp/app/target.class
http://victim/[path]/[device].[extension]
http://victim/%20.."web-inf
http://victim/%20
http://victim/[path]/%20.xtp WebLogic
Web安全测试主要围绕几块进行:
Information Gathering:也就是一般的信息泄漏,包括异常情况下的路径泄漏、文件归档查找等
Business logic testing:业务逻辑处理攻击,很多情况下用于进行业务绕过或者欺骗等等
Authentication Testing:有无验证码、有无次数限制等,总之就是看能不能暴力破解或者说容不容易通过认证,比较直接的就是“默认口令”或者弱口令了
Session Management Testing:会话管理攻击在COOKIE携带认证信息时最有效
Data Validation Testing:数据验证最好理解了,就是SQL Injection和Cross Site Script等等
目前网上能够找到许多能够用于进行Web测试的工具,根据不同的功能分主要有:
枚举(Enumeration): DirBuster, http-dir-enum, wget
基于代理测试类工具:paros, webscarab, Burp Suite
针对WebService测试的部分有一些尚不是很成熟的工具,如:wsbang,wschess,wsmap,wsdigger,wsfuzzer
这一部分值得一提的是,很多渗透测试团队都有着自己的测试工具甚至是0DAY代码,最常见的是SQL注入工具,现网开发的注入工具(如NBSI等)目前都是针对中小企业或者是个人站点/数据库进行的,针对大型目标系统使用的一些相对比较偏门的数据库系统(如INFORMIX,DB2)等,基本上还不涉及或者说还不够深入。这时各渗透测试团队就开发了满足自身使用习惯的测试工具。
在针对无线环境的攻击有:WifiZoo
4、权限提升
在前面的一些工作中,你或许已经得到了一些控制权限,但是对于进一步攻击来说却还是不够。例如:你可能很容易的能够获取Oracle数据库的访问权限,或者是得到了UNIX(AIX,HP-UX,SUNOS)的一个基本账号权限,但是当你想进行进一步的渗透测试的时候问题就来了。你发现你没有足够的权限打开一些密码存储文件、你没有办法安装一个SNIFFER、你甚至没有权限执行一些很基本的命令。这时候你自然而然的就会想到权限提升这个途径了。
目前一些企业对于补丁管理是存在很大一部分问题的,他们可能压根就没有想过对一些服务器或者应用进行补丁更新,或者是延时更新。这时候就是渗透测试人员的好机会了。经验之谈:有一般权限的Oracle账号或者AIX账号基本上等于root,因为这就是现实生活。
5、密码破解
有时候,目标系统任何方面的配置都是无懈可击的,但是并不是说就完全没办法进入。最简单的说,一个缺少密码完全策略的论证系统就等于你安装了一个不能关闭的防盗门。很多情况下,一些安全技术研究人员对此不屑一顾,但是无数次的安全事故结果证明,往往破坏力最大的攻击起源于最小的弱点,例如弱口令、目录列表、SQL注入绕过论证等等。所以说,对于一些专门的安全技术研究人员来说,这一块意义不大,但是对于一个ethical hacker来说,这一步骤是有必要而且绝大部分情况下是必须的。;)
目前比较好的网络密码暴力破解工具有:thc-hydra,brutus
hydra.exe -L users.txt -P passwords.txt -o test.txt -s 2121 www.heimian.com ftp
目前网络中有一种资源被利用的很广泛,那就是rainbow table技术,说白了也就是一个HASH对应表,有一些网站提供了该种服务,对外宣称存储空间大于多少G,像rainbowcrack更是对外宣称其数据量已经大于1.3T。
针对此种方式对外提供在线服务的有:
网址 描述 rainbowcrack 里面对应了多种加密算法的HASH。 http://gdataonline.com/seekhash.php http://www.milw0rm.com/cracker/info.php http://www.hashchecker.com/?_sls=search_hash http://bokehman.com/cracker/ http://passcracking.ru/ http://www.md5.org.cn http://www.cmd5.com/ 数据量全球第一,如果本站无法破解,那么你只能去拜春哥...
当然,有些单机破解软件还是必不可少的:Ophcrack,rainbowcrack(国人开发,赞一个),cain,L0phtCrack(破解Windows密码),John the Ripper(破解UNIX/LINUX)密码,当然,还少不了一个FindPass...
针对网络设备的一些默认帐号,你可以查询http://www.routerpasswords.com/和http://www.phenoelit-us.org/dpl/dpl.html
在渗透测试过程中,一旦有机会接触一些OFFICE文档,且被加了密的话,那么,rixler是您马上要去的地方,他们提供的OFFICE密码套件能在瞬间打开OFFICE文档(2007中我没有试过,大家有机会测试的话请给我发一份测试结果说明,谢谢)。看来微软有理由来个补丁什么的了。对于企业来说,您可以考虑使用铁卷或者RMS了。
6、日志清除
It is not necessary actually.
7、进一步渗透
攻入了DMZ区一般情况下我们也不会获取多少用价值的信息。为了进一步巩固战果,我们需要进行进一步的内网渗透。到这一步就真的算是无所不用其及。最常用且最有效的方式就是Sniff抓包(可以加上ARP欺骗)。当然,最简单的你可以翻翻已入侵机器上的一些文件,很可能就包含了你需要的一些连接帐号。比如说你入侵了一台Web服务器,那么绝大部分情况下你可以在页面的代码或者某个配置文件中找到连接数据库的帐号。你也可以打开一些日志文件看一看。
除此之外,你可以直接回到第二步漏洞扫描来进行。
四、生成报告
报告中应当包含:
薄弱点列表清单(按照严重等级排序)
薄弱点详细描述(利用方法)
解决方法建议
参与人员/测试时间/内网/外网
五、测试过程中的风险及规避
在测试过程中无可避免的可能会发生很多可预见和不可预见的风险,测试方必须提供规避措施以免对系统造成重大的影响。以下一些可供参考:
1. 不执行任何可能引起业务中断的攻击(包括资源耗竭型DoS,畸形报文攻击,数据破坏)。
2. 测试验证时间放在业务量最小的时间进行。
3. 测试执行前确保相关数据进行备份。
4. 所有测试在执行前和维护人员进行沟通确认。
5. 在测试过程中出现异常情况时立即停止测试并及时恢复系统。
6. 对原始业务系统进行一个完全的镜像环境,在镜像环境上进行渗透测试。
渗透测试应该怎么做呢?
01、信息收集
1、域名、IP、端口
域名信息查询:信息可用于后续渗透
IP信息查询:确认域名对应IP,确认IP是否真实,确认通信是否正常
端口信息查询:NMap扫描,确认开放端口
发现:一共开放两个端口,80为web访问端口,3389为windows远程登陆端口,嘿嘿嘿,试一下
发现:是Windows Server 2003系统,OK,到此为止。
2、指纹识别
其实就是网站的信息。比如通过可以访问的资源,如网站首页,查看源代码:
看看是否存在文件遍历的漏洞(如图片路径,再通过…/遍历文件)
是否使用了存在漏洞的框架(如果没有现成的就自己挖)
02、漏洞扫描
1、主机扫描
Nessus
经典主机漏扫工具,看看有没有CVE漏洞:
2、Web扫描
AWVS(Acunetix | Website Security Scanner)扫描器
PS:扫描器可能会对网站构成伤害,小心谨慎使用。
03、渗透测试
1、弱口令漏洞
漏洞描述
目标网站管理入口(或数据库等组件的外部连接)使用了容易被猜测的简单字符口令、或者是默认系统账号口令。
渗透测试
① 如果不存在验证码,则直接使用相对应的弱口令字典使用burpsuite 进行爆破
② 如果存在验证码,则看验证码是否存在绕过、以及看验证码是否容易识别
风险评级:高风险
安全建议
① 默认口令以及修改口令都应保证复杂度,比如:大小写字母与数字或特殊字符的组合,口令长度不小于8位等
② 定期检查和更换网站管理口令
2、文件下载(目录浏览)漏洞
漏洞描述
一些网站由于业务需求,可能提供文件查看或下载的功能,如果对用户查看或下载的文件不做限制,则恶意用户就能够查看或下载任意的文件,可以是源代码文件、敏感文件等。
渗透测试
① 查找可能存在文件包含的漏洞点,比如js,css等页面代码路径
② 看看有没有文件上传访问的功能
③ 采用…/来测试能否夸目录访问文件
风险评级:高风险
安全建议
① 采用白名单机制限制服务器目录的访问,以及可以访问的文件类型(小心被绕过)
② 过滤【./】等特殊字符
③ 采用文件流的访问返回上传文件(如用户头像),不要通过真实的网站路径。
示例:tomcat,默认关闭路径浏览的功能:
param-namelistings/param-name
param-valuefalse/param-value
3、任意文件上传漏洞
漏洞描述
目标网站允许用户向网站直接上传文件,但未对所上传文件的类型和内容进行严格的过滤。
渗透测试
① 收集网站信息,判断使用的语言(PHP,ASP,JSP)
② 过滤规则绕过方法:文件上传绕过技巧
风险评级:高风险
安全建议
① 对上传文件做有效文件类型判断,采用白名单控制的方法,开放只允许上传的文件型式;
② 文件类型判断,应对上传文件的后缀、文件头、图片类的预览图等做检测来判断文件类型,同时注意重命名(Md5加密)上传文件的文件名避免攻击者利用WEB服务的缺陷构造畸形文件名实现攻击目的;
③ 禁止上传目录有执行权限;
④ 使用随机数改写文件名和文件路径,使得用户不能轻易访问自己上传的文件。
4、命令注入漏洞
漏洞描述
目标网站未对用户输入的字符进行特殊字符过滤或合法性校验,允许用户输入特殊语句,导致各种调用系统命令的web应用,会被攻击者通过命令拼接、绕过黑名单等方式,在服务端运行恶意的系统命令。
渗透测试
风险评级:高风险
安全建议
① 拒绝使用拼接语句的方式进行参数传递;
② 尽量使用白名单的方式(首选方式);
③ 过滤危险方法、特殊字符,如:【|】【】【;】【’】【"】等
5、SQL注入漏洞
漏洞描述
目标网站未对用户输入的字符进行特殊字符过滤或合法性校验,允许用户输入特殊语句查询后台数据库相关信息
渗透测试
① 手动测试:判断是否存在SQL注入,判断是字符型还是数字型,是否需要盲注
② 工具测试:使用sqlmap等工具进行辅助测试
风险评级:高风险
安全建议
① 防范SQL注入攻击的最佳方式就是将查询的逻辑与其数据分隔,如Java的预处理,PHP的PDO
② 拒绝使用拼接SQL的方式
6、跨站脚本漏洞
漏洞描述
当应用程序的网页中包含不受信任的、未经恰当验证或转义的数据时,或者使用可以创建 HTML或JavaScript 的浏览器 API 更新现有的网页时,就会出现 XSS 缺陷。XSS 让攻击者能够在受害者的浏览器中执行脚本,并劫持用户会话、破坏网站或将用户重定向到恶意站点。
三种XSS漏洞:
① 存储型:用户输入的信息被持久化,并能够在页面显示的功能,都可能存在存储型XSS,例如用户留言、个人信息修改等。
② 反射型:URL参数需要在页面显示的功能都可能存在反射型跨站脚本攻击,例如站内搜索、查询功能。
③ DOM型:涉及DOM对象的页面程序,包括:document.URL、document.location、document.referrer、window.location等
渗透测试
存储型,反射型,DOM型
风险评级:高风险
安全建议
① 不信任用户提交的任何内容,对用户输入的内容,在后台都需要进行长度检查,并且对【】【】【"】【’】【】等字符做过滤
② 任何内容返回到页面显示之前都必须加以html编码,即将【】【】【"】【’】【】进行转义。
7、跨站请求伪造漏洞
漏洞描述
CSRF,全称为Cross-Site Request Forgery,跨站请求伪造,是一种网络攻击方式,它可以在用户毫不知情的情况下,以用户的名义伪造请求发送给被攻击站点,从而在未授权的情况下进行权限保护内的操作,如修改密码,转账等。
渗透测试
风险评级:中风险(如果相关业务极其重要,则为高风险)
安全建议
① 使用一次性令牌:用户登录后产生随机token并赋值给页面中的某个Hidden标签,提交表单时候,同时提交这个Hidden标签并验证,验证后重新产生新的token,并赋值给hidden标签;
② 适当场景添加验证码输入:每次的用户提交都需要用户在表单中填写一个图片上的随机字符串;
③ 请求头Referer效验,url请求是否前部匹配Http(s)?/ServerHost
④ 关键信息输入确认提交信息的用户身份是否合法,比如修改密码一定要提供原密码输入
⑤ 用户自身可以通过在浏览其它站点前登出站点或者在浏览器会话结束后清理浏览器的cookie;
8、内部后台地址暴露
漏洞描述
一些仅被内部访问的地址,对外部暴露了,如:管理员登陆页面;系统监控页面;API接口描述页面等,这些会导致信息泄露,后台登陆等地址还可能被爆破。
渗透测试
① 通过常用的地址进行探测,如login.html,manager.html,api.html等;
② 可以借用burpsuite和常规页面地址字典,进行扫描探测
风险评级:中风险
安全建议
① 禁止外网访问后台地址
② 使用非常规路径(如对md5加密)
9、信息泄露漏洞
漏洞描述
① 备份信息泄露:目标网站未及时删除编辑器或者人员在编辑文件时,产生的临时文件,或者相关备份信息未及时删除导致信息泄露。
② 测试页面信息泄露:测试界面未及时删除,导致测试界面暴露,被他人访问。
③ 源码信息泄露:目标网站文件访问控制设置不当,WEB服务器开启源码下载功能,允许用户访问网站源码。
④ 错误信息泄露:目标网站WEB程序和服务器未屏蔽错误信息回显,页面含有CGI处理错误的代码级别的详细信息,例如SQL语句执行错误原因,PHP的错误行数等。
⑤ 接口信息泄露:目标网站接口访问控制不严,导致网站内部敏感信息泄露。
渗透测试
① 备份信息泄露、测试页面信息泄露、源码信息泄露,测试方法:使用字典,爆破相关目录,看是否存在相关敏感文件
② 错误信息泄露,测试方法:发送畸形的数据报文、非正常的报文进行探测,看是否对错误参数处理妥当。
③ 接口信息泄露漏洞,测试方法:使用爬虫或者扫描器爬取获取接口相关信息,看目标网站对接口权限是否合理
风险评级:一般为中风险,如果源码大量泄漏或大量客户敏感信息泄露。
安全建议
① 备份信息泄露漏洞:删除相关备份信息,做好权限控制
② 测试页面信息泄露漏洞:删除相关测试界面,做好权限控制
③ 源码信息泄露漏洞:做好权限控制
④ 错误信息泄露漏洞:将错误信息对用户透明化,在CGI处理错误后可以返回友好的提示语以及返回码。但是不可以提示用户出错的代码级别的详细原因
⑤ 接口信息泄露漏洞:对接口访问权限严格控制
10、失效的身份认证
漏洞描述
通常,通过错误使用应用程序的身份认证和会话管理功能,攻击者能够破译密码、密钥或会话令牌, 或者利用其它开发缺陷来暂时性或永久性冒充其他用户的身份。
渗透测试
① 在登陆前后观察,前端提交信息中,随机变化的数据,总有与当前已登陆用户进行绑定的会话唯一标识,常见如cookie
② 一般现在网站没有那种简单可破解的标识,但是如果是跨站认证,单点登录场景中,可能为了开发方便而简化了身份认证
风险评级:高风险
安全建议
① 使用强身份识别,不使用简单弱加密方式进行身份识别;
② 服务器端使用安全的会话管理器,在登录后生成高度复杂的新随机会话ID。会话ID不能在URL中,可以安全地存储,在登出、闲置超时后使其失效。
11、失效的访问控制
漏洞描述
未对通过身份验证的用户实施恰当的访问控制。攻击者可以利用这些缺陷访问未经授权的功能或数据,例如:访问其他用户的帐户、查看敏感文件、修改其他用户的数据、更改访问权限等。
渗透测试
① 登入后,通过burpsuite 抓取相关url 链接,获取到url 链接之后,在另一个浏览器打开相关链接,看能够通过另一个未登入的浏览器直接访问该功能点。
② 使用A用户登陆,然后在另一个浏览器使用B用户登陆,使用B访问A独有的功能,看能否访问。
风险评级:高风险
安全建议
① 除公有资源外,默认情况下拒绝访问非本人所有的私有资源;
② 对API和控制器的访问进行速率限制,以最大限度地降低自动化攻击工具的危害;
③ 当用户注销后,服务器上的Cookie,JWT等令牌应失效;
④ 对每一个业务请求,都进行权限校验。
12、安全配置错误
漏洞描述
应用程序缺少适当的安全加固,或者云服务的权限配置错误。
① 应用程序启用或安装了不必要的功能(例如:不必要的端口、服务、网页、帐户或权限)。
② 默认帐户的密码仍然可用且没有更改。
③ 错误处理机制向用户披露堆栈跟踪或其他大量错误信息。
④ 对于更新的系统,禁用或不安全地配置最新的安全功能。
⑤ 应用程序服务器、应用程序框架(如:Struts、Spring、ASP.NET)、库文件、数据库等没有进行相关安全配置。
渗透测试
先对应用指纹等进行信息搜集,然后针对搜集的信息,看相关应用默认配置是否有更改,是否有加固过;端口开放情况,是否开放了多余的端口;
风险评级:中风险
安全建议
搭建最小化平台,该平台不包含任何不必要的功能、组件、文档和示例。移除或不安装不适用的功能和框架。在所有环境中按照标准的加固流程进行正确安全配置。
13、使用含有已知漏洞的组件
漏洞描述
使用了不再支持或者过时的组件。这包括:OS、Web服务器、应用程序服务器、数据库管理系统(DBMS)、应用程序、API和所有的组件、运行环境和库。
渗透测试
① 根据前期信息搜集的信息,查看相关组件的版本,看是否使用了不在支持或者过时的组件。一般来说,信息搜集,可通过http返回头、相关错误信息、应用指纹、端口探测(Nmap)等手段搜集。
② Nmap等工具也可以用于获取操作系统版本信息
③ 通过CVE,CNVD等平台可以获取当前组件版本是否存在漏洞
风险评级:按照存在漏洞的组件的安全风险值判定当前风险。
安全建议
① 移除不使用的依赖、不需要的功能、组件、文件和文档;
② 仅从官方渠道安全的获取组件(尽量保证是最新版本),并使用签名机制来降低组件被篡改或加入恶意漏洞的风险;
③ 监控那些不再维护或者不发布安全补丁的库和组件。如果不能打补丁,可以考虑部署虚拟补丁来监控、检测或保护。
详细学习可参考:
渗透测试包含哪些流程?metasploit用来渗透测试涵盖哪些流程
渗透测试网站、APP不太一样,以下我介绍一下APP的渗透测试过程吧!
工具
知道创宇安应用
Android(安卓)APP
方法/步骤
组件安全检测。
对Activity安全、Broadcast Receiver安全、Service安全、Content Provider安全、Intent安全和WebView的规范使用检测分析,发现因为程序中不规范使用导致的组件漏洞。
代码安全检测
对代码混淆、Dex保护、SO保护、资源文件保护以及第三方加载库的代码的安全处理进行检测分析,发现代码被反编译和破解的漏洞。
内存安全检测。
检测APP运行过程中的内存处理和保护机制进行检测分析,发现是否存在被修改和破坏的漏洞风险。
数据安全检测。
对数据输入、数据存储、存储数据类别、数据访问控制、敏感数据加密、内存数据安全、数据传输、证书验证、远程数据通信加密、数据传输完整性、本地数据通讯安全、会话安全、数据输出、调试信息、敏感信息显示等过程进行漏洞检测,发现数据存储和处理过程中被非法调用、传输和窃取漏洞。
业务安全检测。
对用户登录,密码管理,支付安全,身份认证,超时设置,异常处理等进行检测分析,发现业务处理过程中的潜在漏洞。
应用管理检测。
1)、下载安装:检测是否有安全的应用发布渠道供用户下载。检测各应用市场是否存在二次打包的恶意应用;
2)、应用卸载:检测应用卸载是否清除完全,是否残留数据;
3)、版本升级:检测是否具备在线版本检测、升级功能。检测升级过程是否会被第三方劫持、欺骗等漏洞;
渗透测试服务流程
1、确定意向。
1)、在线填写表单:企业填写测试需求;
2)、商务沟通:商务在收到表单后,会立即和意向客户取得沟通,确定测试意向,签订合作合同;
2、启动测试。
收集材料:一般包括系统帐号、稳定的测试环境、业务流程等。
3、执行测试。
1)、风险分析:熟悉系统、进行风险分析,设计测试风险点;
2)、漏洞挖掘:安全测试专家分组进行安全渗透测试,提交漏洞;
3)、报告汇总:汇总系统风险评估结果和漏洞,发送测试报告。
4、交付完成。
1)、漏洞修复:企业按照测试报告进行修复;
2)、回归测试:双方依据合同结算测试费用,企业支付费用。
软件渗透测试,有了解软件渗透测试的吗(安全测试方面)?可以介绍一些测试方法和测试流程吗?
安全测试、渗透测试、安全渗透测试。。。乍一看到这么多相似的概念,感觉晕晕的。今天主要沉淀一下自己对渗透测试的理解,同时希望对大家也有所帮助。
首先,安全测试是侧重于应用程序所面对对安全威胁而进行的有关验证应用程序的安全服务和识别潜在安全性缺陷的过程。目的并不最终证明应用程序是安全的,而是用于验证存在哪些安全漏洞,来确保应用程序的安全。
渗透测试是以黑客的角度,由企业外部或在企业内部对目标网络环境作深入的安全探测,从外部或内部网络收集系统的相关信息,探查出逻辑性更强、更深层次的漏洞,预先找出企业脆弱的环节。渗透测试的目的不是为了确认功能,而是确认不再存在不安全的功能。渗透测试最简单直接的解释就是:完全站在攻击者角度对目标系统进行的安全性测试过程。
通过对安全测试和渗透测试概念和目的的理解,安全测试和渗透测试的关系是:安全测试包含部分渗透测试。
那如何来理解渗透呢?最开始看到这个词,我就想渗透什么呢?从哪开始渗透?渗透到哪去?我先介绍下渗透(Fuzz)是怎么来的。Fuzz这个名词来自于Professor Barton Miller。在1986年一个风雨交加的夜晚,他登陆一台自己的主机,不知道怎么回事,信号通过猫传到主机上,雷电一闪,把里面的高位变低位,低位至高 位了,结果到了主机以后改变了。Miller 由此想到了利用“crash、break、destroy”的方式来进行软件测试的技术——Fuzz。这个故事让我想到一个有点恐怖的场景,就是毒药从嘴里一直渗透到胃里、心里。。。最后中毒身亡。
接下来,解决前面的三个疑问。从哪里开始渗透呢?——软件及环境中可能发生变化的部分。从安全角度来看,环境、用户输入以及内部数据和逻辑是此类变化可能暴露出安全问题的主要位置。环境包括文件、应用程序、系统资源和应用程序使用的其他本地或网络资源。所有这些都可能成为渗透的入口点。渗透什么呢?——malformed数据。这个数据有可能是一个文件,有可能是一个数据包,有可能是测试表里面的一个项,有可能是临时文件里面的一个东西,总之是malformed这种非正常的数据。渗透到哪里呢?要考虑到应用程序本身执行的流程,考虑case放进去,能够放到多深,逻辑放到多深,就要非常了解应用程序内部结构。渗透测试是一个渐进并且逐步深入的过程。
渗透测试一定是黑盒的吗?很多技术人员对这个问题都存在这个错误的理解。渗透测试不只是要模拟外部黑客的入侵,同时,防止内部人员的有意识(无意识)攻击也是很有必要的。这时,安全测试人员可以被告之包括代码片段来内的有关于系统的一些信息。这时,它就满足灰盒甚至白盒测试。