XSS学习笔记(入门篇)

来源:互联网 发布:在线重装mac系统 编辑:程序博客网 时间:2024/06/05 10:25

最近的学习速度挺快的,对于寒假的计划是对于各种知识点都了解大概并且基本懂得原理,在开学之后对相关书籍深入研究!


这里我就先总结下几个XSS应用的例子吧。

一.利用< >标记注射html / javascript

如果可以随心所欲引入< >标记,那么就可以通过script输入有javasript编写的恶意脚本代码。

eg:<script>alert("你妹的")</script>

所以说xss filter首当其冲要过滤转义的就是< >,<script>等字符

二.利用html标签属性值执行xss

很多html标签属性都支持javascript:[coed]伪协议的形式。关于这个伪协议做下说明:“真”协议用来在因特网上的计算机之间传输数据包,如HTTP协议(http://)、FTP协议(ftp://)等;而伪协议则是一种非标准化的协议,JavaScript:伪协议让我们通过一个链接来调用JavaScript函数。
eg:(用伪协议调用popUp函数)<a href = "javascript:popUp('http://www.example.com/');">Example</a>
ps:在支持javascript:伪协议的浏览器中能正常运行,如ie6。

这种方法由于不是所有的浏览器都支持伪协议所以就有了局限性,而且也不是所有的标记的属性值都能产生xss,通常只有引用文件的属性才能出发xss,如这些属性:href  ,  lowsrc  ,  bgsound , action , dynsrc.......

那么这里用户就可以利用部分html标记的属性值来进行XSS,下面是个例子:

<img src="javascript:alert("你妹的");">

<a href="javascript:alert("Web")">xss</a>

所以xss filter就也要过滤javascript,VBscript等关键字。

三.空格回车Tab

那么当xss filter把< >,javascript都过滤之后,用户仍然能够通过空格回车Tab键绕过限制。

eg:<img src="javas     cript:alert("安全")"width=100>

那么为什么会这样呢??javascript语句通常以分号结尾,如果javascript引擎确定一个语句是完整的,而这一行的结尾是换行符,那么就可以省略分号。这里要注意引擎不会把换行符解释为语句的终止符,毕竟并不是一个完整的语句,引擎会继续处理发现的的内容,知道遇到分号或者发现语句完整。因此用户可以像下面这种例子一样构造代码绕过限制。eg:

<img src="javas

cript:

alert("还是") width=100>

这样用回车符就可以成功执行xss了.

四.对标签属性值转码

除了上述方法,对于html标记属性值的过滤用户还可以通过编码处理来绕过限制,因为html中属性值本身就支持ASCII码形式。

eg:

<img src="javascript:alert("挺难的");">                 ps:上面替换成下面就ok了

<img src="javascript&#116&#58alert("挺难的");">

五.产生自己的事件(在不能依靠属性值跨站的基础上)

由于javascript和html之间的交互是通过事件来实现的,事件就是用户或者浏览器自身执行的某个动作,比如click,mouseover(当鼠标指针移动到图像上时执行一段 JavaScript),load等,而响应事件的函数也就叫做事件处理函数。

eg:

<input type="button" value="click me" onclick="alert("click me")"/>

这是一个html代码中的事件处理程序,运行代码,当点击click me之后会出发onclick事件,然后执行当中的javascript代码。

事件能说明用户何时做了某些事情或者页面何时加载完毕,事件有三个不同的类别:用户接口(鼠标,键盘),逻辑(处理的结果),变化(对文档进行修改)。既然事件能够让javascript运行,那么也就说明用户能够用它执行xss.

<img src="#" onerror=alert("但是")>           这里的onerror是img标记的一个事件,只要页面中发生错误,就触发该事件

<div style="background-color:red" onmouseenter="alert("安全")">xss</div>         onmouseenter当鼠标进入选区执行代码

-------=------------=----------------------------=-------------------------=----------------------------=------------------------------=------------------------------=-------------------------=----------------------=-

Shellcode的调用

shellcode(指利用一个漏洞时所执行的代码)

exploit(指完整编好的漏洞利用工具)

poc(一段证明漏洞存在的代码片段)

在传统xss运用之中,shellcode一般写进页面中直接执行,不过实际环境中会遇到很多阻挠,比如服务器端程序的过滤,输入字符有长度限制等。所以攻击者常常把shellcode写在远程服务器上,然后使用<script>标签对其进行调用。

1 0
原创粉丝点击