赛博保安日志 - xss
type: channel
link: https://blog.anheng.tech/index.php/tag/xss/
items: XSS

XSS
type: item
date: 2021-11-21T10:45:00+08:00
description: 一、漏洞介绍xss攻击全称跨站脚本攻击，是为了不和层叠样式表(CSS)混淆，所以缩写成XSS，XSS是一种在web应用中的计算机安全漏洞，它允许恶意web用户将代码植入到web网站里面，供给其他用户访问，当用户访问到有恶意代码的网页就会产生xss攻击。二、漏洞危害盗取各类用户账号，如机器登录账号、用户网银账号、各类管理员账号控制企业数据，包括读取、篡改、添加、删除企业敏感数据的能力盗窃企业重要的具有商业价值的资料非法转账强制发送电子邮件网站挂马控制受害者机器向其他网站发起攻击三、漏洞防御xss防御的总体思路是：对于输入（和URL参数）进行过滤，对输出进行编码，也就是对提交的所有内容进行过滤，对url中的参数进行过滤，过滤掉会导致脚本执行的相关内容，然后对动态输出到页面的内容进行html编码，使脚本无法在浏览器中执行。四、漏洞类型1、反射型反射型的XSS，非持久化，需要欺骗用户自己去点击链接才能触发XSS代码，反射型XSS攻击的方法，攻击者通过发送邮件或诱导等方法，将包含xss恶意链接发送给目标用户，当目标用户访问该链接时，服务器将接收该用户的请求并进行处理，然后服务器把带有xss恶意脚本发送给目标用户的浏览器，浏览器解析这段带有xss代码的恶意脚本后，就会触发xss攻击。==代码分析==在反射型xss代码中，首先判断$_GET['mssage'] 是否等于 kobe，如果不是则在页面中将 $_GET['mssage'] 复制给$html 变量中,⽽且没有任何过滤再输出到⻚⾯中，所以直接输⼊⻚⾯会直接输出 xss 信息，就会造成 xss 攻击。2、存储型存储型XSS，持久化，代码是存储在服务器中的数据库里，如在个人信息或发表文章等地方，可以插入代码，如果插入的数据没有过滤或过滤不严，那么这些恶意代码没有经过过滤将储存到数据库中，用户访问该页面的时候，没有进行编码过滤输出到浏览器上，就会触发代码执行，造成xss攻击。==代码分析==在存储型xss代码分析中，看到留言的inster into语句中，直接插入留言信息，没有任何过滤，输入恶意代码，这个代码将记录在数据中。3、DOM型DOM，全称 Document Object Model，是⼀个平台和语⾔都中⽴的接⼝，可以使程序和脚本能够动态访问和更新⽂档的内容、结构以及样式。 DOM 型 XSS 其实是⼀种特殊类型的反射型 XSS，它是基于 DOM ⽂档对象模型的⼀种漏洞。 在⽹站⻚⾯中有许多⻚⾯的元素，当⻚⾯到达浏览器时浏览器会为⻚⾯创建⼀个顶级的 Document object ⽂档对象，接着⽣成各个⼦⽂档对象，每个⻚⾯元素对应⼀个⽂档对象，每个⽂档对象包含属性、⽅法和事件。可以通过JS 脚本对⽂档对象进⾏编辑从⽽修改⻚⾯的元素。也就是说，客户端的脚本程序可以通过DOM 来动态修改⻚⾯内容，从客户端获取 DOM 中的数据并在本地执⾏。基于这个特性，就可以利⽤ JS 脚本来实现 XSS 漏洞的利⽤；==代码分析==DOM型xss程序中，只有html代码，dom通过操作HTML或者css实现HTML属性、方法、事件，因此程序中没有与服务器进行交互。点击按钮时，会调用domxss（）函数，跟踪domxss函数：五、payload在网站是否存在xss漏洞时，应该输入一些标签<>输入后查看网页源代码是否过滤标签，如果没过滤，很大可能存在xss漏洞。1、常用的测试语句2、一些常见标签下面的标签大部分都是可以自动触发js代码的，无需用户去交互，大部分情况下我们也是希望自动触发而不是等用户去触发。3、javascriot伪协议4、payload备忘录：https://netsec.expert/posts/xss-in-2021/ https://github.com/0xsobky/HackVault/wiki/Unleashing-an-Ultimate-XSS-Polyglot https://d3adend.org/xss/ghettoBypass https://www.jb51.net/tools/xss.htm https://www.yuque.com/docs/share/c16d3bb5-929c-4239-bab9-35e2a93d7fd9?5、不同位置的XSS利用方式6、远程加载payload7、有过滤的情况下（1）过滤空格（2）过滤关键字（3）双写关键字（4）字符拼接（5）其他字符混淆（6）编码绕过Unicode编码绕过url编码绕过Ascii码绕过 hex绕过八进制base64绕过（7）过滤双引号，单引号（8）过滤括号（9）过滤url地址（10）使用IP六、XSS平台利用在初步探测到xss漏洞时，此时我们可以使用xss在线平台，去获取一些我们需要的信息，比如位置、键盘…