东莞网站制作智能 乐云践新,德州做名片的网站,衡水网站优化,利用博客做网站什么是跨站脚本攻击
跨站脚本( Cross-site Scripting ) 攻击#xff0c;攻击者通过网站注入点注入客户端可执行解析的payload(脚本代码)#xff0c;当用户访问网页时#xff0c;恶意payload自动加载并执行#xff0c;以达到攻击者目的(窃取cookie、恶意传播、钓鱼欺骗等)。…什么是跨站脚本攻击
跨站脚本( Cross-site Scripting ) 攻击攻击者通过网站注入点注入客户端可执行解析的payload(脚本代码)当用户访问网页时恶意payload自动加载并执行以达到攻击者目的(窃取cookie、恶意传播、钓鱼欺骗等)。为了避免与HTML语言中的CSS相混滑通常称它为“XSS”
危害
获取用户信息(如浏览器信息、ip地址、cookie信息等 ) 钓鱼(利用xss漏洞构造出一个登录框骗取用户账户密码提示登录过期模拟一个网站的登录框将用户名、密码发送到攻击者服务器 注入木马或广告链接有些在主站注入非法网站的链接对公司的声誉有一定的影响后台增删改网站数据等操作配合CSRF漏洞骗取用户点击利用s模拟浏览器发包 xss蠕虫 微博蠕虫只要看过某人的微博就是自动关注某人 贴吧蠕虫看过某个帖子就是自动回复这个帖子
漏洞类型及利用场景
1.反射性XSS 可用于钓鱼、引流、配合其他漏洞如CSRF等 2.存储型XSS 攻击范围广流量传播大。可配合其他漏洞 3.DOM型XSS 配合、长度大小不受限制。
反射性XSS
特点:仅执行一次非持久型;参数型跨站脚本 主要存在于攻击者将恶意脚本附加到ur的参数中发送给受害者服务端未经严格过滤处理 而输出在用户浏览器中导致浏览器执行代码数据。
反射性XSS利用场景
见框就插改url参数 我们测试一下DVWA的low等级 我们输入hello 他返回hello 我们测试h1 hello 是否会变成一级标签 可以成功 我们就可以利用script 的alert 警示框 也可以成功 array_key_exists判断这个数值里面有没有这个name的值和这个name值是否不为空 他会输出这个name的值 他没有进行这个进行过滤 过滤一般分替换大小写和替换特殊符 设置为Medium等级 我们通过看源代码发现他只是把script替换成空白 没有进行大小写区分 我们可以通过写SCRIPT全部大写来绕过
我们等级设置为high 当我们输入hello 正常运行 当我们输入h1 一级标签他变大了 当我们输入script 他直接变成了alert(1) 我们通过看源代码发现他做了一个script替换成空白 那我们第一种写在sciprt标签中不可用 第二种写在scr指定的文件也不可用 那我们可以用某个事件处理器img src1 οnerrοralert(1) 发现可以成功 说明我们的思路是对的 这个思路就是 我们让他去找一个为1的文件 这个事件有个是路径不存在他会报一个错叫onerror 我们可以写script的代码 我们设置为impossible 我们看源代码发现他使用了htmlspecialchars 这个函数的意思是吧预定义的字符 、 这些转换为HTML实体 防止浏览器将其作为HTML的元素
反射性XSS利用场景
首先没有对onclick进行过滤 %20是空格 我们分析到mann后面的“闭合前面的value 后面的”闭合后面的“ 使得onlick单独出来 在搜索框加/ 闭合前面标签 这个123是不存在的 他会执行onerror这个后面代码 eval是把后面的执行代码进行执行
存储型XSS
特点: 持久型 主要存在于攻击者将恶意脚本存储到服务器数据库中当用户访问包含恶意相关数据的页面 时服务端未经严格过滤处理而输出在用户浏览器中导致浏览器执行代码数据。
存储型XSS利用场景 我们设置low等级 可以看到没有做任何的过滤 我们输入正常的值、h1的值和script的值 我们设置为Medium srtip_tag(string,allow)函数去除字符串中HTML、XML以及PHP的标签 addslashes(string)返回在预定义字符(单引号、双引号、反斜杠、NULL)之前添加反斜杠的字符串 这个htmlspecialchars函数我之前说过了 他会把特殊字符变成实体 下面还有一个替换将script替换成空 这个str_replace是不区别大小写的 但是我们可以看到又两个输入框一个是name一个是Message 我们对name的长度进行修改然后把script写进去 设置为high srtip_tag(string,allow)函数去除字符串中HTML、XML以及PHP的标签 htmlspecialchars函数把特殊字符变成实体 preg_replace替换空白不区分大小写 那我们第一种写在sciprt标签中不可用 第二种写在scr指定的文件也不可用 那我们可以用某个事件处理器img src1 οnerrοralert(1) 发现可以成功 说明我们的思路是对的 这个思路就是 我们让他去找一个为1的文件 这个事件有个是路径不存在他会报一个错叫onerror 我们可以写script的代码 我们看看impossible 查看源代码发现使用内置的PHP函数来转义任何改变输入行为的值并且使用token验证来防止CSRF攻击。 最下面的date-的部分是对SQL注入的防范采用了预编译语句。这个到SQL注入通关的时候再分析。
DOM型XSS
特点:通过JavaScript操作document实现dom树的重构 主要存在于用户能修改页面的dom造成客户端payload在浏览器中执行 ducument.URL获取该网页地址
DOM型XSS利用场景
我们看到源代码是没有任何防护的 我们可以查看html的源代码 我们看到这个值是default我们直接script即可 查看Medium stripos(string,find,start) 函数查找字符串在另一字符串中第一次出现的位置不区分大小写。 header() 函数向客户端发送原始的 HTTP 报头。 当匹配到script 字符串的时候就会将URL后面的参数修正为 ?defaultEnglish 我们看到网页前面有option和select我们给他结束掉 然后写我们的img src 我们设置high 通过看源代码我们可以知道用了switch这个选择结构如果不等于这几个的时候则是默认english 可以加入注释符 “#”注释后边的内容不会发送到服务端但是会被前端代码所执行。 impossible 我们看到源代码没有任何防护 我们查看html的源代码 并没有对我们输入的内容进行URL解码所以我们输入的任何内容都是经过URL编码然后直接赋值。因此不存在XSS漏洞。