原标题:代码审计之配置文件写入导致Getshell实例分析
*本文原创作者:davichi8282,本文属FreeBuf原创奖励计划,未经许可禁止转载
0×00概述
近期审计HadSky5.5.2.20180525最新版的时候发现配置文件写入导致的代码执行问题,刚开始审计的时候发现这套cms功能点真的很少,而且使用框架过滤的方式,传统注入xss问题很难发现,还有以往在审计cms安装时候是否存在配置文件任意写入问题的时候我是直接全局搜索是否存在install.lock这个文件的,假如存在就直接跳过这个问题,install.lock这个文件是安装锁文件,当安装成功的时候就“锁定”以免重装,配置文件写入等问题的发生。但是由于这套cms功能点实在不多,重新仔细看了下安装的时候是否存在安全问题,结果发现存在配置文件写入导致的代码执行问题。
0×01 白盒审计
源码信息: HadSky5.5.2.20180525
问题文件: \upload\install\php\install.php
漏洞类型:配置文件写入导致getshell
站点地址:https://www.hadsky.com/
cms安装过程一般会分为几个步骤来完成,具体代码段为\upload\install\index.php
可以看到总共五个步骤来进行安装,每一步程序将会引用一些文件进行操作,但是由于install.lock文件的存在我们并不能写入恶意代码到配置文件里,所以刚开始我也直接过了这部分,但是仔细一看红圈部分,程序是在case等于4的时候也就是第四步的时候锁定程序的,具体代码段为/php/complete.php
也就是当通过GET方式获取的chkcode参数值为”HadSkyInstallComplete”的时候锁定程序的,也就是和之前写入配置文件的过程是分开的,两个数据包,也就是会导致配置文件恶意写入问题。
具体写入的代码段为/php/install.php
0×02 漏洞利用
首先进行安装到第三步,截图如下;
这里的数据库地址,用户,密码等都是通过用户输入的,我们先输入正确的账号密码信息之后点击下一步并且抓包,截图如下;
可以看到显示成功安装,但是这里的成功安装是步骤三的成功安装,还不是完全成功安装,此时还没生成安装锁文件,这里就是我们可利用的点,下一个数据包第四步才会锁定程序,具体截图为;
这里才会生成安装锁文件并且锁定程序,第三步的数据包我们可以写入恶意代码;
我们以mysql_prefix这个前缀参数进行利用,由于代码段我们看到是使用单引号括起来的,所以需要先闭合之后使用注释符”//”注释掉后面的分号,具体payload为
mysql_prefix=';phpinfo();//
这时候我们访问这个配置文件,路径为;
http://127.0.0.1/HadSky5.5.2.20180525/upload/puyuetian/mysql/config.php
程序未对配置文件访问进行限制,可直接访问;
成功getshell了。
还有一种方法是把我们的payload带入进行完整的安装,可使用其他POST字段,这里使用mysql_charset字段,安装成功之后访问首页如下;
0×03 总结
其实这个漏洞是由于安装的时候未在合适的位置进行锁定文件导致的,可以把第四步锁定文件写入到第三步里面,也就是写入配置文件的同时锁定程序,还有写入配置文件之前需要进行数据库连接测试就不会出现此问题了。
*本文原创作者:davichi8282,本文属FreeBuf原创奖励计划,未经许可禁止转载返回搜狐,查看更多
责任编辑: