代码审计拿下多个0day【干货】
2023-3-31 22:10:15 Author: 渗透安全团队(查看原文) 阅读量:155 收藏

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

免责声明

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

前言

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

第一弹 Joomla!命令执行漏洞

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

受影响版本:<=Joomla 4.2.2




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

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

行数:78->101

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

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

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

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

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

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

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

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

受影响的部分用户案例

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


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

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

然后接收id的值

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

执行sql语句

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

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

判断lasttime是否有值

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

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

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

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

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

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

成功执行了phpinfo

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


付费圈子

欢 迎 加 入 星 球 !

代码审计+免杀+渗透学习资源+各种资料文档+各种工具+付费会员

进成员内部群

星球的最近主题和星球内部工具一些展示

加入安全交流群

                               

关 注 有 礼

关注下方公众号回复“666”可以领取一套领取黑客成长秘籍

 还在等什么?赶紧点击下方名片关注学习吧!


干货|史上最全一句话木马

干货 | CS绕过vultr特征检测修改算法

实战 | 用中国人写的红队服务器搞一次内网穿透练习

实战 | 渗透某培训平台经历

实战 | 一次曲折的钓鱼溯源反制

免责声明
由于传播、利用本公众号渗透安全团队所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号渗透安全团队及作者不为承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!
好文分享收藏赞一下最美点在看哦

文章来源: http://mp.weixin.qq.com/s?__biz=MzkxNDAyNTY2NA==&mid=2247502171&idx=2&sn=844b62fd29c4a2d79d14db0ae38b032b&chksm=c17634f4f601bde2b101eb1d13b40d2b509d3b41fab0e556e7618f8766cc6fbe0080d79c4c2b#rd
如有侵权请联系:admin#unsafe.sh