當前位置:
首頁 > 最新 > 以撲克遊戲網站為例,實戰Flash應用程序滲透測試

以撲克遊戲網站為例,實戰Flash應用程序滲透測試

在這篇文章中,我將通過詳細的步驟來截取、檢查、修改和重演基於Flash的web應用程序。出於演示目的,我選擇了一個21點 (Blackjack)的紙牌遊戲。我將努力控制哪些牌應該處理,以及如何計算遊戲得分。

本文的目的是展示一個滲透測試員如何處理一個Flash應用程序,尋找可以修改的客戶端代碼,以實現意想不到的結果。

滲透測試步驟如下:

1.截取.SWF文件並在本地使用代理保存它;

2.解壓使用了反編譯器的.SWF文件;

3.修改代碼以改變應用程序的運行結果;

4.重演通過有效的HTTP進行會話的.SWF。

重要提示:在本文中,我使用的是一個免費的在線21點遊戲。我選擇的網站是不帶有賭博的正規性質的網站,不會試圖訪問或修改受限制的資源。

設置

雖然我使用的是Mac,但我提到的每個工具在Linux和Windows上都同樣適用。但在實踐中,我需要使用到:

1.Burp套件:你應該熟悉這個,安裝它,並將你的web瀏覽器配置為通過它來代理請求。點此下載它。

2.ffdec:它是一個免費開源的.SWF反編譯軟體,在Windows、Linux、Mac上都能用。點此下載它,提前準備好。

3.本文用到的特殊文件,點此下載,把它保存到你的電腦上,後面需要它。

截取.SWF文件

配置你的web瀏覽器並通過Burp發送請求。這樣,你就不需要將「截取」設置為on。允許請求自由地通過。

清除瀏覽器中的緩存之後,我需要從頭開始載入 .swf 文件,如果你最近已經載入了它,可以先緩存。

現在瀏覽包含Flash應用程序的站點,並等待它完全載入。在Burp的「代理」選項卡下查看「HTTP歷史」。你應該在「擴展」列下面有一個帶有「swf」的項。

如上所示,選擇該行,並查看下面的「Response」>「header」選項卡。你應該看到一堆隨機的垃圾——這是.SWF文件的編譯內容。右鍵單擊出現的內容,並從出現的上下文菜單中選擇「Copy to file」。

我把blackhack.swf保存在我的桌面。

不過要注意的是,你也可以訪問文件系統中的.swf 文件的緩存版本。鑒於一致性和可靠性我更喜歡代理方法。

使用反編譯器解壓.swf 文件

假設你應該已經安裝了ffdec並把以上提到的那個特殊文件保存到你的電腦上了。啟動ffdec並選擇「設置」>「高級設置」>「路徑」。

查看顯示PlayerGlobal(. swc)路徑的項,單擊文件夾圖標,導航到你下載的文件。它應該是這樣的(我混淆了我的homedir名稱):

保存此設置後,可能需要重新啟動應用程序以繼續下一步。

這樣,你就可以簡單地選擇「打開」併到「blackhack.swf」 文件瀏覽。如果你正確地保存了標頭(完整的,不僅僅是一個選項),那你應該會看到如下的視圖:

修改代碼以改變應用程序的運行結果

這取決於你正在測試的應用程序,因為你需要花一些時間來瀏覽所有的文件夾,特別是那些含有「腳本」的文件夾。

我發現了一個名為「Play」的腳本,它似乎有維持這個紙牌遊戲運行的主要函數。

於是,我想看看在客戶端是否處理得分和出牌選擇等問題。如果是這樣,我應該能夠修改遊戲的結果。

如下所示,我已經找到了一個可以修改的簡單代碼片段。這個Array對象看起來是在描述一副撲克牌里的方塊,紅心和黑桃。

點擊代碼下面的「編輯ActionScript」選項,我可以把Array對象「this.arrSuit」修改為只能處理一種牌。這樣我就知道了遊戲是由客戶端控制而不是伺服器處理的。

修改後,點擊代碼下面的「保存」和菜單欄中的「保存」是很重要的。第一個保存了單個腳本,第二個保存是把該腳本又寫回到了.swf包。

現在可以安全的關閉應用程序了,沒有必要重新打包或重新編譯,這個ffdec的內聯編輯相當的靈活。

重演通過有效的HTTP進行會話的.SWF

我現在需要web站點,利用一個有效的會話執行我上面修改過的遊戲。如果有伺服器交互,比如發布高分數或收集得分獎勵,這可能很重要。

完全清除瀏覽器緩存,關閉並重新啟動瀏覽器。這樣你的.SWF此時肯定是緩存的,這將阻止你完成接下來的步驟。

進入Burp,打開「截取」選項。此時,你把修改過的Flash應用重新放回網站,並重新載入,但這一過程,你需要手動「Forward」每個請求。能夠進行Flash遊戲的網站通常有大量的廣告,所以你可能需要清除一些隨機的請求。

我正在尋找的包含.swf 文件的GET請求,看起來像這樣:

當你看到上圖時,你需要右鍵單擊原始文本框,並選擇「截取」>「響應此請求」,這樣我就能在應用程序到達瀏覽器之前修改它。

完成之後,可以點擊「Forward」。

根據你瀏覽器中正在進行的其他進程,你可能需要點擊轉發才能超越排隊的其他隨機流量(瀏覽器插件等)。留心觀察,你會發現對 http:///……..的反應。

此時,我基本上要對第一步中所做的進行逆轉。還記得header中所有的垃圾文本嗎?選擇並全部刪除。現在應該是這樣的:

現在在空白區域右擊並選擇「從文件中粘貼」。

選擇我之前修改過的blackhack.swf文件,它應該填充著空白區域備份與垃圾,現在可以選擇「Forward」」,並將「截取」關閉。

紙牌遊戲現在應該已經載入你的瀏覽器,你可以看到代碼修改是否影響到遊戲。正如你從下圖所看到的,我正在從面板上發牌。

遊戲積分作弊

顯然,當幫助開發人員了解了為什麼應該在伺服器上控制這種類型的信息時,我希望展示一些更有影響力的東西。

我發現了另一段代碼為每張牌分配一個遊戲積分。 這是一個非常快速的作弊方法,可以確保每張牌的值為10。

這個特定的紙牌遊戲每次都需要花費一些時間來處理一個blackjack進程,因為該進程內置了一個邏輯,如果一張牌已經被處理了,那緊接著就會按照邏輯進行下一步。但是,當我完全控制遊戲進程和積分邏輯時,遊戲就會完全被控制。


點擊展開全文

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 嘶吼RoarTalk 的精彩文章:

php.ini安全配置最佳實踐
PE文件全解析
官方渠道下載也不安全!運營商劫持流行軟體安裝包篡改為病毒
組合利用Empire和Death Star:一鍵獲取域管理員許可權
Elasticsearche殭屍網路:超過4000台伺服器遭到兩款POS 惡意軟體感染

TAG:嘶吼RoarTalk |