Injection Attack
Injection Attack (注入式攻擊)為一種利用外部不被信任的輸入來源,未經驗證就被直接帶入後端處理,導致利用跳脫字元或編碼等方式造成攻擊字串被執行,進而發生無法預期行為,更由於其普遍性導致網路上有多種工具可協助進行攻擊,不需要高深技巧,可想而知其嚴重性!
常見的 Injection attack
- SQL injection
- Cross-site Scripting (XSS)
- CRLF injection/Host Header
- Code injection/OS cmd
- SMTP injeciton
- XPath injection
SQL injection 及 XSS 更是蟬聯 OWASP TOP 10 多年,可見其造成的傷害及普遍性之高,畢竟開發人員在將外部參數丟入 SQL 命令列時,為了方便時常就直接帶入,省略了過濾或參數化等方式,相信有寫過串接 Database 的網站開發人員都會有的經驗吧!
CRLF 則是利用 \r\n 換行字元切割 HTTP Header 並帶入攻擊行為,因為 Header 就是使用 \r\n 來做欄位的分離,而通常會搭配 XSS 來進行更危險的攻擊手法。
Code injeciton 則為由外部未經驗證的字串被直接使用 eval 或 system 等執行指令來執行,導致伺服器被執行未預期的程式行為,能造成的後果自然也是無法預期。
SMTP injection 為類似 CRLF 利用換行字元切割參數導致送出 SMTP 相關指令,常被第三方用來寄送匿名廣告信件(Relay),從而演變成釣魚信件的進階持續式攻擊 (APT)。
XPath injection 攻擊原理類似 SQL injection,利用跳脫字元繞過檢查,並帶入其他攻擊行為,若為處理使用者身分驗證等流程,則可能造成提權與機密資訊外洩等風險。
Injection 式的攻擊手法都是直接信任外部輸入,沒有經過字元的檢查或進行過濾,或是只利用前端 javascript 檢查輸入行為,卻很容易被駭客繞過,能這麼長久被列為最常見的攻擊千萬不可忽略。