做网站还能赚钱吗,公司官网制作方案,网页鉴赏,关键不一定文章目录 1、XSS概述2、实战2.1 反射型XSS#xff08;get#xff09;2.2 反射型XSS#xff08;POST型#xff09;2.3 存储型XSS2.4 DOM型XSS2.5 DOM型XSS-X2.6 XSS之盲打2.7 XSS之过滤2.8 XSS之htmlspecialchars2.9 XSS之href输出2.10 XSS之JS输出 1、XSS概述 Cross-Site S… 文章目录 1、XSS概述2、实战2.1 反射型XSSget2.2 反射型XSSPOST型2.3 存储型XSS2.4 DOM型XSS2.5 DOM型XSS-X2.6 XSS之盲打2.7 XSS之过滤2.8 XSS之htmlspecialchars2.9 XSS之href输出2.10 XSS之JS输出 1、XSS概述 Cross-Site Scripting简称为“CSS”为避免与前端叠成样式表的缩写CSS冲突故又称XSS。一般XSS可以分为如下几种常见类型
反射性XSS;存储型XSS;DOM型XSS; XSS是一种发生在前端浏览器端的漏洞所以其危害的对象也是前端用户。形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理导致“精心构造”的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。 因此在XSS漏洞的防范上一般会采用对输入进行过滤和输出进行转义的方式进行处理:
输入过滤对输入进行过滤不允许可能导致XSS攻击的字符输入;输出转义根据输出点的位置对输出到前端的内容进行适当转义。
2、实战
2.1 反射型XSSget
1j既然已经提示这题属于反射型XSS直接上payloadscriptalert(XSS)/script; 发现payload被截断了。查看前端源码 输入框有长度限制那么我们直接Burp进行抓包修改数据包试试 payloadhttp://192.168.92.1:32769/vul/xss/xss_reflected_get.php?message%3c%73%63%72%69%70%74%3e%61%6c%65%72%74%28%22%58%53%53%22%29%3c%2f%73%63%72%69%70%74%3esubmitsubmit 2.2 反射型XSSPOST型
1首先使用用户名和密码进行登录 2这一题跟前一题差不多直接在输入框中上payloadscriptalert(document.cookie)/script 2.3 存储型XSS
1首先在留言板中输入一些特殊的字符串发现并没有过滤 2跟前面一样直接上payloadscriptalert(document.cookie)script 与反射型XSS不同的是存储型XSS会使每访问一次页面页面都会弹框。 2.4 DOM型XSS DOM型XSS和反射型XSS、存储型XSS的区别在于DOM型不用将恶意脚本传输到服务器在返回客户端而后两种恶意脚本都会经过服务器端然后返回给客户端。 对于浏览器来说DOM文档就是一份XML文档通过JavaScript就可以轻松的访问DOM文档。下面举例一个DOM将HTML代码转化成树状结构
htmlheadmeta charsetgbk /title TEST /title/headbodypThe is p.ph1Product:/h1ulliApple/liliPear/liliCorn/li/ul/body
/html转化成模型如下图 通过这种简单的树状结构就能把元素之间的关系简单明晰的表示出来方便客户端的JavaScript脚本通过DOM动态的检查和修改页面内容不依赖服务端的数据。 1在搜索框中随便输入12页面回显“what do you see”。 2查看页面源代码 大意点击“click me!”按钮会执行domxss()函数变量str的值为输入框中的内容然后将str的值与a href和‘what do you see?/a进行拼接。 我们只需要闭合a标签就可以使得payload执行。构造payloadimg src# onmouseoveralert(xss)。 注意不能再script标签下再嵌套script标签故换一个payload当鼠标移动到图片的的地方就会弹窗。 2.5 DOM型XSS-X
查看源码 关于window.location.search就是URL中?后面的字母具体如下 然后经过切分、替换将str的值与a href和‘就让往事都随风,都随风吧/a进行拼接。构造payloadimg src# onmouseoveralert(xss)。 需要点击有些费尽心机想要忘记的事情,后来真的就忘掉了之后在将鼠标移动到图片处才会弹框。 2.6 XSS之盲打 xss盲打是一种攻击场景我们输出的payload不会在前端进行输出当管理员查看我们的留言时就会遭到xss攻击。 输入常规的payload:scriptalert(/xss/)/script登录后台地址去看看/xssblind/admin_login.php。 2.7 XSS之过滤 绕过过滤的方法
前端限制绕过直接抓包重放或者修改html前端代码大小写比如SCRIPTaLeRT(111)/sCRIpt拼凑scriscriptptalert(111)/scri/script pt使用注释进行干扰scri!--test--ptalert(111)/sc !--test-- ript使用其他的标签绕过script标签如img src# onmouseoveralert(xss)
这里使用payloadimg src# onmouseoveralert(xss)
2.8 XSS之htmlspecialchars htmlspecialchars()函数是php常用方法是把预定义的字符转换为HTML实体。其语法htmlspecialchars(string,flags,character-set,double_encode) 常见的预定义的字符有:
(和号)成为amp(双引号)成为quot′(单引号)成为#039(小于)成为lt(大于)成为gt 输入 之后发现除了单引号没被转化外其他都被转化为HTML实体了。 故构造payload# onclickalert(/xss/)前一个引号闭合href属性第二个引号闭合onclick属性。
2.9 XSS之href输出 在输入框中输入scriptalert(xss)/script打开源代码发现均被HTML实体化了闭合标签和闭合属性的方法行不通了。 关于a 标签的href属性 a 标签的 href 属性用于指定超链接目标的 URL。href 属性的值可以是任何有效文档的相对或绝对 URL包括片段标识符和 JavaScript 代码段。如果用户选择了 a 标签中的内容那么浏览器会尝试检索并显示 href 属性指定的 URL 所表示的文档或者执行 JavaScript 表达式、方法和函数的列表。 总而言之在a标签的href属性里面可以使用javascript协议来执行js可以尝试使用伪协议绕过。构造payloadjavascript:alert(/xss/) 。 注意alert中字符串需要用、 or /包含数字不用。 2.10 XSS之JS输出 输入scriptalert(xss)/script发现不行打开源代码可以看到payload被带到script标签里去了。 构造payload;alert(1);//;闭合掉当前的语句然后插入新语句然后再用//注释掉老语句遗留下来的;。