关于一些cms/系统的漏洞分析以及复现(甲) - ur_t_boss

admin 2021年12月31日14:56:28评论690 views字数 3328阅读11分5秒阅读模式

一、前言

为了更好地熟悉白盒审计以及漏洞挖掘方法,简单记录一下学习过程中复现的cms/系统通杀漏洞

二、finecms (v5.3.0)存在存储型xss漏洞

该漏洞是由于管理员后台记录错误日志时未做过滤所导致

在\finecms\system\core\Log.php文件的write_log方法中,fwrite()未对$msg的内容作过滤处理

接着追溯调用write_log方法的位置:\finecms\system\core\Common.php

再结合错误日志功能点且调用log_message方法这俩条件,筛选出最有可能被利用的文件位置:\finecms\system\core\Exceptions.php

最后追溯调用show_404方法的位置:\finecms\system\core\CodeIgniter.php

在此文件全文追踪$class、$method后,不难发现,它俩的作用是调用xx类中的xx方法,而当用户传入未在Router中设置的传参值并拼接后,传参值将通过 -- show_404() => log_message() => write_log(),进而写入错误日志中。若传参值存在js恶意代码,则当管理员查看错误日志时,自身的cookie就将暴露在攻击者眼前。

漏洞复现

首先构造恶意传参:

接着以管理员身份登录后台,查看错误日志

最后利用xss平台打到的cookie登录后台

三、dedecms (v5.7 SP1)存在csrf漏洞

首先在后台的“文件式管理器”这一功能点写个小马

接着在保存小马的同时,利用burp抓包并生成csrf poc

然后精简一下介个poc,比如定义validate函数,等待100ms自动点击生成的csrf poc

最后以管理员身份登录后台,再点击此poc生成的html页面,小马就成功写入后台了

四、scms (build20190722)存在xxe实体注入漏洞

该漏洞是由于未过滤用户提交的xml数据所导致

审计该cms后,不难得出,/weixin/index.php中存在危险函数 — simplexml_load_string(),它将$postArr转化为对象,而$postArr中的伪协议 — php://input(获取post数据)则可以被利用,若在post传参中加入xml恶意代码,则可以利用simplexml_load_string()成功执行

需要注意的是,触发上述程序的条件是signature不为空且echostr必须为空,否则会执行exit停止执行下面的程序

但最重要的还是$postArr传参的内容,鉴于该cms没有输出点,所以需要搭建xxe平台接收文件内容

看我三部曲

POC(这里读取文件采用了php伪协议 + base64的方式。另外,文件的路径可以是相对路径)

康康效果

最后再把这段内容用base64解码就OK了

注:要利用此漏洞去测试真实站点需要公网ip

五、douphp (v1.5 Release 20190711)存在代码执行漏洞

通过自建douphp这款cms的测试环境后,发现其config.php这一文件可能存在双引号二次解析的代码执行漏洞

但要利用该漏洞,必须删除install.lock,以达到解锁进而重新安装程序的目的

而后台的某一文件上传功能中,存在unlink()函数貌似可以被利用

通过die()函数得知其绝对路径为:C:/phpstudy/WWW/douphp/m/theme/default/images/logo.jpg。如果$mobile_logo可控,则可以通过../跳至父级目录的方法,指定install.lock并删除

追踪$mobile_logo

发现其由数据库中的值所决定,那么就可以借此来实现删除install.lock

再次思考该如何改值,发现一条update value的sql语句,其中value通过post传参即可修改其为任意值

漏洞复现

上传文件时,修改value

执行后台的unlink函数

跳转至安装界面

因为引号会被转义,这里采用更加隐蔽的写马方式--${file_put_contents($_REQUEST[6], $_REQUEST[66])}

写入一句话木马并成功访问

六、usualtoolCMS(8.0 Release)存在验证码绕过、任意文件写入漏洞

首先进入后台登录页面,绕过图片验证码

接着发现a_templetex.php文件存在危险函数file_put_contents

审计一下,不难发现,只要满足传参x=m,$filename和$content即可任人摆布

写入一句话木马并成功访问

七、phpmyadmin(4.8.1-all-languages)存在任意文件包含漏洞

通过查询危险函数include,锁定/index.php存在可控参数target

逐一判断if内的五个条件

意味着必须给target传参赋值

意味着target传参必须为字符串

意味着target不能以index开头(绕过方法 — a/../index)

意味着target传参值不能为黑名单内的值(绕过方法 — a/../import.php)

重头戏来了

追溯该方法

由于只传了一个target实参,那么$whitelist的值将是当前类中$goto_whitelist的值

接着搜索可利用的返回值为ture的代码块

着重观察$_page。首先将$page解码赋值给$_page,接着利用mb_substr以及mb_strpos提取$_page子字符串,以此检测传参内容是否满足白名单机制

综上,可以构造这样的传参值:sql.php%3F/../123.php,这不就既绕过了白名单机制,又避免了include中包含标点符号的尴尬了吗

漏洞复现

进入后台后,查询data目录

接着在任意数据库中新建包含一句话木马字段的表

开整

验证一句话木马是否生效

八、duomicms(X2.0)存在变量覆盖漏洞

通过代码审计可得duomicms的common.php文件中存在变量覆盖漏洞,这一段可以接收用户的get提交、post提交以及cookie参数,并将接收到的参数依次放至$_request,接着使用foreach遍历数组中的值,再将获取到的数组键名作为变量,数组中的值作为变量的值。如传参 — _SESSION[duomi_admin_id]=1会将原有的$_SESSION值覆盖,从而伪造管理员session

而获取正确的管理员session,有两种方法 — 1、读源码;2、在本地以管理员身份登录后台,从而获取管理员session

这里采用plan 2 — 在check.admin.php文件中强行获取管理员session

exp大致能构建出来了,只需找到session_start — session若开始使用,则必须写明以及调用common.php的文件即可,如comment.php

本地访问一哈

拿下

九、IBOS(4.5.5 PRO)存在命令执行漏洞

该漏洞由于/system/core/utils/Database.php中的危险函数shell_exec所导致

重点关注$dumpFile

再瞅瞅$backupFileName

康康如何利用$filename

而getRequest则隶属于YII框架,用于获取 $_GET 和 $_POST 的值

整条利用链梳理完毕后,仍需注意两点:1、dumpfile会被强制加后缀;2、$filename被禁用了‘.’

这时就需要其它知识储备了,比如恰好知道可以利用‘&’做到一条语句执行多道命令,又灵光乍现想到绕过拦截规则‘.’ -- %变量名:~x,y%:即对变量从第x个元素开始提取,总共取y个字符。(针对目标的环境变量,但各主机的环境变量大同小异(windows自带))

即可突破限制

漏洞复现

进入后台提交备份文件名

更改数据包(应对‘&’进行url编码,避免破坏原先数据包的传参个数)

验证一句话木马是否写入

十、信呼协同办公系统(v1.9.1)存在存储型xss漏洞以及cgi解析漏洞

先看存储型xss

在首页的待办/处理模块中,有追加说明这一功能可以为我所用

成功触发存储型xss

再康cgi解析漏洞

同样在追加说明这块,上传图片马

返回文件路径

cgi解析漏洞怼上去

待更新

BY:先知论坛

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年12月31日14:56:28
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   关于一些cms/系统的漏洞分析以及复现(甲) - ur_t_bosshttp://cn-sec.com/archives/710205.html

发表评论

匿名网友 填写信息