karsa

初期工作

介绍

YxtCMF在线学习系统是一个以thinkphp+bootstrap为框架进行开发的网络学习平台系统。

下载

百度搜索yxtcmf,有很多下载链接,这里就不贴过来了

搭建

将源码放在根目录下,访问有安装向导

(这里一开始用php5.4版本,后面注册用户的时候报错,换成7.0好了)

了解结构

├─admin                 后台目录
├─application           应用目录
├─data                  缓存目录
├─Expand                存放软件目录
├─plugins               存放插件目录
├─public                WEB目录(对外访问目录)
├─themes                前端文件存放目录
├─ueditor               ueditor编辑器目录
├─update                更新目录
├─uploads               上传文件目录
├─yxtedu                系统目录

这里特别说一下,我一般接触到前台用户和后台管理员都是分隔在不同表的,此处在同一表下。其实建在一张表中是没问题的,用户和权限分表设计,之后通过用户id进行表间的关联

漏洞

文件上传

前台注册用户后,可以上传头像,黑盒测试发现应该是会对后缀名进行禁用。

好家伙,发现是白名单,只让传这几个后缀,还是比较难利用的

目录遍历

通过seay发现多处直接使用readfile函数,经审计发现此处的$file可以利用

function downmoban(){
		$name=htmlspecialchars($_GET[\'name\']);
		$dir= dirname(dirname(dirname(dirname(__FILE__))));
		$file=$dir.\'/Uploads/\'.$name;  
		if(is_file($file)){
			$length = filesize($file);
			$showname =  ltrim(strrchr($file,\'/\'),\'/\');
			header("Content-Description: File Transfer");
			header(\'Content-Length:\' . $length);
			 if (preg_match(\'/MSIE/\', $_SERVER[\'HTTP_USER_AGENT\'])) {
				 header(\'Content-Disposition: attachment; filename="\' . rawurlencode($showname) . \'"\');
			 } else {
				 header(\'Content-Disposition: attachment; filename="\' . $showname . \'"\');
			 }
			 readfile($file);
			 exit;
		} else {
			 exit(\'文件已被删除!\');
		} 
      }

$file由$name拼接而成,而name变量直接由get传参,且未经过任何处理

可以进行任意文件读取

代码写入

网站信息|添加url规则 处可以添加路由,代码本身逻辑没有问题

但是由于插入的代码未作任何过滤直接插入到数据库中,导致任意代码写入漏洞,危害性较大

此处跟进了特别多的函数和方法,就不全程跟进了

先获取到表名

再插入到数据库中

可以看到数据库只在if中进行了数组,包含exp,不为空,过滤非标量数据的判断,一句话代码还是可以写入到路由中

成功连接

分类:

技术点:

相关文章:

  • 2021-07-14
  • 2022-02-19
  • 2021-05-19
  • 2021-10-19
  • 2021-10-24
  • 2021-04-28
  • 2019-11-10
  • 2021-09-21
猜你喜欢
  • 2021-12-12
  • 2021-10-25
  • 2022-01-12
  • 2021-11-01
  • 2022-02-08
  • 2021-12-02
  • 2022-12-23
相关资源
相似解决方案