一处代码执行引发的思考

栏目: 编程工具 · 发布时间: 7年前

内容简介:YCCMS是一款PHP版轻量级CMS建站系统,程序页面设计简洁,生成静态html,后台功能强大,利于优化、超强收录、超强排名,适合做关键词排名、淘宝客程序,是个人、企业建站的理想选择。最近偶然间在互联网上看到了一个关于YCCMS代码执行的漏洞,详情并没有公开,因为有前段时间Echsop代码执行的事件,让我对代码执行的成因很感兴趣,所以我就下载了代码看了看。因为这个cms比较小众影响并不会大,所以这里直接把漏洞详情就写出来了。如果想做实验请在网上自行下载YCCMS3.3也就是最新版。

*本文作者:sjy93812,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。

前言

YCCMS是一款 PHP 版轻量级CMS建站系统,程序页面设计简洁,生成静态html,后台功能强大,利于优化、超强收录、超强排名,适合做关键词排名、淘宝客程序,是个人、企业建站的理想选择。最近偶然间在互联网上看到了一个关于YCCMS代码执行的漏洞,详情并没有公开,因为有前段时间Echsop代码执行的事件,让我对代码执行的成因很感兴趣,所以我就下载了代码看了看。因为这个cms比较小众影响并不会大,所以这里直接把漏洞详情就写出来了。

漏洞解构

如果想做实验请在网上自行下载YCCMS3.3也就是最新版。

搭建好环境之后,访问一下首页看看它加载了哪些页面顺便看一下入口。

一处代码执行引发的思考

在这里可以看到你访问首页的时候,其实直接跳到了count.php文件中执行代码了,这里我们直接去看这个文件。

一处代码执行引发的思考

这个文件起到了一个中转站的作用,按照指引进入run.inc.php文件中。

一处代码执行引发的思考

这里使用了魔术方法,在运行文件的时候自动将项目中的类进行了加载,并且执行了圆圈中的类里的方法,进入这个文件中看一下。

一处代码执行引发的思考

这里首先调用了一个内部函数,看一下这个函数的作用。

一处代码执行引发的思考

这里再回到上一个函数中。

一处代码执行引发的思考

圈中的部分作用不是很大,唯一的作用就是将这个漏洞限制在了admin这里面,不然的话a这个参数将变成不可控的。

再接下来,就到了重点了,这里使用了file_exists这个函数判断一个文件存不存在,不存在的话就执行a=index的操作,接下来就直接将用户可控的变量传入了eval函数中。这里没有进行过滤,如果能绕过file_exists函数就能达到命令执行的效果了。看一下file_exists函数:

一处代码执行引发的思考

返回值是布尔值。这个函数允许传入的路径中含有特殊符号。具体来看一下。

一处代码执行引发的思考

这里在ceshi1目录下有一个文件:

一处代码执行引发的思考

访问测试路径,证明文件存在。

一处代码执行引发的思考

http://127.0.0.1/test.php?a=ceshi1/1;/../2449.html 这里加入特殊字符依然可以识别。

一处代码执行引发的思考

再加入一点符号:

一处代码执行引发的思考

一处代码执行引发的思考

这里证明这个函数会识别一个规则就是遇到类似/../这种结构时,会将第一个斜线前面的内容当作一个目录名来处理。

这里也就是说分号、斜线这种是可以在这个函数中逃逸出来的。

一处代码执行引发的思考

也就是说这里可以任意构造类似于xxx/../bbb这种结构的路径,这里bbb可以是圆圈中任意一个单词。

接下来就是进入了eval这个函数。

一处代码执行引发的思考

可以看到这个函数可以直接执行php代码,还一个隐藏属性就是可以执行多条语句只要以分号间隔开就可以了,那么这里就出现问题了。

本地测试:

一处代码执行引发的思考

一处代码执行引发的思考

一处代码执行引发的思考

回到这个cms中我们将a构造成这种形式factory();echo%201;//../。

一处代码执行引发的思考

那么就可以执行任意的语句了,这里解释一下:

一处代码执行引发的思考

Factory()这个是用来闭合前面的实例化对象用的,不闭合的话这里会直接报错,导致后面的语句无法执行。分号结束然后就是执行了我们自定义的代码,然后再以分号结束。然后就是返回上级目录为了满足文件存在的要求。

最终的执行效果:

一处代码执行引发的思考

*本文作者:sjy93812,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。


以上所述就是小编给大家介绍的《一处代码执行引发的思考》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

UX设计之道

UX设计之道

[美]Russ Unger、[美]Carolyn Chandler / 陈军亮 / 人民邮电出版社 / 2015-4-1 / 49.00元

本书的目标是提供一些基本的工具及应用场景,帮助你及工作团队一起来使用这些工具和方法。正如你将在本书很多章节中看到的那样,我们没有尝试包罗万象、迎和所有的人,但我们试图给你提供一些用户体验(UX)设计师需要具备的核心信息和知识。除了我们自己的案例外,我们还提供了一些帮你了解如何开始准备基本材料的案例,让你可综合这些信息来创建某些更新、更好或者是更适合自己意图的东西。一起来看看 《UX设计之道》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具