xss原理解析
xss->跨站脚本攻击
xss是指攻击者在网页中嵌入客户端脚本。通常是指javascript编写的一个危险代码,当用户使用浏览器浏览网页时,脚本就会在用户的浏览器上执行,从而达到攻击者的目的。
-->javascript越强,xss就越强
危害:
1.盗取用户账号
2.盗取用户cookie资料,冒充用户身份进入网站
3.劫持用户会话,执行任意操作
4.执行弹窗广告
5.传播蠕虫病毒
属于客户端攻击,受害者是用户与浏览器,但由于网站管理人员也是用户 之一,从而也可以进行服务端攻击
挖掘xss
寻找脚本程序的输出显示程序,搜索关键字,显示输出某个变量,跟踪变量是否被过滤
一些web安全中常见名词解释
exp 漏洞的完整利用工具
poc 漏洞的验证与检测
shellcode 利用漏洞时执行的代码
payload 攻击载荷 sqlmap中payload为攻击代码的模板 msf 与shellcode类似,功能是建立与目标的连接
验证xss是否存在poc常用:
<script>alert(/xss/)</script>
<script>confirm(/xss/)</script>
<script>prompt(/xss/)</script>
若提交的代码被当作字符串输出在html页面中,浏览器会根据[<script>]标签检测为js语句,并执行它,执行弹窗操作,
从而可执行其他js任意语句,可验证xss漏洞的存在。
反射型xss
非持久性,参数型的跨站脚本.
js代码在web应用的参数(变量)中,如搜索框的反射型xss.
存储型xss
持久性跨站脚本
体现在xss代码不是在某个参数中,而是写进数据库或文件中,可以永久的保持在数据的介质中
通常发现在留言板等地方.
DOM XSS
其中攻击的payload是由于修改受害者浏览器页面的DOM树而执行的
特殊的地方在于payload在浏览器本地修改dom树而执行,并不会传到服务器上
导致服务器端无法检测DOM XSS,导致DOM XSS比较难以发现,源代码中并无xss代码。
如
<script>
var a=document.URL;->变量a为现在的url地址
a=unescape(a);->对现在的url地址进行解码
document.write(a.substring(a.indexOf("message=")+8,a.length));->将message后的字符串截取然后打印出来
js中substring函数讲解
定义和用法
substr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符。
与substring()和slice()类似
语法
stringObject.substr(start,length)
参数 | 描述 |
---|---|
start | 必需。要抽取的子串的起始下标。必须是数值。如果是负数,那么该参数声明从字符串的尾部开始算起的位置。也就是说,-1 指字符串中最后一个字符,-2 指倒数第二个字符,以此类推。 |
length | 可选。子串中的字符数。必须是数值。如果省略了该参数,那么返回从 stringObject 的开始位置到结尾的字串。 |
返回值
一个新的字符串,包含从 stringObject 的 start(包括 start 所指的字符) 处开始的 length 个字符。如果没有指定 length,那么返回的字符串包含从 start 到 stringObject 的结尾的字符。
indexOf函数
定义和用法
indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。
语法
stringObject.indexOf(searchvalue,fromindex)
参数 | 描述 |
---|---|
searchvalue | 必需。规定需检索的字符串值。 |
fromindex | 可选的整数参数。规定在字符串中开始检索的位置。它的合法取值是 0 到 stringObject.length - 1。如省略该参数,则将从字符串的首字符开始检索。 |
说明
该方法将从头到尾地检索字符串 stringObject,看它是否含有子串 searchvalue。开始检索的位置在字符串的 fromindex 处或字符串的开头(没有指定 fromindex 时)。如果找到一个 searchvalue,则返回 searchvalue 的第一次出现的位置。stringObject 中的字符位置是从 0 开始的。