存储型XSS

持久型/存储型XSS:嵌入到web页面的恶意HTML会被存储到应用服务器端,简而言之就是会被存储到数据库,等用户在打开页面时,会继续执行恶意代码,能够持续的攻击用户;
前面的文章讲到了XSS,但是不清楚弹窗有什么用,在此强调下,弹窗只是证明那个地方存在xss,就和SQL注入单引号报错或者and 1=1;and 1=2一样

xss =>跨站脚本攻击=>前端代码注入=>用户输入的数据会被当做前端代码执行。

存储型:用户输入的数据会被存入数据库,然后页面输出时会被当做前端代码执行。

如果用户输入的数据不被存入数据库可以做到存储性xss吗?
答案是可以的,存储型XSS的核心是存入到某个地方然后调用,不一定就要存在数据库里,还可以是文件里。
这里举个例子:

<?php
if (@$_GET ['a']) {
file_put_contents ( '8.txt',$_GET['a'] ); }
else{
echo file_get_contents ( '8.txt' );
}
?>

file_put_contents()函数把一个字符串写入文件中。
file_get_contents()函数就是读取文件。
这段PHP代码的意思就是把GET传参a写入8.txt这个文件,然后读取出来
所以我们输入的东西会被存储到里面,第二次访问的时候会被读取出来,这里就构成了一个完整的存储,所以说数据库不是刚需。

想个问题存储型XSS我们会在什么地方遇见呢?
第一反应是框,上次文章我有写道XSS见框就插
框=>采集数据=>传参
1、控制传参
2、外紧内松[外网管控严格、内网脆弱无比]
类比一下:用户输入的数据处理严格
系统获取的数据处理简单

这里我们以10分钟邮箱为例子来看看:
在这里插入图片描述
我们在搜索框里输入弹窗标签试试:
在这里插入图片描述
然后我们刷新,但是没有任何反应,所以这里我们用户访问的时候它对我们的数据处理很严格
那我们给这个临时邮箱发一份邮件里面写入事件触发,它会触发吗?这里是可以的,因为邮件接收过来是系统在处理所以数据处理会宽松很多,懒得登邮箱了就不演示了,这里给一个比较常用的一个事件触发.

<img src=# onerror=alert (1) />

这里的#号不是注释,是你要加载的东西的地址
让他加载一张图片,加载失败的时候弹窗

这里提一下 X-Forwarded-For :
即便他对用户输入的东西处理严格的话,也有可能对获取到的ip地址处理比较松,这样我们也能够通过XFF直接弹窗

前面说了攻击,那么该如何防御呢?
1.过滤(正则表达式过滤) => ‘ " <>
2.HTML实体编码 => htmlspecialchars
htmlspecialchars()函数的作用:
把预定义的字符"<” (小于)和">” (大于)转换为HTML 实体:
还以之前的那个代码做例子:

<?php
if (@$_GET ['a']) {
file_put_contents ( '8.txt',htmlspecialchars($_GET['a']) ); }
else{
echo file_get_contents ( '8.txt' );
}
?>

现在如果你在输入他就不弹窗了,因为他被html实体编码了,如下:
在这里插入图片描述
如果要绕编码的话:
1.找个不编码的地方=>某个传参点它编码的话,那就避免输入会编码的内容
2.编码又解码

那么接下来上靶场:

注意:因为XSS payload构建复杂,所以一般情况下我们都是使用XSS平台去获取cookie( https:llxs.sb/xss.php?do=login)建议隐私模式访问,鬼晓得平台有没有恶意代码,万一泄露了自己的cookie岂不得不偿失

在这里插入图片描述
在这里插入图片描述
对于这个CMS通杀漏洞,课上老师是通过一个错误日志存储型XSS来说明的,下面附上网址
https: //www.iianshu.com/p/200ea62486d9

通过对代码的审计得知它具体的功能就是
当访问页面不存在的方法或对象时,会调用show_404方法,且该方法没有过滤html敏感字符。
追溯show_404方法
错误的信息又会调用log_message方法,继续追溯
将错误的信息写进log日志文件中,再次追溯write_log方法
该方法会创建log日志的文件来记录错误信息,然后再后台调用该管理员。
也就是,错误的方法没有经过过滤被错误日志记录,管理员在后台点击查看错误的日志时,存储型XSS就会触发。

接下来我们在靶场尝试一下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
并且后台也能弹窗,那我们来找一个XSS平台对他来打XSS
在这里插入图片描述
随便找了一个平台注册
在这里插入图片描述
注册完之后创建项目
在这里插入图片描述
这两个勾上就行了
在这里插入图片描述
用这个就行
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
成功打出了cookie,但是没有打出flag,既然知道flag就在cookie里,那就继续打,页面刷新有点慢,等了很久,终于等到其它信息了
在这里插入图片描述
成功拿到flag,去提交看看
在这里插入图片描述
结束!
在这里插入图片描述
这里后台的账号密码没有,就没进去看错误日志

在这里插入图片描述
未完待续…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值