資安第五堂
XSS、command injection
題解
Index
XSS
What
- 全名「Cross-Site Scripting」,簡稱XSS
- 簡單來說就是攻擊者能在別人的網站上執行JS程式碼

反射型 XSS(Reflected XSS)
- 最常見的 XSS 攻擊類型
- 通常是將惡意程式會藏在網址列裡,放在 GET 參數傳遞
http://www.example.com/upload.asp?id=<script>alert(1);</script>
- 需要使用社交工程釣魚的技巧,使 User 點擊URL 攻擊才會生效。
- URL 通常看起來很詭異,所以 Hacker 通常會使用短網址或 HTML Encoder 的形式
儲存型 XSS(Stored XSS)
- 不需要使用社交工程釣魚的技巧,也能使 User 受到攻擊
- 將 Javascript 儲存在伺服器的資料庫中,使 User 遭受攻擊
- 所有造訪該頁面的使用者都會受到影響
- 常見的有在留言區留惡意腳本
- <script>alert(1);</script>
- 惡意重導向
- <script>window.location='http://attacker.com';</script>
- 利用圖片觸發(HTML 嵌套)
- <img src="x" onerror="alert('XSS 攻擊成功')">
DOM 型 XSS(DOM-based XSS)
DOM 全名為 Document Object Model
- 提取和執行惡意程式都是由 Browser 端完成,屬於前端 JavaScript 的安全漏洞
- 攻擊者可控的來源中提取數據,並將這些數據傳遞給支持動態代碼執行的 "接收點"
- 打破屬性限制的 XSS : 注入 "> 來提前結束屬性值,隨後插入惡意的 HTML 標籤(例如 <svg>)
- 利用 img 的 onerror 事件 : 直接利用 <img> 標籤的 onerror 屬性來執行 JavaScript
- 利用查詢參數進行結構注入 : 利用了查詢參數的未經驗證的處理,插入 HTML 標籤結構 並添加觸發事件
command injection
Command

Command

Command injection
Ping 命令注入
使用者輸入 IP 地址後,伺服器執行 ping 命令的程式片段
import os
ip_address = input("Enter IP address: ")
os.system(f"ping {ip_address}")
當我們輸入127.0.0.1; rm -rf /important/files
執行的實際命令將變成
ping 127.0.0.1; rm -rf /important/files
結果
-
ping 127.0.0.1
正常執行。 -
rm -rf /important/files
被執行,導致文件被刪除。
Command injection
檔案操作
有一個功能,允許用戶查詢文件內容,並執行以下命令
cat /logs/$filename
如果用戶輸入log.txt; cat /etc/passwd
執行的實際命令變成:
cat /logs/log.txt; cat /etc/passwd
攻擊者可以讀取伺服器上的敏感文件
作業
XSS game要繳writeup
繳交連結:在這
資料來源
- XSS:
- command injection:
資安第五堂
By jellyfish
資安第五堂
- 53