XSS入门与介绍
1. XSS简介
XSS,跨站脚本攻击(Cross Site Scripting),是一种注入式攻击。为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
2. XSS成因
-
对于用户输入过滤不足
-
对于非预期输入的信任
3. XSS的危害
-
盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号
-
窃取数据,如盗取企业重要的具有商业价值的资料
-
控制企业数据,如读取、篡改、添加、删除企业敏感数据
-
非法转账
-
网站挂马
-
强制发送电子邮件
-
控制受害者机器向其它网站发起攻击
-
...
4. XSS分类
-
反射型XSS:反射型跨站脚本(Reflected Cross-site Scripting),也称非持久型(Non-persistent XSS)、参数型跨站脚本。主要用于将恶意脚本附加到URL地址的参数中,只是简单地把用户输入的数据反射给浏览器,攻击者需要诱使用户点击该链接。
-
存储型XSS:存储型跨站脚本(Stored Cross-site Scripting),也称持久型(Persistent Cross-site Scripting。比反射型跨站脚本更具有威胁,并且可能影响到Web服务器自身的安全。攻击者先将恶意脚本代码上传或者存储到漏洞服务器中,只要受害者浏览了有该恶意代码的页面就会执行恶意代码。
-
DOM XSS:DOM XSS从效果上来说是一种反射型XSS,但相比反射型XSS需要更进一步思考。通过修改页面的DOM节点形成的XSS。
5. 实例分析
1. XSS输出在HTML中的情况
这里是我自己搭建的环境,发现输出是直接输出在HTML中,并且没有过滤任何东西
xss_1_1 xss_1_2那么我们直接构造
<script>alert(1)</script>
网页会解析这段代码,从而达到弹窗的效果
xss_1_32. XSS在input value中的情况
在对话框中输出,发现直接显示在下方框中
xss_2_1 xss_2_2那么如果我们直接输入
<script>alert(1)</script>
这段代码就会被当作文本被输出
xss_2_3那么我们需要把输出不放在input里,则可以通过闭合<input>
构造payload为
"><script>alert(1)</script>
成功弹框
xss_2_43. XSS输出在HTML属性中的情况
本来文本框中得到get参数,但是当我们闭合<input>为
"><script>alert(1)</script>
时,发现过滤了script标签
xss_3_1 xss_3_2那么我们只能换一种弹框方式,构造payload为
"> <\img src="1" onerror="alert(1)"> 去掉img前面的\
成功实现弹窗,当然这里也可以构造成
" onclick="alert(1)"
这样当用户点击时则发生弹框
xss_3_34. XSS输出在script标签中的情况
发现输出的数据为get的参数,但是是通过javascript输出的
xss_4_1 xss_4_2所以我们需要将<script>标签过滤,构造payload为
</script><script>alert(1)
xss_4_3
5. XSS输出在textarea中的情况
这是一个留言板,那么就只能用存储型XSS,那么我们需要向留言板中插入
<script>alert(1)</script>
xss_5_1
插入后,当其他人点击后,则会弹框。我们可以用这个留言板来获取他人的cookie信息,从而登录别人的帐号
xss_5_2暂时就先学到这里,以后的学了再写出来
网友评论