日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

逻辑漏洞笔记

發布時間:2023/12/18 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 逻辑漏洞笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

越權漏洞是很多應用中比較常見的漏洞類型,它是在授權邏輯上存在安全缺陷導致的問題。在基于用戶提供的輸入對象直接訪問,而未進行有效鑒權,導致一些超出預期的操作行為,可能導致信息泄露或者提權,具體危害的大小取決于業務場景,所以對越權漏洞的理解依賴于你對業務邏輯的理解深度。
當前國際上習慣將越權漏洞稱為 IDOR(Insecure Direct Object Reference,不安全的對象引用),在 HackerOne 上公開的漏洞案例中,你以關鍵詞 IDOR 去搜索,就可以找到不少真實的企業漏洞案例。

越權漏洞的分類

根據越權對象的差異,可以分析水平越權和垂直越權。
1.水平越權
假設用戶 A 與用戶 B 屬于相同權限等級的用戶,當用戶 A 能夠訪問用戶 B 的私有數據時,就稱為水平越權。
以 Pikachu 靶場的水平越權題目為例,下圖是個登錄界面,先點擊下“點一下提示”獲得 3 個賬號及其密碼:
lucy/123456
lili/123456
kobe/123456

先用 lucy 的賬號密碼登錄,點擊“點擊查看個人信息”,頁面返回 lucy 的個人信息:

同時用 Chrome Network 抓包,得到查看個人信息的 GET 請求地址和參數:

http://127.0.0.1:8080/vul/overpermission/op1/op1_mem.php?username=lucy&submit=%E7%82%B9%E5%87%BB%E6%9F%A5%E7%9C%8B%E4%B8%AA%E4%BA%BA%E4%BF%A1%E6%81%AF

前面已經密碼驗證過了,如果此時修改 username 為其他賬號,是否會獲得其他用戶的個人信息呢?
下面修改 username 為 lili,發起請求:

http://127.0.0.1:8080/vul/overpermission/op1/op1_mem.php?username=lili&submit=點擊查看個人信息


如上圖所示,成功獲取 lili 的個人信息,說明這里存在越權漏洞,且屬于水平越權,因為從原定權限看,兩者的權限等級是相同的。
2.垂直越權
假設用戶 A 是普通用戶,用戶 B 是管理員,當用戶 A 能夠訪問用戶 B 的私有數據時,就稱為垂直越權,又稱為權限提升。
以 Pikachu 靶場的垂直越權題目為例,如下圖所示,它也是個登錄界面,先點擊下“點一下提示”獲得 2 個賬號及其密碼,其中 admin 是管理員賬號:
admin/123456
pikachu/000000

分別登錄這 2 個賬號看下有啥區別,下圖是 admin 登錄后返回的信息,可以看它擁有添加和刪除用戶的權限:

為方便后面測試,先記錄添加與刪除用戶的請求數據。
先點擊用戶 vince 一行所在的“刪除”按鈕,刪除用戶 vince 并抓包,得到請求數據:

http://127.0.0.1:8080/vul/overpermission/op2/op2_admin.php?id=1

再點擊“添加用戶”,然后填寫信息并點擊“創建”:

同時抓包獲得請求數據:

POST http://127.0.0.1:8080/vul/overpermission/op2/op2_admin_edit.php username=test&password=test&sex=%E7%94%B7&phonenum=13666666666&email=test%40gmail.com&address=test&submit=%E5%88%9B%E5%BB%BA

我們再回頭登錄看下普通用戶 pikachu 登錄后的情況。

試想下,普通用戶 pikachu 如何才能擁有 admin 一樣的增加與刪除用戶的權限呢?
在當前用戶為 pikachu 的情況下,嘗試刪除用戶,構造如下請求去刪除 id=2 的用戶:
http://127.0.0.1:8080/vul/overpermission/op2/op2_admin.php?id=2

訪問后 302 跳轉到登錄界面,且并沒有刪除成功,說明這里沒有越權漏洞。

接下來看看添加用戶的接口是否存在越權,在當前用戶為 pikachu 的情況下,構建如下請求,添加一個用戶名密碼均為 hacker 的賬號:

POST http://127.0.0.1:8080/vul/overpermission/op2/op2_admin_edit.php username=hacker&password=hacker&sex=%E7%94%B7&phonenum=13666666666&email=test%40gmail.com&address=test&submit=%E5%88%9B%E5%BB%B

這里我使用 HackBar 去構造 POST 請求,請求后會跳轉到登錄界面,重新用 pikachu 登錄可以看到 hacker 賬號已經創建成功,說明我們已經越權成功,這里屬于提升權限,所以它屬于垂直越權漏洞。

越權漏洞的檢測與利用

對于越權漏洞的檢測與利用基本是一回事,因為它偏于業務邏輯缺陷,當你檢測到的時候,基本等同于利用了,所以此處我把它們放在一塊兒談。
越權漏洞的檢測與利用,長期以來大多是以手工測試或半自動測試為主,因為背后涉及一些業務邏輯功能的理解。對于自己公司內部業務做一些定制化的全自動檢測也是可行的,比如掌握各類用戶權限情況、涉及權限驗證的敏感操作請求等等情況,就可以嘗試自動切換用戶或刪除登錄態去執行敏感操作,以此判斷是否存在越權漏洞,再進行人工最終確認。

關于自動化掃描越權漏洞,推薦《越權掃描器碎碎念》一文。

下面我會介紹一些用來檢測越權漏洞的常用工具,主要是一些 BurpSuite 插件,都可以通過 BurpSuite 插件庫 BApp Store 找到并安裝,不過安裝速度可能很慢,甚至是多嘗試幾次才能安裝成功。
這種情況可以嘗試手工安裝,先從 BApp Store 官網下載插件的 bapp 文件到本地,然后點擊“Manual install …”選擇下載的文件進行安裝。

下面介紹的這些工具都是刷漏洞獎勵平臺的利器,而且越權漏洞跟別人撞洞的概率也會相對低些,有些獎金也不低。
1.Authz
Authz 的使用比較簡單,在 BurpSuite 中將需要測試的請求發送到 Authz,之后修改 Cookie 值為其他用戶,也可以是其他請求頭信息,待準備測試的請求收集完后,點擊“Run”按鈕即可。如果原響應內容長度、狀態碼和被修改請求后的響應內容長度、狀態碼一致,則會被標為綠色,表示可能存在越權漏洞。

以普通用戶 pikachu 直接訪問綠色的 URL,可以直接打開“添加用戶”的界面進行操作,這原來是管理員 admin 才擁有的權限,非常明顯的越權行為。

2.Autorize
Autorize 會對客戶端發送的所有請求數據進行修改后重放,主要是將其他用戶的 Cookie 替換當前用戶的 Cookie,或者其他授權驗證相關的請求頭。
Autorize 不用像 Authz 那樣挑選請求并發送到插件,它可以直接配置要替換的頭信息,包括 Cookie 或者其他驗證頭信息,同時支持作用域過濾器,用來篩選我們感興趣的請求,避免收到大量的無用結果。

之后也是通過對比修改前后的響應結果來判斷越權漏洞是否存在,若響應長度和狀態碼一樣,那就有可能存在越權漏洞。不過,有時候也需要人工難證下,有可能一些頁面本身就是允許任意用戶訪問的,需要分析下原設定的正常業務邏輯。
3.Auto Repeater
像 Authz 這種挑選請求并發送到插件的方式,測試效率會低一些,沒有 Auto Repeater 高效。
Auto Repeater 功能相對 Autorize 更多更復雜一些,可以理解為是它的擴展版,是基于自動請求重放與響應比對的方式進行檢測的,它可以對更加具體的請求參數進行測試,比如 PHPSESSID、SID、UID 等涉及用戶身份的參數,支持正則匹配與替換。
點擊“Active AutoRepeater”開啟,再添加替換規則。比如,我想替換 Cookie 中的 PHPSESSID 參數值,可以在 Replacements 中添加替換規則,然后在 Base Replacements 下為 cookie 配置一個規則,Type 選擇“Match Cookie Name, Replace Value”Match 設置為 Cookie 名稱 PHPSESSID,替換為權限較低的用戶的 Cookie 值。

在之后的捕獲的請求中,若滿足匹配條件就會自動修改數據并重新發送請求,用戶再根據響應結果是否有差異來判斷是否存在越權漏洞,可以通過 Logs 設置顏色標記來區分,避免請求過多時,浪費過多時間排查驗證。

防御越權漏洞

由于越權漏洞涉及業務邏輯,靠 WAF、RASP 那些安全系統是沒有用的,更重要的是在開發設計時提前考慮好權限控制與校驗問題,可以嘗試從以下幾方面入手:

  • 整體的權限調節:每次訪問一個對象時,都要檢查訪問是否授權,特別是對于安全很關鍵的對象。不要像前面的靶場題目那樣,密碼驗證過后,后續的敏感對象操作都不再驗證,這樣很容易導致漏洞。
  • 最低權限原則:只授予執行操作所必需的最小訪問權限,并且對于該訪問權只準許使用所需的最少時間。
  • 前后端雙重驗證:在涉及敏感操作行為時,前端與后端同時對用戶輸入數據進行權限校驗,尤其是前端校驗特別容易被改包繞過。
  • 對于特別敏感的操作增設密碼或安全問題等驗證方式:比如修改密碼要求輸入原密碼。
  • 總結

    以上是生活随笔為你收集整理的逻辑漏洞笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。