<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    Webpack js算法逆向實戰學習

    VSole2021-10-15 19:30:55

    推文開頭,先學習一下中華人民共和國網絡安全法,大家要做一名合法的白帽子,不要搞事情。

    https://www.cto.ac.cn/thread-106.htm
    

    本推文僅用于信息防御技術教學,切勿用于其他用途,有侵權或者存在危害性,請聯系我進行刪除。

    如若文章中有地方描述錯誤,還請見諒。

    作者本人技術和知識都不扎實,仍在學習中。


    遇到一個網站,使用了webpack

    輸入賬號密碼后,發現密碼被加密了。

    此時嘗試定位該加密算法,并正向爆破。

    當前登錄的請求接口是/prod-api/auth/login

    此時全局搜索該接口

    成功找到該接口文件

    打開該js文件,通過分析js函數,可知2727行r函數作用是登錄請求,2719行o函數作用是加密。

    此時設置斷點,觀察數值變化 

    r函數中的t是用戶名admine是明文密碼123456

    此時下一步

    密碼e通過2728行的函數調用,傳遞到了加密函數o

    加密函數o中,t是明文密碼,e是密鑰,密鑰是2021123456789012

    加密后123456的密文是wzGWkli7/KSZszgljZhEng==

    通過分析發現,此處的加解密算法的對象名是a,通過調用對象a下的屬性,實現的加密。

    將這段加密的函數,復制到我們的js文件中

    此時嘗試去找到a在哪聲明的。

    通過分析,發現a2717行被聲明

    并且對象a的值,是由s調用了n中的3452模塊。

    此時我們要找到n,看n是在哪出現的,我們并把它給拿出來。

    因此設置斷點直接跟過去。

    此時找到了n的聲明。

    我們將這段聲明n函數的代碼復制到js文件中,即把分發器復制到js代碼中。

    并在外部聲明一個用于接收分發器值的變量

    通過定位追蹤 

    我們將o值,賦值給用戶接收分發器函數返回值的變量。

    即在分發器代碼的末尾處進行賦值。

    此時分發器確定了,這個時候要找分發器調用了哪些webpack的模塊。

    通過前面的分析可知,分發器調用的第一個webpack的模塊是3452

    此時全局搜索3452是在哪個js文件下。

    此時找到了3452模塊,而3452模塊又調用了大量的其他模塊,因此我們要一一定位。

    通過分析后發現,所有的模塊和3452模塊都是處于同一個js文件中的。

    此時創建一個modules.js文件,用于管理這些模塊。 將該存放模塊的js代碼,全部復制粘貼到本地的modules.js文件中。

    并設置全局變量進行調用 即var window = global;

    并在encrypt.js文件中導入該模塊js文件。

    并調用加密函數,查看加密結果。

    執行代碼后,報錯,提示n未被定義。

    報錯的原因是因為,此時分發器的模塊調用的結果,并未賦值給n,而是我最開始設置的變量flag,此flag接收了分發器的返回結果。因此我們要把n改成flag

    修改后,再次運行

    123456在本地加密的結果和在前端加密的結果值是一樣的。

    此時嘗試重復并多次加密明文。

    使用nodejs,按行讀寫passwords.txt

    并將密碼的密文并輸出到encrypt_passwors.txt中。

    const readline = require('readline');
    const fs = require('fs');
    
    ( () => {
        let fRead = fs.createReadStream("passwords.txt");
        let objReadLine = readline.createInterface({
            input: fRead
        });
        objReadLine.on('line', function (line) {
            console.log(encrypt(line));
            fs.writeFile('./encrypt_passwors.txt', encrypt(line)+'', { 'flag': 'a' }, function(err) {
                if (err) {
                    throw err;
                }
            });
        });
    })();
    

    嘗試去解密aes的加密密文,找了半天也沒找到調用了哪些webpack的模塊,因此解密失敗了,太fw了。

    jswebpack
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    timestamp: d}并在第1886行,找到了有關n的聲明此時發現password被md5加密后,與pwdkey的值,進行字符串拼接后,在進行一次md5加密。直接搜索pwdkey,并在第27589行,找到了該值,發現該值是不變的。
    最近遇到webpack類型的網站越來越多,所以在B站學習了一下,今天來實戰一波。
    getshell滲透測試
    2021-10-08 07:17:58
    隨著攻防演練愈演愈烈,弱小的我也不得不加入攻防大軍的隊伍里,而本篇文章就記錄了某次攻防演練中的getshell歷程。在這次攻防演練中,初步利用工具批量打點無果,作為團隊里卑微的撕口子工具人,只能選擇一個站一個站硬啃。
    0x01 工具介紹功能:協助紅隊人員快速的信息收集,測繪目標資產,尋找薄弱點。語言:python3開發功能:一條龍服務,只需要輸入根域名即可一鍵化收集敏感信息。具體案例見下文。調用:腳本借用了JSFinderjs內容提取腳本,感謝Threezh1作者0x02 安裝與使用為了避免踩坑,建議安裝在如下環境中1、 當前用戶對該目錄有寫權限,不然掃描結果無法生成。root權限即可2、Python環境必須是3.7以上,因為使用了異步。建議VPS環境是ubuntu20,默認是python3.8。
    它們不是單線程的,這在處理大量文件方面具有優勢。此外,JavaScript 開發人員不需要調試這些工具的內部代碼。目前,Vite 2.0 正在底層使用 Esbuild 來提供高性能的構建體驗。最近,JavaScript 工具生態系統中出現了一個新成員——Bun。Bun 的一個顯著特性是它提供了自己的 Node 模塊解析器實現,這是最值得關注的優化之一。
    現在越來越多的網站前后端分離,javascript代碼基本都會使用webpack這樣的工具進行打包,打包過后的javascript代碼會被混淆壓縮,一個js文件就上萬行代碼,增加了讀取javascript源碼業務邏輯的難度。
    在我們滲透或者漏洞挖掘的過程中,發現越來越多的網站使用webpack技術,開發人員通常會把api路由
    前幾個月被授權進行某大型運營商的滲透,在過程中也是遇到了一些比較有意思的東
    個隱藏的不是很深的站點。該系統域名為test,看來是個測試的環境。?個登錄框沒有賬號,沒有密碼,爆破?將js.map 下載下來,使?還原02發現新線索翻看代碼的信息,在?件發現了注釋掉的corpid 和secret信息通過百度搜索CORPID查詢官??于保障數據安全的“鑰匙”,每?access_token是企業后臺去企業微信的后臺獲取信息時的重要票據,由corpid和secret產?。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类