###### tags: `電腦攻擊與防禦` # [Magic Cookies and Web Bugs](http://staff.csie.ncu.edu.tw/~hsufh/COURSES/SPRING2023/7_cookies.ppt) ## ***4/25*** # Magic Cookie ## Cookie - 被用來當identifying tokens - 任何程式都可以採用這個方法 - 無法偽造 - 有些cookie會有 - 數位簽章 - 其他的加密方法 # Web bug (web beacon,tracking bug...) - 可以放在email or html當中 - 是指***隱藏***在任何網頁元素或郵件內約1像素大小的GIF或PNG圖片 - 用來追蹤使用者的資訊,ex.讀取時間,ip位置,哪種browser,存在那些cookie - html tag : - img - iframe - style - script - input - 可以透過get方法取得更多資訊 - ![](https://hackmd.io/_uploads/Bk89QHz8n.png) - 常被電子郵件行銷者、垃圾郵件發送者和釣魚者用來驗證 * 地址是否有效 * 是否已經通過了垃圾郵件篩檢程式 * 是否確實被使用者查看 # HTTP Cookie - Magic Cookie 衍生而來 - web server產生 - browser 接受 - 功能 - 網站偏好 - 儲存使用者資訊 ex.購物車.. - 加速認證 - 追蹤 ## ***5/09*** ## Cookie - 主要功能 : 加速認證 ## Cookie Stealing - 盜取cookie可以通過認證 ## expires=DATE - 定義cookie過期的時間 - 沒定義expire date則關閉瀏覽器就會消失 - 有定義則稱為Persistent cookie - Persistent cookie不一定比non-Persistent存在的久 - 因為可能Persistent cookie的expire date只有一秒 ## Match a Cookie with a URL ![](https://hackmd.io/_uploads/Sk4uYugI2.png) ## domain=DOMAIN_NAME - tail match : 從後面開始比對 - A domain attribute of "acme.com" would match host names "anvil.acme.com" as well as "shipping.crate.acme.com". - domain_name 只能設定自己的domain ## Misconceptions about Cookies - cookies 只是資料不是code,不能去異動user的電腦資料 - Cookies are in fact only data, not code: they cannot erase or read information from the user's computer. ## Third-party Cookies - 不屬於使用者訪問的網站的domain所發行的 Cookie(ex.網站中的圖片) - 廣告公司會透過thrid-party cookie(set cookie)去追蹤使用者所看過的網站 ## Drawbacks of Cookies(cookie缺點) - cookie security attacks - Cookie theft : 如果cookie沒有加密,封包竊聽時會被攻擊者取得 - Cookie poisoning : 竄改cookie的內容 - Cross-site scripting : 盜取cookie - Defend cookie poisoning - cookie存放session id,server透過session id 讀取資料 ## Cross-site Scripting - Non-persistent XSS (Reflected XSS) - the most common type nowadays - Persistent XSS - DOM-based XSS ## `<SCRIPT>` Tag - src = Specifies the URL of an outside file containing the script to be loaded and run with the document. ## `<FORM>` Tag - action = Specifies the URL of the application that will process the form. ## Non-persistent XSS (*Reflected XSS*) ![](https://hackmd.io/_uploads/Hyol6nlIn.png) - "criteria"這個參數沒有檢查使用者的輸入,導致使用者可以輸入惡意程式的js路徑 - xss可能導致 - cookie theft (最主要的 authentication cookies,session management tokens) - account hijacking - changing of web application account settings - spreading of malware through webmail, etc. - 最常被xss攻擊的 - CGI scripts - search engines - interactive bulletin boards - custom error pages - **xss不一定要點擊才會觸發, XSS可以透過img or iFrame載入js** - xss偷取cookie的關鍵點就是時間,攻擊者要再user logout之前完成所有動作 ## Non `<SCRIPT>` Events ![](https://hackmd.io/_uploads/ryM4D1ZI2.png) ## Persistent XSS - 常發生在留言板 - 怎麼保護自己 - 關閉scripting language,但會造成網頁無法瀏覽 - 用不同的瀏覽器,因為不同的瀏覽器cookie無法共用 - 開發者應該過濾input data ## ***5/16*** ## Cross-site request forgery (*CSRF*) - 電腦發出未經過使用者同意的request - 特徵 : - 網站有涉及身分認證 - 利用網站對該身份的信任 - 欺騙user的瀏覽器去發送一個request - 這個request會出現side effect(ex.轉帳功能) - CSRF受害者 - 網站沒對使用者的操作(request)做二次認證 - 透過cookie認證使用者的網站,有可能造成使用者在不知情的情況下發出request - CSRF attacks經常發生在網路討論區上,user允許在上面post image(再src內動手腳) - CSRF必要條件 - 攻擊者要知道受害者目前有認證的網站,並了解目標網站的操作方法,之後透過網路討論區做攻擊 - 目標網站有受害者認證過的cookie - 目標網站沒有做二次認證的動作 - 如何預防 : - 提供額外的驗證 (ex. 在表單中產生hidden欄位用於驗證) ## Same Origin Policy for JavaScript - 同一個來源才有辦法獲取或設置properties (ex.cookie) - 以下必須相同才能代表同源 : - protocol(http or https) - port - host - 透過document.domain可以通過同源偵測 - ![](https://hackmd.io/_uploads/Hk1C0bz8h.png)