第17章:HTTP参数污染-篡改与缓存溢出攻击
要点HTTP参数污染攻击采用技术HTTP参数污染攻击HTTP参数篡改攻击采用技术缓存溢出攻击采用技术缓存溢出攻击HTTP参数篡改攻击实例:CTFCodysFirstBlog网站admin篡改绕行相关安全漏洞披露
1HTTP参数污染攻击采用技术HTTP参数污染(HPP)源于网站对于提交的相同的参数的不同处理方式导致。对于HTTP参数污染,需要Web应用程序的开发者理解攻击存在的问题,并且有正确的容错处理。否则的话,难免会给攻击者造成可乘之机。如果对同样名称的参数出现多次的情况没有进行正确处理的话,那么可能会导致漏洞,使得攻击者能够利用漏洞来发起对服务器端或客户端的攻击。
2HTTP参数污染攻击HTTP参数污染(HTTPParameterPollution:HPP):是指操纵网站如何处理在HTTP请求期间接收的参数。当易受攻击的网站对URL参数进行注入时,会发生此漏洞,从而导致意外行为。攻击者通过在HTTP请求中插入特定的参数来发起攻击。如果Web应用中存在这样的漏洞,就可能被攻击者利用来进行客户端或者服务器端的攻击。
2.1HTTP参数污染攻击手法在与服务器进行交互的过程中,客户端往往会在GET/POST请求里面带上参数。这些参数会以参数名-参数值成对的形式出现,通常在一个请求中,同样名称的参数只会出现一次。但是在HTTP协议中是允许同样名称的参数出现多次的。同名参数带不同的值进行访问就形成了HTTP参数污染。针对同样名称的参数出现多次的情况,不同的服务器的处理方式会不一样,比如看下面的2个搜索引擎例子:/search?q=italyq=china/search?p=italyp=china如果同时提供2个搜索的关键字参数给Google,那么Google会对2个参数都进行查询;但是Yahoo则不一样,它只会处理后面一个参数。
2.2HTTP参数污染攻击防护方法HTTP参数污染要防止这种漏洞,除了要做好对输入参数的格式验证外,另外还需要意识到HTTP协议是允许同名的参数的,在整个应用的处理过程中要意识到这一点从而根据业务的特征对这样的情况作正确的处理。
3HTTP参数篡改攻击采用技术参数篡改是攻击者最常使用的技术,通过观察哪个参数可能被利用就可以篡改攻击。参数篡改攻击之所以能成功,主要原因是URL没有做防篡改处理;另一个原因就是功能级别的认证与授权做的不够。
4HTTP参数篡改攻击HTTP参数篡改(HTTPParameterTampering):其实质是属于中间人攻击的一种,参数篡改是Web安全中很典型的一种安全风险,攻击者通过中间人或代理技术截获WebURL,并对URL中的参数进行篡改从而达到攻击效果。
4.1HTTP参数篡改攻击手法HTTP参数篡改产生原因:URL中的参数名和参数值是可以任意改变的、动态的,所以给攻击者有了可利用的机会。比如平常查下载一个网上视频的链接为:/download?recordingid=1但是攻击者通过篡改URL中的recordingid号,可能下载到任意未经受权的录制视频。对于这样的URL,攻击者通过遍历recordingid的值,获取大量的私密信息。
4.2HTTP参数篡改攻击防护方法对于HTTP参数篡改,需要对URL进行防篡改处理,或者至少要对访问的URL做功能级别的身份认证与授权处理。(1)参数防篡改简单点来说就是,将输入参数按客户端和服务端约定的HASH算法计算得到一个固定位数的摘要值。只要改动其中的参数内容,重新计算出的摘要值就会与原先的值不相符,从而保证了输入参数的完整性,达到不可更改的目的。(2)功能级别的身份认证与授权处理
5缓存溢出攻击采用技术缓存溢出为黑客最为常用的攻击手段之一,蠕虫病毒对操作系统高危漏洞的溢出高速与大规模传播均是利用此技术。缓存溢出攻击从理论上来讲可以用于攻击任何有缺陷不完美的程序,包括对杀毒软件、防火墙等安全产品的攻击以及对银行系统的攻击。缓存溢出攻击能出现最主要原因是代码中使用了不安全的C/C++函数。
6缓存溢出攻击缓存溢出(Bufferoverflow:BOF),也称为缓冲区溢出,是指在存在缓存溢出安全漏洞的计算机中,攻击者可以用超出常规长度的字符数来填满一个域,通常是内存区地址。在某些情况下,这些过量的字符能够作为“可执行”代码来运行。从而使得攻击者可以不受安全措施的约束来控制被攻击的计算机。
6.1缓存溢出攻击手法为实现缓存区溢出攻击,攻击者必须在程序的地址空间里安排适当的代码及进行适当的初始化寄存器和内存,让程序跳转到入侵者安排的地址空间执行。控制程序转移到攻击代码的方法有如下几种:破坏活动