【第八周作业】XSS3

本文深入探讨了XSS攻击的各种形式,包括盲打实验、绕过技巧、存储型XSS的危害,以及如何利用大小写、拼凑、注释和编码等方法绕过后台过滤。同时,详细介绍了XSS防范措施,如htmlspecialchars函数的正确使用,以及针对不同输出点的处理策略。

xss的盲打以及盲打实验演示

在这里插入图片描述
提交的信息被提交到后台
在这里插入图片描述
在这里插入图片描述
写个payload试试

管理员登陆后台之后,后台会把我们输入的内容给输出的话就意味着存在xss漏洞
在这里插入图片描述
模拟后台管理员登陆一下看看

在这里插入图片描述
管理页面执行了前端输入的内容
在这里插入图片描述
本质还是xss存储型,在前端输入,被后台存下后在后台页面输出了
危害比较大,可以获取到后台管理员的cookie,伪造管理员登陆后台进行操作。

xss绕过思路讲解和案例演示

转换思路
在这里插入图片描述

所有的安全措施都尽量不要在前端去做,比如pikachu平台前端输入限制20个字符,是用前段属性去做的,很容易就被绕过
大小写:
在后台需要对输入进行过滤的话,很多时候会有两种思路,
第一种是 对你输入的内容进行正则匹配,发现有符合正则表达式的内容会帮你把他干掉!
第二种是 会对你输入的一整串内容 用一些查找的函数去查找,如果有也会把他干掉!正则是区分大小写的,如果他的过滤措施里面只对小写做了处理,没有对大写进行处理的话,我们就可以通过大写的或者是大小写混合的这种输入来绕过。因为大小写混合的输入输出到前端时仍然会被正常的执行。

拼凑:
后台的逻辑如果是对script标签进行替换,但是一般的替换逻辑只会替换一次,把中间的script 去掉,然后前后又组合成了一个新的script,不会重复的做处理,导致这种写法可以绕过后台的替换措施。
在这里插入图片描述

使用注释进行干扰:
前端可以插入注释标签,可以通过前端的注释符号在我们输入的payload里面进行干扰, <scr<!–test-- >pt> 里面的<! --test-- > 注释部分前端不会去执行,但是输入到后台时,后台可能不认识这段注释内容,所以并不会认为这是一个script标签,从而绕过后台。
在这里插入图片描述

编码
在这里插入图片描述
不是说把标签处理成后台不认识的就成功了,输出时在输出点一定要能被正常的翻译,编码才是有效的。

我们需要对前端的各种标签属性里面能够处理哪些编码或者说我们可以通过哪些手段来让他正常的翻译我们自己的编码。
eg:
在这里插入图片描述

html编码 当他输出到前端,浏览器会对实体编码去进行翻译
在这里插入图片描述
实验演示
随便输入点试试

在这里插入图片描述
在这里插入图片描述
看下源码,发现刚刚输入的 script标签没有显示,意味着后台对我们输入的script标签进行了过滤 呢?
在这里插入图片描述
尝试做一下绕过
用大小写混合试一下
在这里插入图片描述
emmmm 被拦截了 也就是
后端对小写的script进行了过滤

在这里插入图片描述

看下视频里的
在这里插入图片描述
看下后台代码
接受提交过来的参数,message ,把message用preg_replace方法 对后面的字符串去匹配前面的正则,如果匹配到了,就会替换为指定的字符,在这里指定为空 。正则区分大小写,所以这里只对小写的script前面这一段进行了过滤,通过大写就可以绕过他。
在这里插入图片描述

这里只过滤了script标签,用img标签试一下

在这里插入图片描述
xss之htmlspecialchars绕过演示

当我们的数据在输出的时候,我们要去做前端的实体转义
htmlspecialchars()函数:对特殊字符进行转义的函数
如果把前端的输入直接用他进行处理但是没有加任何的类型的话,默认类型,默认情况下不会对 ‘ 进行处理,因为单引号不是html前端的实体编码规范的编码。这种情况下,当你的输出点比较特殊的话,虽然用了这个函数做处理,仍然有可能出现xss漏洞。
建议用quotes这个类型,即指定方法让他对单引号和双引号都进行对应的处理。
在这里插入图片描述
试一下
1111’"<>&
看后端是怎么处理的
在这里插入图片描述
看一下源码, "<> & 都被进行了编码, ’ 没有做处理
在这里插入图片描述
构造payload测试一下
q’οnclick=‘alert(1111)’

前面的 ’ 是为了把前面的 ’ 闭合掉
onclick一下 就弹出1111
在这里插入图片描述
看下代码
通过htmlspecialchars作处理,处理完之后在a标签里面输出,但是htmlspecialchars用的是默认的方法,并没有指定对 ’ " 都作处理。
在这里插入图片描述

xss防范措施及href和js输出点的案例演示

在这里插入图片描述
案例演示

看下源码
先接收前端输入的message,如果输入的是百度,提示“原来你是这样的一个人” 如果输入的不是百度,他会把你输入的内容用htmlspecialchars去进行处理,用的QUOTES,说明 ’ " <> & 都会被处理,然后把他输出到a标签里面,

在这里插入图片描述
试一下
javascript:alert(111)
在这里插入图片描述
在这里插入图片描述
输出到了a标签里面
在这里插入图片描述

点一下
在这里插入图片描述
我们输入的alert 就被执行了
在这里插入图片描述
在a标签的href里面如果有输出的话,我们应该如何做对应的防范措施?
两个逻辑
第一:href一般是用来写超链接的,所以我们可以在输入的时候只允许是http或者是https开头的,才允许从这个地方输出,否则不允许输入。
其次再进行htmlspecialchars处理,把特殊字符处理掉。

看一下js输出

随便输入一下试试
在这里插入图片描述
在这里插入图片描述

把我们的输入放到了js里面,然后对变量进行判断,做对应的输出。

在这里插入图片描述

输入tmac试一下

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

看一下该如何构造一个闭合
11111 是我们的输入
先输入一个 x’ 把前面的 ’ 闭合掉
再输入一个 把前面的

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

输入试试
XSS被执行了
在这里插入图片描述

在这里插入图片描述
看下代码
前端做接收,接收到变量之后就直接通过php在javascript里面输出

在这里插入图片描述

看下备注
输出点是在javascript里面,通过用户输入动态的生成了jsp的代码。
jsp代码不会对实体编码进行解释,如果想用htmlspecialchars对我们的输入做实体编码处理,那输入变成实体编码之后在js里面并不会把他解释回去,输出
的时候不会后构成合法的js。
所以在js里面的输出要用 / 对特殊字符进行转义。
在这里插入图片描述
XSS的防范,不同输出点需可能要用不同的方法。

csrf漏洞概述及原理
csrf也称为一次性点击攻击。
在这里插入图片描述
在目标用户的电脑上以目标用户的身份提交的请求。

eg:
在这里插入图片描述

以get url方式传参 将新地址提交给了后台

在这里插入图片描述
伪造一个修改地址的请求,这个地址包含了一个新的地址,这个地址是小黑的地址,把这个链接发送给lucy,lucy点击url ,相当于以lucy自己的身份去提交这个请求,这个请求就是把lucy自己的地址改成了小黑的地址。

在这里插入图片描述

CSRF和XSS区别
CSRF:攻击者并没有拿到用户的权限,是借助用户的权限来完成攻击,
XSS:获取cookie 拿到权限
在这里插入图片描述
如何确认一个web系统存在CSRF漏洞
1.
旧的密码和otb攻击者是拿不到的没办法伪造的
看数据包里有没有CSRF的token,CSRF的token是一个常用的防止CSRF的措施,因为token是随机的字符串,每次请求的token都会发生变化,所以带上token的验证比较难伪造

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值