<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>

    滲透測試業務邏輯之業務接口調用

    VSole2022-03-25 06:36:34

    0x00:前言

    上周做滲透,有一個 sql 注入,負責安全審核的人給開發說你們的程序既然還有 sql 注入,我一年也看不見幾個。這句話讓我又再次深刻的認識到,滲透測試常規的一些注入跨站漏洞不如以前那么盛了,有點經驗的開發寫東西都會去考慮到了,再加上修復方法也在逐漸的完善,邏輯類的東西也應該并重的去測。

    0x01:分類

    我把邏輯類的問題大概總結了一下,大概可以分為十個模塊,分別是登錄認證模塊測試、業務辦理模塊測試、業務授權訪問模塊測試、輸入 / 輸出模塊測試、回退模塊測試、驗證碼機制測試、業務數據安全測試、業務流程亂序測試、密碼找回模塊測試、業務接口調用模塊測試。

    這次記錄的是第十個也就是最后一個模塊業務接口調用模塊測試。

    0x02:業務接口調用模塊

    1,接口調用重放測試

    測試方法:接口調用重放測試可以理解成重放測試,接口也就是數據請求,功能很多,例如發布文章,發布評論,下訂單,也可以理解成只要請求有新的數據生成,能重復請求并成功,都可以算請求重放,也就是接口重放測試。

    修復方法:對生成訂單緩解可以使用驗證碼,防止生成數據的業務被惡意調用。或是每一個請求有唯一的一個 token,請求提交后,token 失效這樣。也可以參考微信的做法,在參數中添加 timestamp 和 nonce,并對其進行簽名加密。

    2,接口調用遍歷測試

    測試方法:例如有一個功能,是瀏覽商品的歷史記錄。把其用戶的瀏覽歷史記錄 url 發送到 intruder,遍歷其用戶的 id,看返回 response 信息中是否有正常返回的,且是其他用戶的,則證明存在接口遍歷問題。

    修復方法:在 session 中存儲當前用戶的憑證或者 id,只有傳入憑證或者 id 參數值與 session 中的一致再返回數據內容。

    3,接口調用參數篡改測試

    測試方法:例如在一些短信驗證碼、郵件驗證碼等功能業務中,比如修改其他用戶密碼,發送后,再次點擊重新發送,攔截其請求,修改為自己的賬號,如果自己收到了驗證碼,則存在此問題。

    修復方法:會話 session 中存儲重要的憑證,在忘記密碼、重新發送驗證碼等業務中,從 session 獲取用戶憑證而不是從客戶請求的參數中獲取。從客戶端處獲取手機號、郵箱等賬號信息,要與 session 中的憑證進行對比,驗證通過后才允許進行業務操作。

    4,接口未授權訪問

    測試方法:只要是登錄后才可以返回相關信息的接口,在未登錄狀態下也可以返回的,就是未授權訪問。在一般的網站測試中,可以 http history 中選擇網站的根目錄地址,然后右鍵 spider from here 進行爬去相關的 url,然后在 target 欄下的 site map 中利用 mime type 進行篩選,主要關注一下 json、script、xml 等這些類型,然后把 url 貼到瀏覽器中看是否能訪問來驗證。

    經驗之談:或者在測試的時候,相關數據包發送到 repeater 后,刪除 cookie 進行 go,如果成功返回信息,則是存在此問題的。但把 url 貼到瀏覽器中時會跳到登錄頁,這時為了驗證可以使用 firefox 的 backfar 插件再試。

    修復方法:利用 token 校驗的方式,在 url 中添加一個 token 參數,只有 token 驗證通過才返回接口數據且 token 使用一次后失效。在接口被調用時,后端對會話狀態進行驗證,如果已經登錄,便返回接口數據,如果未登錄,則返回自定義的錯誤信息。

    5,callback 自定義測試

    測試方法:因為同源策略,很多網站都會使用 JSONP,而 JSONP 一般會使用 callback 回掉函數,如果這個函數沒有做相關的措施,可以隨意傳入 js 代碼并執行則存在此問題。

    可以使用 burp 的爬蟲功能,先爬去目標網站,然后篩選一下包含有 callback 關鍵詞的 url,看 response 返回的 mime 類型,如果是 text/html 的,則可以輸入 js 代碼確認下是否存在這個問題。

    修復方法:首先可以定義下 content-type 為 json 格式,content=application/json。其次建立 callback 函數白名單,如果傳入的函數不是白名單內的,則組織并轉到異常頁。最后可以對 callback 參數進行 html 實體編碼來過濾掉一些特殊字符。

    6,webservice 測試

    這個測試我目前沒有具體的實操過,之前有一次是接口測試就是 webservice 的。回頭有測試用例的話,再單獨記錄一篇博客。

    0x03:總結

    業務邏輯模塊記錄,十個模塊都大概的總結完了,如果你是一個滲透人員,希望這些思路和方法可以幫到你,如果你覺得博客說的太大概,不詳細,那么建議先玩一下 burp,推薦看 burp 實戰指南,然后再回頭看博客,一定是通俗易懂的。因為確實不是深奧的什么東西,就是一些常規的簡單思路。

    滲透測試接口測試
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    或是每一個請求有唯一的一個 token,請求提交后,token 失效這樣。把其用戶的瀏覽歷史記錄 url 發送到 intruder,遍歷其用戶的 id,看返回 response 信息中是否有正常返回的,且是其他用戶的,則證明存在接口遍歷問題。
    翻看前端代碼,可憐的js文件就幾個,不過看還真的有了新發現,common.js里面定義了一些地址。擴大戰果有了接口,除了測試接口未授權,我們還能對接口進行其他測試。看了下接口,賬號只能后臺添加、審核、刪除、停用。不了解開發的心態)這里的參數js中并沒有提供,需要自己Fuzz,不過這個系統非常的人性化,提供了報錯信息,圖是后補的。
    滲透測試-API接口測試
    2021-12-28 22:57:33
    一個API中通常包含的結構有:本文記錄的是Postman學習,以及一些接口測試概念。幫助大家建立接口測試的整體概念,以及學會Postman工具的使用。因為客戶自己的測試人員平時做業務功能測試時,也都是有現成的測試 demo的,不可能在Postman中一個一個手動構造請求去測試
    滲透測試Tips
    2022-04-13 06:38:50
    知己知彼,百戰不殆1、如果提示缺少參數,如{msg:params error},可嘗使用字典模糊測試構造參數,進一步攻擊。
    主要是可以拿著這些信息通過goole,或github搜索一些其他的敏感信息,擴大搜索面。效果就不多說了,在github泄漏一些賬號或源碼的事件簡直不要太多。)如果得到的ip結果不同,即可判斷使用了CDN。nmap掃描服務器進行搜集,我認為也是至關重要的一點,不能遺漏。里面的security項rename-command CONFIG ""又問:如果內容禁止使用ip如何探測內網端口1、使用dns解析2、127。
    接口未授權在嘗是了一波js接口后沒有發現什么漏洞,但是查找到了一些信息泄露。sql注入(兩枚)在剛剛注冊了用戶,登錄進去。第一處將url和參數進行拼接。第二處第二處同樣是js文件內找到。在圖片中間的地方插入xss語句但是如果沒有找到可以注冊的api,則這個漏洞無法利用,為了擴大漏洞危害,嘗試刪除cookie,是否可以未授權文件上傳。
    了解接口常見漏洞,將幫助你在測試接口獲取更多的思路。信息披露信息可能會在 API 響應或公共來源中披露。敏感數據可以包含攻擊者可以利用的任何信息。例如,使用WordPress API的網站可能會在不知不覺中與導航到API路徑的任何人共享用戶信息。錯誤消息可幫助 API 使用者排查其與 API 的交互問題,并允許 API 提供者了解其應用程序的問題。其他良好的信息來源是在偵察期間收集的 API 文檔和資源。
    前言:滲透測試的時候往往會遇到盲注這類的繁雜的手工測試,所以需要編寫半自動化腳本去進行測試減少時間浪費并快速
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类