<
某最新版cms审计漏洞披露
>
上一篇

python动态爬虫
下一篇

ESPCMS前台存储xss打管理员cookie及代码执行getshell

某最新版cms审计之前台到getshell历程

前言

本文审计出现的漏洞已提交CNVD,该CMS前后出现好几个漏洞,也有的至今仍未修复,果然,最新版仍然存在变量覆盖问题,本文由前台到getshell,前提也在于此。在审计过程中发现了多个问题,主要归结为文件操作、和变量覆盖所导致的getshell。变量覆盖前后也出现不止一处,若发现与之前有所雷同敬请忽略。本文主要对审计过程进行一个详述与学习。整个审计历程从一开始后台再到前台,getshell由组合利用前后台漏洞所至。

后台

1. 任意文件删除

漏洞出现在后台备份恢复功能删除zip处,对应的文件为***fo/app/system/databack/admin/index.class.php的821~836行从代码中可以看到$file可控且未进行过滤可进行任意目录遍历 1 漏洞复现 2 3

2.文件上传

文件上传漏洞也是也是出现在数据库备份恢复时,追踪对应文件上传功能点处,具体为upfilety.php文件的269行开始处,上传type为sql时执行,而默认type为sql,上传的后缀限制为sql和zip,若为压缩包zip程序进行解压判断压缩包里的文件是否为sql文件,而漏洞正是发生在此处位置代码312~328行处,当zip里面的文件非sql文件时并未终止上传,继续判断然后输出压缩包里的文件非sql文件,上传完成后,输出提示信息再exit退出。整个上传逻辑判断存在问题,因此可通过zip上传任意文件。(在审计此处时看到代码的320行处后缀(houzhui)开发竟然写为houzui了,普通话~) ![4](https://xzfile.aliyuncs.com/media/upload/picture/20190323010801-0cc2151a-4cc5-1.png "4") 压缩包校验 ![5](https://xzfile.aliyuncs.com/media/upload/picture/20190323010857-2df8b00e-4cc5-1.png) ![6](https://xzfile.aliyuncs.com/media/upload/picture/20190323020813-75cc1486-4ccd-1.png) ![7](https://xzfile.aliyuncs.com/media/upload/picture/20190323011317-c8bbdecc-4cc5-1.png "7") ![8](https://xzfile.aliyuncs.com/media/upload/picture/20190323021128-e9b2818c-4ccd-1.png) ![9](https://xzfile.aliyuncs.com/media/upload/picture/20190323012122-ea35896c-4cc6-1.png "9") ### 3.跨目录解压
此漏洞原理与1,2类似不在进行详述。主要看如下代码,$file可控且未过滤../ ![10](https://xzfile.aliyuncs.com/media/upload/picture/20190323012511-7281ff62-4cc7-1.png)
通过组合2和3即可将php后门上传至服务器完成getshell. ![11](https://xzfile.aliyuncs.com/media/upload/picture/20190323012713-bb22997a-4cc7-1.png) ![12](https://xzfile.aliyuncs.com/media/upload/picture/20190323012918-05fe7428-4cc8-1.png) ![13](https://xzfile.aliyuncs.com/media/upload/picture/20190323013152-61a06eee-4cc8-1.png) ### 4.变量覆盖 位置:admin/login/login_check.php,此处加载了 /admin/include/common.inc.php ![](https://xzfile.aliyuncs.com/media/upload/picture/20190323014840-ba58348e-4cca-1.png) 图14 /admin/include/common.inc.php ![](https://xzfile.aliyuncs.com/media/upload/picture/20190323015011-f06e2bd2-4cca-1.png) 此处变量可以实现变量覆盖。 因此可以覆盖$url_array变量,EXP为: `http://127.0.0.1/***info/admin/login/login_check.php?url_array[]=123&url_array[]=123&url_array[]=aa%22+autofocus+onfocus=alert(2)+a=%0a%0ba=&url_array[]=123` ![](https://xzfile.aliyuncs.com/media/upload/picture/20190323015100-0dff23d6-4ccb-1.png) 其中authcode 为其加解密算法。 管理员正常登录后,该值会被取出并解密 app/system/include/class/common.class.php ![](https://xzfile.aliyuncs.com/media/upload/picture/20190323015125-1ce16864-4ccb-1.png) 最终直接输出在 app/system/safe/admin/templates/index.php ![](https://xzfile.aliyuncs.com/media/upload/picture/20190323015156-2f728e72-4ccb-1.png) 最终,无需登录,访问上述链接可以在后台直接X。当管理登录后台时,切换到“安全与效率”界面,XSS可自动触发,通过此即可盗取管理员Cookie。 ![](https://xzfile.aliyuncs.com/media/upload/picture/20190323015718-ef464e96-4ccb-1.png) ### 5.利用 综上对以上过程作一个回顾,由最后的变量覆盖即可通过盗取后台管理员cookie获得后台权限,再利用文件操作存在的逻辑与过滤不严问题即可任意文件删除、上传甚至getshell。
Top
Foot