1、LIU YONG 13925169853 F5 GZ office AUG 2010,F5 ASM WEB攻击防护手册 V1.0,前言,本文主要是为了帮助兄弟们更好的理解和配置ASM的防护策略,并通过webgoat进行演示ASM对WEB主流攻击的防护和配置。本文的配置基于V10.1,webgoat的版本为5.2,准备工作,PART ONE,设备基本部署配置,ASM的基本部署配置请参见阿亮哥的ASM安装手册v2,Webgoat 安装,Webgoat 安装 包可以从官网下载,地址为:http:/ 目录下的/tomcat/conf/server_80.xml文件,找到connector addre
2、ss的地方,将IP设置为你的网卡配置的IP地址,端口也可以进行修改。运行webgoat.bat将webgoat部署到配置好的IP的80端口上。webgoat用户 guest,密码guest,其他帐号可以查看webgoat 目录下的readme.txt文件。,攻击工具,使用webscrab,或者paros 其中webscrab工作在8008端口,需要在浏览器的proxy配置中将代理服务器的配置设置为127.0.0.1:8008,ASM初始化配置,ASM的初始化配置和LTM相关部分的配置不在此次讨论的范围内,不熟悉的兄弟可以参考本人的其他ASM相关文档,主流攻击的ASM防护,PART TWO,In
3、jection攻击,Injection攻击 很多网络应用都是使用操作系统、数据库和其他外部程序来运行他们的功能,Injection的缺陷使得攻击者将恶意编码从一个网络应用传递到另一个系统。 这些攻击包括通过系统调用来调用操作系统、shell commands和通过SQL(如SQL injection)调用后端数据库。所有的用perl、python或其他语言编写的脚本,都能够写进那些脆弱的应用和执行程序。任何时候,当网络应用程序使用任何类型的解码器时,都有可能导致Injection的攻击。,攻击举例,SQL注入 正常的请求: GET /view_account.cfm?acct_id=28 HT
4、TP/1.1 SELECT * FROM accounts WHERE acct_id = 28 非法的请求:GET /view_account.cfm?acct_id=28 OR 1=1 HTTP/1.1SELECT * FROM accounts WHERE acct_id = 28 OR 1=1,ASM防护SQL注入,防护原则:主要是在针对 parameter的防护中,启用扫描,扫描parameter提交的内容,跟后台的attack signature进行比对,发现匹配的,则进行过滤。具体的配置如下:,在attack signature中选择所要启用的攻击指纹,也可以在optionatt
5、ack signature-attack signature set中自定义攻击指纹集,这里我们自定义了一个叫webgoat_sql的指纹集,包含了所有的SQL注入的攻击。同时,还有要注意的地方就是要取消对应的parameter的staging的选项。当然也包括wildcast的parameter。,SQL防护结果,跨站点脚本攻击,攻击描述: 跨站脚本攻击(也称为XSS)指利用网站漏洞从用户那里恶意盗取信息。用户在浏览网站、使用即时通讯软件、甚至在阅读电子邮件时,通常会点击其中的链接。攻击者通过在链接中插入恶意代码,就能够盗取用户信息。攻击者通常会用十六进制(或其他编码方式)将链接编码,以免用
6、户怀疑它的合法性。网站在接收到包含恶意代码的请求之后会产成一个包含恶意代码的页面,而这个页面看起来就像是那个网站应当生成的合法页面一样。许多流行的留言本和论坛程序允许用户发表包含HTML和javascript的帖子。假设用户甲发表了一篇包含恶意脚本的帖子,那么用户乙在浏览这篇帖子时,恶意脚本就会执行,盗取用户乙的session信息。,跨站点脚本:范例,ASM防护的原则,防护原则描述:主要是对用户提交的URL或parameter中的内容进行扫描,如果有发现类似这样的字段,或者是经过多重编码后的类似字段,(即将攻击的代码转成别的代码比如ASCII码),ASM就会屏蔽该用户的请求。由于在XSS的防护
7、时,攻击者可能会把攻击代码进行二次转码的方式来达到欺骗防护工具的目的,所以我们也要在ASM的配置的时候,在Evasion technique(入侵技术)的选项中打开一些选项。如下:,防护XSS的配置,由于XSS的防护也主要是通过扫描用户提交的URL或parameter中的关键内容,所以配置和SQL防护的配置过程类似。,在attack signature中选择所要启用的攻击指纹,也可以在optionattack signature-attack signature set中自定义攻击指纹集,这里我们自定义了一个叫webgoat_XSS的指纹集,包含了所有的XSS的攻击。同时,还有要注意的地方就是
8、要取消对应的parameter的staging的选项。当然也包括wildcast的parameter。,XSS防护结果,强制浏览,攻击描述: 通过猜测一些文件名和目录目,攻击者可以浏览到一些并不是由商业逻辑指向的页面。可以通过现有的文件名、页面的源码、页面返回的错误信息等进行猜测。 为什么可以强制浏览: 在应用开发、安装过程中,留下了一些默认的文件。 因为操作的遗漏,使得新文件被提前浏览或旧文件过期后没有被及时移除。 攻击带来的危害: 日志文件、辅助管理工具、应用源码等内容都可能通过文件和目录的访问被泄漏。,强制浏览:范例,ASM防护的原则,防护原则描述:主要是对用户提交的URL和我们在pol
9、icy中配置的URL的策略进行匹配,如何匹配成功,则可以进行访问,如果不匹配,则过滤该请求。在配置URL的策略的时候,有两种方法,一种是配置允许的名单,不在此名单内的URL是会被过滤的,一种是配置不允许的URL名单,在此名单内的URL是会被过滤的。另外,在配置的时候,由于在策略中可能会有wildcast的策略,并且policy的策略是按照顺序,从上往下面进行匹配的,所以这个时候,wildcast的策略的顺序也是会影响到整个策略的效果的。,ASM防护的配置,允许的URL策略:,不允许的URL策略:,强制浏览的防护结果,缓冲区溢出,攻击描述: 缓冲区溢出是恶意的用户向服务器发送大量数据以使系统瘫痪
10、的典型攻击手段。 为什么会缓冲区溢出: 应用没有检查数据的长度。 攻击带来的危害: 通常会对应用造成破坏,有时甚至使整个网站跨掉。另外,如果溢出的是代码,还会被系统执行,从而带来进一步的危害。,缓冲区溢出:举例,ASM的防护原则:,防护原则描述:主要是对文件类型和parameter提交的内容的大小进行限制,一旦超过限制的大小,则过滤该请求。,ASM防护的配置,File type中的限制:,Parameter中的限制,缓冲溢出的防护的结果,操纵稳藏字段,攻击描述: 通常应用程序会在表单中通过稳藏字段的方式向客户端传送数据,通过修改稳藏字段即可损害传回应用服务的数据。 为什么要使用稳藏字段: 使用
11、稳藏字段可以非常方便和在效地在同一应用的不同部分之间或不同应用之间传递信息,而无需复杂的后台系统。 攻击的后果: 应用将使用被修改后的数据来进行下一步的动作,而不是未被修改前的原始数据。,操纵稳藏字段:举例,ASM的防护原则:,防护原则描述:主要是对隐藏的parameter中的值进行跟踪,一旦发现这个parameter的值在用户与服务器的交互过程中发生变化,则过滤该请求。,ASM防护的配置,首先要在 blocking setting中开启对illegal dynamic parameter value 和illegal empty parameter value的防护。,然后要在 price的
12、这个parametere的配置中选择parameter value type为dynamic content value. 并在后续的配置中定义搜寻规则extractions,让ASM如何去tracking这个数值,Extractions,操纵隐藏字段的防护的结果,操纵Cookie,攻击描述: 通过修改Cookie中携带的Session信息,使得应用转向新的Session进行处理。 为什么可更改Cookie: 网站常常将一些包括用户ID、口令、帐号等的cookie存储到用户系统上,而不进行加密或加密简单,这通常是由于开发人员对加密算法的掌握比较少。 攻击的后果: 通过改变这些值,恶意的用户就可
13、以访问不属于他们的帐户。攻击者也可以窃取用户的cookie并访问用户的帐户,而不必输入ID和口令或进行其他验证。,操纵Cookie:举例,ASM的防护原则:,防护原则描述:主要是对隐藏的parameter中的值进行跟踪,一旦发现这个parameter的值在用户与服务器的交互过程中发生变化,则过滤该请求。,ASM防护的配置,首先要在 blocking setting中开启对modified domain cookie的防护。,对于那些COOKIE值在应用中需要进行变化的COOKIE,可以在COOKIE中进行添加allowed modified cookies。如下:,操纵Cookie的防护,信息
14、泄漏,漏洞描述: 应用程序的回应中没有对敏感信息进行处理,(比如说信用卡号,身份证号码等)导致敏感信息直接显示在客户端,造成用户的信息泄密。,ASM的防护原则:,防护原则描述:主要是对HTTP或HTTPS回应的内容进行过滤,如果发现有和ASM配置防护的泄密的内容一样的格式的数据,就可以选择屏蔽该回应(需要在policy-blocking setting中对 information leakage勾选block选项),或者是将敏感数据用马赛克表示。,如何设置,Information leakage的防护,其他相关配置,PART THREE,注意事项,当policy的配置基本完成的时候,我们还需要
15、做一个事情,就是把3个wildcast的policy删除,然后把policy切换到blocking 模式。,通过reporting界面我们可以设置各种各样的查询条件,来查看和分析经过ASM处理的流量是否按照我们的policy的设定来处理的。,查看 ASM的reporting,1、原本应该通过的流量却被阻挡了。 这个时候我们可以根据blocking页面上提示的support ID到reporting里面去查看,为什么该流量被阻挡了,然后分析原因,基本上都是因为policy中没有建立该流量的策略,这时候我们要参考前面的增加新的policy的PPT,添加对这些流量的policy就可以了。2、原本应该
16、block的流量去能成功访问。这个时候,我们就要分析该流量中的内容,重新开启3条wildcast的策略,并开始学习流量,把攻击的流量找出来,设定block策略即可。,策略验证时的两种情况,1、policy-response page中,可以自定义阻挡页面的内容,如下图:里面就是html语言,注意红色部分的变量,那可是support ID,千万要把这个东东记得放到html页面中去哦。,自定义blocking response page,总结,PART FOUR,1、总的来说,ASM只要理解了工作原理,要做POC和配置并不是一件和复杂的事情。希望本指南对所有不熟悉ASM的兄弟有所帮助。 2、目前的
17、配置指南只是1.0的版本,以后会继续丰富其他的一些攻击的防护。 4、希望大家在以后的POC或者配置中,有什么体验和心得,欢迎大家对本配置指南进行补充。 5、看过不明白的,欢迎电话邮件联系本人,不要拍砖头。,CSRF攻击,攻击描述: CSRF(Cross-site request forgery跨站请求伪造,也被称成为“one click attack”或者session riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,并且攻击方式几乎相左。XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。 攻击带来的危害: 风险在于那些通过基于受信任的输入form和对特定行为无需授权的已认证的用户来执行某些行为的web应用。已经通过被保存在用户浏览器中的cookie进行认证的用户将在完全无知的情况下发送HTTP请求到那个信任他的站点,进而进行用户不愿做的行为。,