banner
十一

十一

Stay hungry, stay foolish.

漏洞挖掘的兩大技術和八大技巧

技術一、JS 加密參數逆向以及利用

技術二、FUZZ 的精美藝術,產出直線提升

技術一、JS 加密參數逆向以及利用#

1.1 技巧一、JS 在漏洞挖掘中的重要地位#

1.1.1 JavaScript#

JS:javascript 是 web 頁面的腳本語言,主要用來向 HTML 頁面添加交互行為,有以下幾個作用:

  1. 嵌入動態文本於 HTML 頁面;
  2. 對瀏覽器事件作出響應;
  3. 讀寫 HTML 元素;
  4. 在數據被提交到伺服器之前驗證數據;
  5. 檢測訪客的瀏覽器信息。

1.1.2 HTML、JS、CSS 區別#

  • HTML:毛坯房
  • CSS:裝修
  • JS:讓家動起來,增加了智能家居

1.1.3 JS 在漏洞挖掘中的重要地位#

  1. JS 中存在插件名字,根據插件找到相應的漏洞直接利用
  2. JS 中存在一些 URL 鏈接,根據 URL 找到相應的頁面進一步測試和利用
  3. JS 中存在一個子域名,可以直接訪問子域名
  4. JS 中的一些註釋可能洩露賬戶密碼或者其他的

1.1.4 Jsfind#

使用 JsFind 查找 JS 中洩露的 url 鏈接和域名(京東)

python jsfind.py -u "http://www.jd.com"

1.2 技巧二、瀏覽器控制台使用技巧和方式#

Screen Shot 2023-05-25 at 12.21.03

網絡是對整個網絡請求發起的一個監控,可以監控流量。

  1. 禁用緩存:如果打上勾,每次都會從瀏覽器獲取數據。在滲透測試、漏洞挖掘的過程中需要打開。
  2. 調試器 (源代碼):將網站的 js 代碼存儲起來
    1. 點擊右下角{}可以格式化
    2. 可以進行斷點挑食
  3. 控制台:可以對 js 中的函數進行一些操作

1.3 技巧三、JS 斷點技巧以及 Hook 注入#

Hook:使用 python 進行爬蟲、滲透,繞過圖片驗證碼需要使用到

1.3.1 JS 斷點調試#

JS 打斷點,打到斷點處就不運行了,選擇單步步入就行。Screen Shot 2023-05-25 at 13.12.42

1.3.2 怎麼找斷點#

按照關鍵字在調試器中全局搜索,跳轉到需要的位置,在 js 行點一下,變成藍色即可。

注意:MD5 函數可以自定義,在破解密碼的時候,需要找到真正使用的 MD5 的函數

1.4 技巧四、python 結合 JS 解決加密難題#

  1. JS 代碼 test.js

    # js 加密函數
    function encryptByDES(message) {
      var encrypted = message;
      encrypted = encrypted + "asdfdsaf";
      return encrypted;
    }
    
  2. 通過 python 調用 js 文件中的的函數

    # 安裝execjs pip install pyexecjs 
    # pyexecjs 已於2018年停止維護,目前可以使用js2py代替
    import execjs
    with open('test.js', 'r') as f:
    	a = execjs.compile(f.read())
    # 調用 test.js 文件中的 encryptByDES 函數,且傳入的參數是 password
    result1 = a.call('encryptByDES', 'password')
    print(result1)
    

1.5 實戰、MD5 加密逆向加密參數還原#

  1. 使用 bp 攔截,獲取信息

    image-20230525143052555

  2. 在瀏覽器控制台中根據關鍵詞password搜索,找出對password進行處理的js函數;

  3. 使用python代碼調用js中的處理password的函數,並根據錯誤提示補全function和其餘的參數;

  4. 對比經過python跑出來的值和bp攔截得到的值,看是否相同;

  5. 如果相同,則可以使用python對密碼字典進行處理,然後再使用bp進行暴力破解。

技術二、FUZZ 的精美藝術,產出直線提升(技術)#

技巧五、常見 FUZZ 姿勢和工具及字典(技巧)#

2.1.1 FUZZ 模糊測試#

FUZZ:作為名詞時譯為 “絨毛;模糊;細毛;警員”

核心思想:只知道一部分條件的情況下,需要進行一個很模糊的測試,使用不同的東西進行不斷的測試,直到得到一個想要結果。

例如:支付寶大額轉賬,需要填寫部分信息。

image-20230525160440092

2.1.2 都可以在哪些地方用到fuzz的技巧呢?#

  1. 破解密碼的時候
  2. 掃描目錄的時候
  3. 掃描參數的時候
  4. 測試漏洞的時候
  5. 過 WAF 的時候
  6. 看到的任何參數,其實都可以使用FUZZ去測試
  7. 。。。。很多很多,每個地方都可以fuzz

FUZZ用得好,漏洞少不了

目錄掃描,暴力破解的核心思想就是FUZZ,很多時候,工具搞不定的問題,可以手動FUZZ一下,會有意想不到的結果。

2.1.3 優秀的 FUZZ 案例#

2.1.3.1 參數FUZZ實戰漏洞#
  1. 在某src漏洞挖掘過程中發現了一個有趣的文件http://36...*/upload_image.php,訪問的時候內容為空白

    image-20230525161616826

  2. 對於這種頁面,毫無疑問,要對參數進行FUZZ對其參數進行FUZZ,發現了一個參數字段為do

    image-20230525161942728

    1. 發現了 http://360...*/upload_image.php?do可以用
  3. 然後對do這個參數進行FUZZ,然後bp一下

    image-20230525162247514

  4. 構造出了http://xxxxx/image_upload.php?do=upload,並對其進行訪問,成功出現上傳表單,得到如下界面。

    image-20230525162437460

  5. 上傳文件後FUZZ上傳路徑

    http://36.*.*.*/uppload -------> 403
    繼續fuzz
    http://36.*.*.*/upload/images ------->403
    。。。。
    發現文件路徑,構造url
    http://36.*.*.*/upload/images/skr_anti.php 
    
  6. 然後使用遠控工具連上對方伺服器

    image-20230525162958890

2.1.3.2 FUZZ 隱藏參數和字段#
  1. 對目錄掃描發現如下的文件

    image-20230525163757131

  2. 對其文件進行定位

    image-20230525163908468

  3. 構造目錄訪問

    將提示中的信息構造到url中進行訪問
    http://....../start/face_xxx
    訪問接口,提示Method Not Allow,405錯誤,那麼顯然,我們得換POST傳參
    

image-20230525164212452

  1. POST隨便傳個參數過去,發現接口提示Request error, content-type was unsupported

image-20230525164656797

  1. 繼續FUZZ content-type head

    image-20230525164834369

    image-20230525165033507

  2. FUZZ出來application/jsoncontent-type頭可用,那麼簡單了,構造JSON繼續FUZZ JSON數據參數

    image-20230525165344027

    image-20230525165416072

  3. 利用本處SSRF完全可以批量對內網Redis進行密碼噴灑 + 反彈shell對邊界進行突破

    image-20230527171540314

2.1.3.3 JS 和 FUZZ 的結合#

  1. 訪問一個登錄頁面

    image-20230525172014112

  2. 設置賬號密碼開始暴力破解密碼

    image-20230525182334150

    image-20230525182410932

  3. 測試出來的賬號密碼登錄沒有任何的反應,登錄頁面也只是登錄頁面

  4. 不可能放棄的繼續FUZZ目錄,發現存在/JS/目錄,開始對裡面的東西進行FUZZ

    image-20230525182834794

  5. 根據發現的鏈接,構造url並訪問,發現了新的頁面

    image-20230525183030782

    發現此處有一個logout,根本沒有登錄過的地方,怎麼會有?於是推測出,底下的賬號密碼顯示的是剛才爆破的,但是發現好像沒有什麼用處。

  6. 接著發現JS的文件,發現如下規律

    image-20230525183351389

  7. 接著FUZZ域名,發現了一個會展頁面

    image-20230525183507431

  8. 接著使用bp抓包,修改返回數據,登錄成功。

    image-20230525183606594

  9. 成功訪問站點

    image-20230525183704376

技巧六、未知目錄,信息泄露,備份文件等漏洞中的 FUZZ(技巧)#

2.2.1 未知目錄#

  1. 分別逐級FUZZ網站的目錄與文件;
  2. 根據FUZZ出來的路徑,分別FUZZ參數和路徑;
  3. 循環反復的進行FUZZ,直到得到你想要的結果。

技巧七、隱藏變量,未知參數中的FUZZ騷姿勢#

  1. 根據得到的url進行初始目錄和參數FUZZ
  2. 然後根據FUZZ結果進行大膽的預測,並根據預測進行FUZZ
  3. 根據上一步得到的結果,構造新的URL,進行訪問,並再次FUZZ
  4. 循環上述的操作,直到得到你想要的結果;
  5. 注意:重點是耐心、細心、大膽預測,並根據逐步的擴大字典的數量。

技巧八、SQL,XSS,SSRF,CSRF 等漏洞中的 FUZZ 技巧#

靶場:phpStudy/PHPTurorial/www/pikaqiu/pikachu

在實際的滲透測試過程中,需要過 WAF,就可以使用FUZZ對內容進行過濾,只需要將所有的內容使用bp導入進行測試,在結果中就可以找出哪些東西是沒有被WAF過濾的。

2.4.1 案例:挖掘pikaqiu靶場的sql注入漏洞#

  1. 哪些參數可以FUZZ

    image-20230526132814610

    可以FUZZ的參數:

    • GET行中的參數
    • Cookie行中的參數
    • 其他的參數
  2. 使用bp,導入字典進行FUZZ

    image-20230526140507521

  3. 根據bp得出的結果,構造URL進行訪問,獲得想要的結果

實戰二、實戰 FUZZ 滲透到遠程 RCE 漏洞控制電腦#

  1. 使用瀏覽器訪問指定的地址,並打開瀏覽器控制台

    image-20230526144656928

    紅色框中就是網站的目錄文件以及JS文件,查看目錄和文件中是否有我們需要的信息。

  2. 如果沒有,可以FUZZ JS 目錄(通常情況下,有JS目錄,可以先FUZZ JS目錄)

    1. 構造完整是JS URL;

    2. 使用bp進行攔截;

    3. 導入字典,進行攻擊;

    4. 根據bp攻擊的結果進行二次分析,如果沒有想要的信息,可以繼續進行二級FUZZ,並重複上面的步驟;

    5. 分析bp結果,構造URL,進行訪問,得出結果。

    6. bp結果展示

      image-20230527113950814

  3. 如果FUZZ JS 目錄沒有得到結果,就使用上述步驟,繼續FUZZ其他目錄。

  4. 注意:FUZZ過程中,可能需要對不同的參數,不同的目錄,不同的content-type等反復進行FUZZ,需要注意細心查看每次bp得出的結果。

  5. 最終的結果:獲得網站的getshell權限,在得到可上傳的的URL之後,修改bp中的請求數據,傳入木馬(例如:一句話木馬),發送到對應的URL,然後在瀏覽器中進行訪問,最終得到結果。

    <?php
      system("whoami")
    ?>
    

    image-20230527113452096

    <?php
      phpinfo();
    ?>
    

    image-20230527113558908

    image-20230527113740050

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。