凡是用瀏覽器查看任何WEB網(wǎng)站,無論你的WEB網(wǎng)站采用何種技術(shù)和框架,都用到了HTTP協(xié)議
HTTP協(xié)議在Response header和content之間,有一個空行,即兩組CRLF(0x0D 0A)字符
這個空行標(biāo)志著headers的結(jié)束和content的開始
攻擊者可以利用這一點(diǎn), 只要攻擊者有辦法將任意字符“注入”到headers中,這種攻擊就可以發(fā)生
以登陸為例:有這樣一個url
http://localhost/login?page=http%3A%2F%2Flocalhost%2Findex
當(dāng)?shù)卿洺晒σ院螅枰囟ㄏ蚧豴age參數(shù)所指定的頁面。
下面是重定向發(fā)生時(shí)的`response headers
HTTP/1.1 302 Moved
Temporarily Date: Tue, 17 Aug 2010 20:00:29 GMT
Server: Apache mod_fcgid/2.3.5 mod_auth_passthrough/2.1 mod_bwlimited/1.4
FrontPage/5.0.2.2635 Location: http://localhost/index
假如把URL修改一下,變成這個樣子
http://localhost/login?page=http%3A%2F%2Flocalhost%2Fcheckout%0D%0A%0D%0A%3Cscript%3Ealert%28%27hello%27%29%3C%2Fscript%3E
那么重定向發(fā)生時(shí)的reponse會變成下面的樣子:
HTTP/1.1 302 Moved
Temporarily Date: Tue, 17 Aug 2010 20:00:29 GMT
Server: Apache mod_fcgid/2.3.5 mod_auth_passthrough/2.1 mod_bwlimited/1.4
FrontPage/5.0.2.2635 Location: http://localhost/checkout<CRLF> <CRLF> <script>alert('hello')</script>
這個頁面可能會意外地執(zhí)行隱藏在URL中的java script
類似的情況不僅發(fā)生在重定向(Location header)上,也有可能發(fā)生在其它headers中
如`Set-Cookie header
這種攻擊如果成功的話,可以做很多事,例如:執(zhí)行腳本、設(shè)置額外的cookie (<CRLF>Set-Cookie: evil=value) 等
避免這種攻擊的方法,就是過濾所有的response headers,除去header中出現(xiàn)的非法字符,尤其是CRLF(空行)
---------------------
作者:rugu_xxx
來源:CSDN
原文:https://blog.csdn.net/sinat_36629696/article/details/80748665
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請附上博文鏈接!