乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      【攻防實戰(zhàn)】滲透測試JS接口Fuzz場景研究

       zZ華 2025-06-01 發(fā)布于廣東
      來自船山院士網(wǎng)絡(luò)安全團隊核心成員SRC大佬:月 的原創(chuàng)。

      滲透測試中當(dāng)頁面功能點過少無處可測,或者攻防、SRC場景下開局一個登錄框嘗試弱口令、爆破、注入無果后針對JS接口尋找未授權(quán)信息泄露成為了得分關(guān)鍵。

      圖片

      前端Webpack接口

      Vue框架并且使用Webpack打包更容易產(chǎn)生未授權(quán),不是框架本身未授權(quán)而是開發(fā)者大多使用前后端分離,接口較多更容易出現(xiàn)不鑒權(quán)情況。

      圖片

      反編譯js.map

      Vue使用webpack(靜態(tài)資源打包器)的時候,如果未進(jìn)行正確配置,會產(chǎn)生一個app.js.map文件,而這個js.map可以通過Node.js環(huán)境安裝reverse-sourcemap工具來反編譯還原Vue源代碼。

      Webpack源碼泄露反編譯教程

      reverse-sourcemap -o aaa -v app.9fbea7c7.js.map

      還原源代碼JS文件中,直接找關(guān)鍵的api目錄、config目錄從中提取出新的接口進(jìn)行拼接測試未授權(quán)漏洞。

      圖片

      Python腳本提取JS接口

      import re

      # 讀取文件內(nèi)容
      file_path = '1.js'
      with open(file_path, 'r', encoding='utf-8'as file:
          js_code = file.read()

      # 使用正則表達(dá)式提取路徑
      # 匹配 GET 或 POST 請求的路徑,支持單引號或雙引號
      pattern = r'''(D\.post|D\.get)\(['']([^'']+)['']'''
      matches = re.findall(pattern, js_code)

      # 打印匹配到的路徑
      if matches:
      print('Matched paths:')
      formatch in matches:
              method, path = match
      print(f'{method.upper()}: {path}')
      else:
      print('No paths matched.')
      圖片

      Packer-Fuzzer尋找新接口API

      Webpack打包站點手工審計JS尋找接口往往慢人一步,生成的JS文件數(shù)量異常之多并且總JS代碼量異常龐大(多達(dá)上萬行),這給我們的手工測試帶來了極大的不便,利用此工具可以很好解決此問題。

      Packer-FuzzerGithub地址

      圖片

      工具會對Webpack 打包站點自動API模糊匹配與漏洞檢測,掃描所有JS文件存在的接口并拼接訪問測試未授權(quán)等漏洞。 結(jié)束后會生成報告文件參考。

      // -t adv 代表使用高級版進(jìn)行掃描

      python3 PackerFuzzer.py -t adv -u http://baidu.com  
      圖片

      根據(jù)報告審查是否有未授權(quán)接口或其他漏洞產(chǎn)生。

      圖片

      JS接口構(gòu)造

      插件工具

      熊貓頭

      熊貓頭插件針對前端顯示到的接口或者其他銘感信息進(jìn)行捕獲顯示,復(fù)制粘貼到BP爆破器GET POST 兩種請求方式都測試,接口未鑒權(quán)就可以發(fā)現(xiàn)一些信息泄露以及未授權(quán)漏洞,包括內(nèi)網(wǎng)的IP等。

      圖片
      圖片
      圖片

      但是插件顯示是不完整的,針對熊貓頭提取出的接口可以手工篩選一遍,例如:findsomething顯示接口。

      第一個接口應(yīng)該將冒號去掉添加個數(shù)據(jù),第二個接口也應(yīng)該加入?yún)?shù),一般也都是這樣處理將 ,雜亂參數(shù)去除需要值的參數(shù)就賦值。

      /user/getInfo/:uid  -----> 修改  /user/getInfo/uid

      /user/getInfo?uid  -----> 修改  /user/getInfo?uid=xxxx

      URLFinder

      URLFinder工具地址

      相比熊貓頭插件提取更加全面,會深入頁面JS文件做二層深度掃描不會局限當(dāng)前頁面JS文件,會對JS文件中引入的JS文件做三次的掃描接口拼接,尋找未授權(quán)接口或未授權(quán)功能點。

      baidu.com

      app.js                            confif.js                  url.js
      app.xxx.js                        config.xxxxxx.js           url.xxxxxx.js
      app.sdqew2324.js                  config.jkjk767.js           url.vcbvcj213.js    
      api/user/info                     /api/getSharingJson         /api/custommap/

      baidu.com/api/user/info
      baidu.com/api/getSharingJson 
      baidu.com/api/custommap/

      圖片

      如遇到站點銘感無法利用使用掃描器, 利用-t 參數(shù)減少線程或者利用二開URLFinder規(guī)避。

      https://github.com/N-Next/URLFinder-x

      //掃描域名并指定輸出200狀態(tài)和403狀態(tài)碼接口 -m 安全深入抓取

      URLFinder.exe -u https://baidu.com/ -s 200,403 -m 3

      // 線程20

      URLFinder.exe -u https://baidu.com/ -s 200,403 -m 3 -t 20

      經(jīng)典開局登錄框并且插件也沒有探測出有效接口,可以利用工具深度掃描頁面JS文件。

      圖片

      通過二層探測JS拼接接口size大小判斷是否有新的數(shù)據(jù)產(chǎn)生,如果size大小跟未登錄狀態(tài)一致那肯定是頁面沒有變化也不需要額外去看, size數(shù)字非常大那么響應(yīng)出的內(nèi)容更豐富。

      圖片

      使用URLFinder可以很好的發(fā)現(xiàn)隱藏的未授權(quán)頁面,那么進(jìn)入功能點了就可以到處點點點,測試是否可以未授權(quán)增刪改查。

      圖片
      圖片
      • 案例

      SRC信息泄露

      開局登錄框,功能點無法利用URLFinder深入抓取JS拼接,找到一處下載接口,訪問下載xls泄露網(wǎng)站部門人員工號+姓名,簡單快速尋找未授權(quán)漏洞。

      https://xxxxx/index.php/c/core_user_export/json?__request_data=
      1.png

      文件上傳接口XSS

      同樣開局登錄框,熊貓頭短暫測試沒有效果使用此工具二次對JS深度抓取接口拼接。

      圖片

      探測到隱藏文件上傳功能點,成功利用收獲文件上傳XSS。

      圖片
      圖片

      Fuzz功能接口

      構(gòu)造功能

      如果網(wǎng)站功能點只能允許查看 info 那么在查詢接口功能抓包構(gòu)造其他參數(shù), 因為常見業(yè)務(wù)接口格式如果js文件中只有查詢的接口,那么自己可以嘗試一下構(gòu)造添加、修改和刪除接口多觀察接口,推測其功能,然后根據(jù)功能去FUZZ,畢竟你要實現(xiàn)一個web功能,基本都要有對應(yīng)的增刪改查接口。

      api/info?id=1// 正常查詢接口

      api/ delete ?id=1//   構(gòu)造刪除接口 

      /api/v1/api-docs 

      //  嘗試替換數(shù)字

      /api/ v2 /api-docs  
      /api/ v3 /api-docs

      -----------------------------------------------------

      查詢(獲取信息)
      search list select query get find

      刪除(刪除某個數(shù)據(jù))
      del Delete  remove

      編輯(更新某個信息)
      Update Up edit Change

      添加(增加某個信息)
      add create new

      // 查詢接口

      GET /api/模塊名/list

      /api/模塊名/all

      注意

      增刪改在實際Fuzz中盡可能不攜帶參數(shù)測試,這些操作涉及到業(yè)務(wù),萬一誤打誤撞影響到了真實用戶就脫離了測試安全的意義了,攜帶參數(shù)也是利用小號的值。

      // 添加
      POST /api/模塊名/add   

      // 刪除接口

      DELETE /api/模塊名/id 

      GET /api/模塊名/del?id=

      POST /api/模塊名/

      // 修改接口

      POST /api/模塊名/modify

      POST /api/模塊名/

      接口信息泄露

      除了構(gòu)造增刪改查外,泄露點更多是在查詢處,查詢處沒有做好鑒權(quán)及易導(dǎo)致查詢不當(dāng)全站信息泄露,針對查詢功能只要是查詢的地方記住刪除全部參數(shù)以及置空參數(shù)或者輸入% 。

      GET /api/demo/query=xxxxxx

      GET /api/demo/ or querylist orlist# 刪除查詢參數(shù)構(gòu)造list列表

      GET /api/demo/query=  # 置空

      GET /api/demo/query=%/*  # 模糊查詢

      假設(shè)一個接口是,如下,正??隙ㄊ腔仫@自己的,我們可以自行構(gòu)造多余的功能,按照語義輸出列表,并且前置的信息需要刪除 small)翻譯也是微小意思推斷一下就是只輸出小部分的,那么可以嘗試這個參數(shù)刪除發(fā)包測試,

      /prod-api/system/info/small/userId  ------> 個人信息

      /prod-api/system/info/small/userId/list   ------>  報錯

      /prod-api/system/info/userId/list   ------>  全站用戶信息

      無權(quán)限URL混淆添加資源后綴繞過

      微信文章學(xué)習(xí)到的思路功能點Fuzz出來后但是無權(quán)限利用此方法進(jìn)行繞過。SRC挖掘-URL混淆的利用

      https://mp.weixin.qq.com/s/PoXSeckX0iwBSkIr02zYoQ

      URL混淆漏洞是指服務(wù)器和解析URL時,由于不同組件或系統(tǒng)的解析規(guī)則不一致,可以利用這種不一致來繞過安全控制或獲取敏感信息,對路徑進(jìn)行編碼添加后綴的方式從而進(jìn)行繞過。

      image.png

      正常接口無權(quán)限。

      2.png

      對最后的接口后面添加混淆,利用字典去Fuzz 添加.json繞過,測試鑒權(quán)相關(guān)的漏洞時,可以嘗試url混淆,接口多個位置fuzz 資源文件。

      /api/user ----> 未授權(quán)403
      /api/user.json/css/png --- 200 ok
      image (1).png

      白名單../繞過權(quán)限接口

      社區(qū)師傅文章關(guān)于繞權(quán)限

       基于未授權(quán)的滲透測試技巧總結(jié)

      接口未授權(quán)測試,提示了未授權(quán)的狀態(tài)嘗試添加../ 使得權(quán)限過濾?認(rèn)為我們當(dāng)前訪問的接?為白名單接口前置的接口,需要是正常的白名單接口比如/login ,因為登錄不需要權(quán)限校驗,前面用正常的白名單后面接入未授權(quán)的接口。

      /login/ ----> 200 ok
      /system/user ----->  403 未授權(quán)
      /system/**logn**/../user ------>  添加白名單接口未授權(quán)成功

      利用分隔符 ; 讓后端以為文明訪問的接口不是業(yè)務(wù)接口,和上面添加 .json 差不多一致切割分隔符繞過。

      有些像之前學(xué)習(xí)的shiro權(quán)限繞過 但shiro是 ../;

      Fuzz接口參數(shù)

      無論是熊貓頭還是其他工具得到的接口Path其實是不完整的,直接拼接的話缺少參數(shù)是無法訪問接口會報錯,需要構(gòu)造參數(shù), 如果響應(yīng)包直接提示缺少哪些參數(shù)對攻擊者是很友好的,請求包構(gòu)造發(fā)包就可以測試。

      /api/demo/test HTTP2   -------->     '缺少deviceId'

      提示缺少參數(shù)我們拼接

      /api/demo/test? deviceId =xxx HTTP2   ------>   {最好情況直接顯示數(shù)據(jù)} 

      圖片

      但更多的情況下是直接提示缺少參數(shù)也不說什么參數(shù),那么需要可以JS源碼里面找一下它的調(diào)用代碼,找到請求中用到的參數(shù)進(jìn)行構(gòu)造, 先是找接口找到,沒有辦法Fuzz參數(shù)是最后的底牌。

      BP搜索參數(shù)

      BURP作為挖洞小伙伴善加利用功能點可以事倍功半,站點功能會自動記錄加載過的所有JS文件,我們只需要做的是進(jìn)入網(wǎng)站后點擊一切能點擊處讓BP加載更多,避免緩存影響瀏覽器需要關(guān)閉緩存,這樣可以保證JS文件被BP加載。

      圖片

      加載頁面JS后點擊站點地圖的過濾,輸入框輸入提示缺少參數(shù)的Path 左側(cè)目錄,就會過濾出不存在此接口的文件,保留存在此接口的文件。

      /api/
      圖片

      再從下面搜索框搜索對應(yīng)缺少參數(shù)的的Path找到它的調(diào)用位置。

      圖片

      找到接口了,但是不懂參數(shù)如何構(gòu)造可以提交給AI 給予明確的指示就會構(gòu)造好示例的請求反饋給我們。

      我從js里面找到了這個請求 請幫我構(gòu)造好原本的請求參數(shù)是如何放置的,構(gòu)造好請求參數(shù)值反饋給我

      $.getJSON('/getLineLocalPromotion/demo/',{

      lineIdstr:a,sid:b,rand:(new Date()).getTime()
      },

      /getLineLocalPromotion/demo?lineIdstr=123&sid=456&rand=1642678901234
      圖片

      BP站點地圖尋找參數(shù)的方法和瀏覽器全局搜索大差不差,但瀏覽器查找如果相似的接口匹配行數(shù)過多,不利于查找,BP會首先進(jìn)行一次過濾減少了范圍,那個容易達(dá)到目的使用哪個方式。

      圖片

      字典Fuzz參數(shù)

      缺少參數(shù)響應(yīng)包更多的情況是模糊提示, 只會提示缺少參數(shù),也不會說是什么參數(shù),我們首先是可以按照上面的手法全局找接口,看看構(gòu)造的是什么參數(shù),找不到接口構(gòu)造參數(shù)那么可以上字典Fuzz參數(shù)。

      /api/demo/getuserinfo------>  Missing parameter // 無提示

      /api/demo/getuserinfo? {fuzz} =

      后端無提示,那么根據(jù)請求的語義,我們雖然不知道參數(shù)的具體值,但是能很大程度上縮小范圍的,請求是獲取用戶的信息,那么代表傳入的參數(shù)是用戶參數(shù),搜集常見的用戶參數(shù)作為字典,根據(jù)接口需要實現(xiàn)什么功能,在這個思路基礎(chǔ)上推斷出參數(shù)。

      id userid
      user_id
      uid
      userId
      google_nid 

      圖片

      文件上傳參數(shù)名肯定是file files filesname,查詢接口參數(shù)肯定也會是query q ,根據(jù)接口語義推斷。

      如果想不出合理的參數(shù)名畢竟我們不是開發(fā)出身,日常沒有足夠接口參數(shù)積累,可以以一個開發(fā)者的視角詢問ai通過此接口可以傳遞哪些參數(shù),有些情況參數(shù)存在多個,這個需要依照功能點來進(jìn)行填充,顯示功能點的可能需要pageSize pageNum 上傳功能點需要時間戳、文件名等等,思路也是找不到就Fuzz

      /api/demo/upload?{ file/files/filesname }= 

      /api/demo/query?{ q/name/id }= 

      圖片

      接口語義參數(shù)拼接

      原理是Web開發(fā)的思路和習(xí)慣,尤其是大部分MVC框架,我們對功能點操作實際上是對后端進(jìn)行增刪改查,MVC存在映射關(guān)系,根據(jù)面向?qū)ο笏枷耄瑸榱颂峁┐a的復(fù)用性, 增刪改查雖然不同功能但實際上操作的還是一個類中的參數(shù),類中的屬性肯定是高度類似,很多情況是還是完全相等。


      在一個接口缺少參數(shù),響應(yīng)不出數(shù)據(jù),可以回過頭找到其他**'輸出'**功能點顯示的參數(shù) 拼接到請求包。

      假設(shè)需要構(gòu)造接口語義是edit編輯,那么肯定需要的是編輯的信息,ID、名稱這些參數(shù)信息,根據(jù)這一點可以找**'輸出'** info信息的功能點。

      /api/demo/edit/  -----------> 缺少參數(shù)

      /api/demo/edit

      圖片

      找到輸出info 功能點 ,把數(shù)據(jù)體復(fù)制到edit編輯請求使用修改,GET POST JSON 均提交。

      存在用戶ID 編號的參數(shù)值最好有兩個賬戶進(jìn)行測試,是否可以達(dá)到越權(quán)或未授權(quán)目的!結(jié)合此方法在上文Fuzz功能接口的地方,找到隱藏功能二次根據(jù)語義判斷隱藏參數(shù)做拼接測試。

      圖片
      圖片

      Fuzz功能點和Fuzz參數(shù)原理都是一樣的,推測出開發(fā)的語義化,因為他們的命名肯定是會有規(guī)律的,增刪改查功能和和需要的參數(shù)都是這樣,尋找 輸入 輸出 方法只是也是站在開發(fā)思維尋找參數(shù)。

      功能點Fuzz 增刪改查即可,參數(shù)尋找有響應(yīng)包有提示直接拼接,無提示全局找,找不到根據(jù)請求語義找其他功能點輸出參數(shù)位置拼接猜測,滲透測試講究一個測,有可能性的話就測一下。

      Fuzz JS文件

      攻防有時會遇到比較古老的站點PHP/ASP.NET,同樣是開局一個登錄框 JS都是直接引入的,提取不到可以利用的接口,并且沒有Webpack打包技術(shù)這個時候可以嘗試Fuzz JS文件, 這些比較古老的站點的JS目錄一般就是/js /script /plugins /content等等,很容易找到 JS的名字也比較簡單,不像用Webpack打包的JS,名字中可能會帶有隨機字符。遇到這種還是能去FUZZ一下JS文件的。

      圖片

      嘗試對JS文件名Fuzz 有些情況下JS文件并沒有顯示在當(dāng)前目錄 但確實是用到了這些文件,利用好字典對JS文件名進(jìn)行爆破,如果響應(yīng)了新的JS文件再從響應(yīng)包中審計提取新的接口進(jìn)行二次測試未授權(quán)

      圖片
      圖片

      總結(jié)

      文中借鑒了一些其他師傅的文章思路結(jié)合Fuzz場景,如能為師傅們提供一些新的思路那最好不過,不足之處還請批評指出,希望各位大佬日日出0day?。?!

      掃碼進(jìn)群,別打廣告,發(fā)任何和技術(shù)無關(guān),立馬送飛機票。
      純技術(shù)交流,歡迎加入船山網(wǎng)安戰(zhàn)神宗!

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多