資安第五堂

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: XSS game (1-4)

command injection : caas

XSS game要繳writeup

繳交連結:在這

資料來源

資安第五堂

By jellyfish

資安第五堂

  • 53