XSS原理

 xss前端代码注入 三种:html,css,js。

用户输入的数据被当作前端代码执行

1,什么是XSS?

XSS:HTML代码注入。

HTML代码注入:

用户的输入会被当做HTML等前端代码执行。

并不止是HTML代码,是前端的所有语言,如:JS、HTML、CSS。

两个关键条件:

1.用户能够控制输入。

2.原本程序要执行的代码,拼接了用户输入的数据。

2,XSS主要拼接的是什么?

SQL注入拼接的是操作数据库的SQL语句。

SQL注入用户的输入会被当做SQL语句执行。

XSS拼接的是网页HTML代码。

XSS主要就是调用js。

3,XSS判断是否存在方法:

业内一般把弹窗函数作为一个存在XSS的认定。

最经典的判断方法:<script>alert(1)</script>

一般证明XSS存在,就是在正常页面传参,然后构建函数让它弹窗,就是存在XSS了。

弹窗证明具有XSS,不弹窗也不能证明不具有XSS,只是一种判断方法。

为什么通过弹窗判断XSS?

因为XSS攻击如果需要达到真正的利用,需要调用JS。

4,XSS能够做什么?
盗取COOKIE(使用最频繁)[打哪偷那]

获取内网IP

获取浏览器保存的明文密码

截取网页屏幕

网页上键盘记录

5,如何打XSS:

首先:因为达到各种各样的效果需要比较 复杂的代码,所以XSS平台应运而生。

XSS平台大大方便了XSS攻击,只需要引入一个平台外部链接就可以实现功能了。

打XSS:

我们写入的代码,要当做JS执行

在进行sql注入时,我们使用了0x标示,告诉数据库这个是十六进制。

在进行XSS注入时,我们也需要使用标示,告诉浏览器这个是JS代码,而不是HTML之类的。

触发JS方法有三种:
1.标签:<script>alert(1)</script>

2.伪协议:<a href=javascript:alert(1)>test</a>

3.事件型:

事件也是可以执行JS的。

在HTML里面有一些标签它拥有事件

事件:当满足了条件就可以触发。

例如:

onerror=alert(1)在加载文档或图像时,发生错误。<img src='a' onerror=alert(1)/>

常用的有:onerror(失败加载执行)、onload(成功加载执行)、oninput(有输入框、输入的时候触发),onfocus获取焦点,onmouserover鼠标经过时

注意:

第一种方法用的最多,被拦截的可能性最大。

第二种方法触发的几率比较小,比较鸡肋,特殊的时候才能使用。

第三种方法常用的

6,XSS防御方法:

1.过滤尖括号,单引号、双引号。

2.实体化编码。

7,XSS类型:

反射型:XSS:提交的数据成功实现XSS,但是仅仅对本次访问有有效,非持久性攻击。

存储型:XSS:提交的数据成功实现XSS,存入数据库每次访问有效,持久性攻击。

DOM型:XSS:原本不存在XSS,经过JS处理之后产生了XSS。

反射型XSS经过js处理变成放射Dom型Xss。

存储型XSS经过js处理变成存储Dom型Xss。

8,XSS常见场景:

重灾区:评论区、留言区、个人信息、订单信息等。

针对型:站内信、网页即时通讯、私信、意见反馈

存在风险:搜索框、当前目录、图片属性等。

posted @ 2021-11-05 14:14  沉烟忆月  阅读(305)  评论(0)    收藏  举报