XSS

漏洞原理学习·网安·生命在于学习 · 2021-11-21 · 81 人浏览
XSS

一、漏洞介绍

xss攻击全称跨站脚本攻击,是为了不和层叠样式表(CSS)混淆,所以缩写成XSS,XSS是一种在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到web网站里面,供给其他用户访问,当用户访问到有恶意代码的网页就会产生xss攻击。

二、漏洞危害

  1. 盗取各类用户账号,如机器登录账号、用户网银账号、各类管理员账号
  2. 控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力
  3. 盗窃企业重要的具有商业价值的资料
  4. 非法转账
  5. 强制发送电子邮件
  6. 网站挂马
  7. 控制受害者机器向其他网站发起攻击

三、漏洞防御

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-Polyg
lot
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、远程加载payload

在这里插入图片描述
在这里插入图片描述

7、有过滤的情况下

(1)过滤空格

在这里插入图片描述

(2)过滤关键字

在这里插入图片描述

(3)双写关键字

在这里插入图片描述

(4)字符拼接

在这里插入图片描述

(5)其他字符混淆

在这里插入图片描述

(6)编码绕过

Unicode编码绕过
在这里插入图片描述
url编码绕过
在这里插入图片描述
Ascii码绕过

<img src="x"
onerror="eval(String.fromCharCode(97,108,101,114,116,40,34,120,115,115,34,4

1,59))">
hex绕过
在这里插入图片描述
八进制
在这里插入图片描述
base64绕过
在这里插入图片描述

(7)过滤双引号,单引号

在这里插入图片描述

(8)过滤括号

在这里插入图片描述

(9)过滤url地址

在这里插入图片描述

(10)使用IP

在这里插入图片描述
在这里插入图片描述

六、XSS平台利用

在初步探测到xss漏洞时,此时我们可以使用xss在线平台,去获取一些我们需要的信息,比如位置、键盘记录、IP、表单挟持。
不建议自己搭建。
使用公网的(自行搜索)。

七、漏洞修复

在这里插入图片描述

xss
Theme Jasmine by Kent Liao 京ICP备2023023335号-2京公网安备11010802044340号