iT邦幫忙

2026 iThome 鐵人賽

0

DAY35 HTTP 請求走私與記憶體弱點

  • 一. HTTP請求走私 Request Smuggling
  • 二. 緩衝區溢位 Buffer Overflow

一. HTTP請求走私 Request Smuggling

前端伺服器和後端伺服器對於一個HTTP請求在哪裡結束的判斷不一致
請求邊界看法不同

攻擊者利用這個落差
把惡意請求偷渡進去

IPAS 115-1 Q24
關於「HTTP 請求走私攻擊(HTTP Request Smuggling)」的成因,下列何項說明最為適切?
D :攻擊者利用前端代理伺服器(Proxy Server)與後端伺服器對HTTP請求邊界解析不一致,導致請求邊界混淆

為什麼邊界會不一致
首先要知道 判斷body到哪裡結束的標頭有兩種

  1. Content-Length (看長度)
  2. Transfer-Encoding: chunked (看結束標記)

如果前端用一種,結果後端用另一種
攻擊者就能做出前端看成一個但後端看成兩個的封包
這樣就能繞過保護、劫持流量、汙染快取

Portswigger練習教材

防禦
前端與後端應該用一致且嚴格的規則解析 HTTP 請求Request


二. 緩衝區溢位 Buffer Overflow

寫入的資料超過緩衝區能容納的資料量,造成資料溢出,破壞程式執行,嚴重時可能被利用取得程式甚至系統控制

緩衝區通常都有固定的容量 假設:

程式執行時,會使用一塊記憶體空間作為緩衝區暫存資料
這塊緩衝區可能是位於堆疊或是堆積等不同記憶體區域
假設配置了一塊 8bytes的空間
緩衝區容量有8格

假設:

[ 8 bytes ] [ 4 bytes ] [ 4 bytes ] [  4 bytes      ]
 buffer      其他變數     saved EBP   Return Address
  • Buffer (緩衝區)
  • 其他變數
    • 函式自己做事用的筆記
    • 例如:這個人是不是管理員
  • Saved EBP (保存的基準指標)
    • 記住上一層函式的家在哪
  • Return Address(返回地址)
    • 記住做完之後要回去哪裡

可是攻擊者透過程式本身的輸入框把資料硬塞到17格

超過緩衝區邊界Boundary

假設攻擊者隨便亂打沒有輸入任何惡意指令

結果就是->程式直接當機

假設攻擊者有目的的寫入惡意指令

結果攻擊者將資料溢出到最後一格(返回地址)並把那個地址寫成攻擊者的地方
攻擊者輸入AAAAAAAABBBBCCCC惡意位址

[ 8 bytes ] [ 4 bytes ] [ 4 bytes ] [  4 bytes      ]
[ AAAAAAAA] [ BBBB ] [ CCCC ] [  惡意位址      ]

整個舉例流程就是
配置 buffer → 溢出 → 蓋掉 Return Address → 跳去執行惡意指令
這些是Stack-Based 堆疊型

Heap-Based 堆積型
堆疊型是已經知道溢出後下一個區域是什麼
就像擺盤子一樣,你知道下一個盤子擺在哪裡,是整齊好猜的
而堆積型是像一個倉庫一樣,裡面東西的擺放方式不像堆疊型那麼整齊,它有一套自己的規則
所以你並不知道要破壞到哪裡才會是有效區域
原理一樣都是溢出,差別只在攻擊的位置和手法不同

IPAS 115-1 Q15
某研究人員發現一個 OS kernel 的漏洞:惡意程式可經由某個 syscall 觸發 kernel 中的緩衝區溢位,但要成功利用此漏洞必須先取得或推測核心記憶體位址。下列何種安全機制最能有效降低該攻擊的成功率?
C :ASLR/KASLR
位址隨機化正面對上題幹的前提,位址一亂,攻擊者就算觸發溢位也跳不到想去的地方
這也是DAY30-31有講到的內容


IPAS 114-2 Q20
下列哪一種攻擊手法試圖利用作業系統對於記憶體存取的管理不當,透過將惡意程式碼注入到應用程式的記憶體空間中,從而執行未經授權的操作?
B :緩衝區溢位攻擊

這題對應剛剛的舉例
記憶體存取管理不當:
buffer 只有 8bytes,但程式不檢查,讓你寫超過
注入惡意程式碼:
AAAAAAAABBBBCCCC惡意位址
執行未經授權的操作:
程式跳去惡意位址
執行 shellcode(攻擊者取得控制權)

惡意位址 = 去哪裡
shellcode = 到了要幹嘛


上一篇
DAY34 持久化/隱匿型惡意程式/DLL
系列文
格鬥教練想轉職學資安是否搞錯了什麼(自學第一步)IPAS初級筆記 共 34 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言