網頁常見攻擊原理與實作-done
-
cross-site request
由一個來源(即域名、子域和協議)的網絡瀏覽器向另一個來源發出的請求。
CSRF Attack 模式
登入CSRF攻擊
攻擊者誘騙使用者使用攻擊者的憑證登入,而不是他們自己的憑證,例如:
Lesson1
【實作一】
https://portswigger.net/web-security/csrf/lab-no-defenses
POST 請求可以更新用戶的電子郵件。
該 POST 請求發送至:
/my-account/change-email
點擊"view exploit"
將此exploit傳送給受害者
cross-site scripting
攻擊者將惡意代碼注入其他用戶查看的網頁中,這使得攻擊者的代碼能在受害者的瀏覽器中執行。
原理
針對request
惡意腳本來自當前的 HTTP 請求,例如:一個網站顯示如下消息:
- https://insecure-website.com/status?message=All+is+well.
- status: ALL is well。
它不對數據進行任何其他處理,因此攻擊者可以輕易構建如下攻擊:- https://insecure-website.com/status?message=<script>/*+Bad+stuff+here...+*/</script>
- 狀態:<script>/* Bad stuff here... */</script>
針對DOM
這個漏洞存在於客戶端代碼而非服務器端代碼,例如,
一個應用程式使用一些 JavaScript 從輸入字段讀取值並將該值寫入 HTML 內的一個元素:- var search = document.getElementById('search').value;
- var results = document.getElementById('results');
- results.innerHTML = '您搜索的是:' + search;
如果攻擊者能夠控制輸入字段的值,他們可以輕易構造一個惡意值使得他們自己的腳本執行: - 您搜索的是:\<img src=1 onerror='/* Bad stuff here... */'>
Lesson2
【實作二】
https://portswigger.net/web-security/cross-site-scripting/reflected/lab-html-context-nothing-encoded
Lesson3
【實作三】
https://portswigger.net/web-security/cross-site-scripting/dom-based/lab-dom-xss-stored
找個blog留下留言
>< <a href="javascript: void(0)" onclick="alert('XSS')"><img src="https://0aa500ab04e85c3c83e97acb00f100d3.web-security-academy.net/resources/images/avatarDefault.svg"></a>
使用者留言是使用js進行更新的
我們使用String.prototype.replace() - JavaScript | MDN (mozilla.org)
瀏覽器不會執行payload,因為它是由 JS 更新的。
使用 <img> 這個 tag