代码审计拿下多个0day【干货】

admin 2023年4月3日00:00:25评论107 views字数 29阅读0分5秒阅读模式

由于微信公众号推送机制改变了,快来星标不再迷路,谢谢大家!

代码审计拿下多个0day【干货】

免责声明

文中涉及漏洞均以提交至相关漏洞平台

前言

前面的时间一直都是在学习黑盒漏洞挖掘技巧,但是毕竟web安全的尽头是代码审计。能看得懂代码分析出漏洞才是王道。经过一段时间的学习,也是顺利的挖掘到两个开源CMS的0day漏洞,并且获得CNVD原创漏洞证书。下面就和大家分享一下,大佬勿喷。

第一弹 Joomla!命令执行漏洞

Joomla!是一套全球知名的内容管理系统。Joomla!是使用php语言加上,mysql数据库所开发的软件系统。

受影响版本:<=Joomla 4.2.2

代码审计拿下多个0day【干货】

代码审计拿下多个0day【干货】

代码审计拿下多个0day【干货】

代码审计拿下多个0day【干货】

从图片里可以看到,开发没有过滤命令执行函数,导致系统命令执行

源码地址:libraries/src/Editor/Editor.php

行数:78->101

代码审计拿下多个0day【干货】

Factory 静态引用这个类 getContainer、定位这个函数、选择第一个文件

代码审计拿下多个0day【干货】

代码审计拿下多个0day【干货】

这个函数的功能就是创建代码,然后可以看到它又在调用另一个用户自定义函数,再次定位。

代码审计拿下多个0day【干货】

来到这里可以看到这是创建一个容器对象,没有了。

可以看到开发并没有对用户提交的php代码进行安全过滤,导致攻击者可以通过这个漏洞获取服务器权限

简简单单也是收获了一个rce。

第二弹 帝国CMS存在任意文件包含漏洞

帝国CMS官网:http://www.phome.net/

受影响版本:帝国CMS7.5(帝国CMS8.0正在开发中,今年发布)

受影响的部分用户案例

代码审计拿下多个0day【干货】

受影响文件路径:/diguo/upload/e/admin/task.php

代码审计拿下多个0day【干货】

为了方便分析我在每行代码的下面都写了注释

代码审计拿下多个0day【干货】

首先判断ecms的值是否等于dotask,如果等于,则进入if循环语句

代码审计拿下多个0day【干货】

然后接收id的值

代码审计拿下多个0day【干货】

这里判断id的值,是否存在

代码审计拿下多个0day【干货】

执行sql语句

代码审计拿下多个0day【干货】

接收用户filename的值,然后拼接../tasks

代码审计拿下多个0day【干货】

这里进行逻辑判断,判断用户提交的id值是否存在以及要包含的文件是否存在,然后检查用户提交的文件名或者目录是否存在

代码审计拿下多个0day【干货】

判断lasttime是否有值

代码审计拿下多个0day【干货】

包含file的值,这里未对要包含的文件进行过滤,导致攻击者可以利用该漏洞获取服务器权限

开始构造POC,先访问下目标文件

代码审计拿下多个0day【干货】

可以看到这里是个任务日志,那么开始构造恶意请求

id的值来源于任务,首先准备好文件1.txt,内容为phpinfo

代码审计拿下多个0day【干货】

代码审计拿下多个0day【干货】

创建任务后,看下任务的id值,有了id,就开始构造请求

/diguo/upload/e/admin/task.php?ehash_oLQ87=“这个值来源于登录后,系统分给我的值”&ecms=dotask&id=2&filename=1.txt&file=1.txt

代码审计拿下多个0day【干货】

成功执行了phpinfo

又收获一个漏洞,最后也是成功水到两张cnvd证书

代码审计拿下多个0day【干货】

代码审计拿下多个0day【干货】

原文始发于微信公众号(渗透安全团队):代码审计拿下多个0day【干货】

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年4月3日00:00:25
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   代码审计拿下多个0day【干货】http://cn-sec.com/archives/1644572.html

发表评论

匿名网友 填写信息