0x00 环境准备
QYKCMS官网:http://www.qykcms.com/
网站源码版本:QYKCMS_v4.3.2(企业站主题)
程序源码下载:http://bbs.qingyunke.com/thread-13.htm
测试网站首页:
0x01 代码分析
1、漏洞文件位置:/admin_system/include/lib/down.php 第1-6行:
2、 <?php
3、 $downurl=arg('downurl','post','url');
4、 $filename=arg('filename','post','url');
5、 $file=downfile($downurl.$filename,'../'.$website['upfolder'].setup_uptemp,$filename);
6、 if(!$file)ajaxreturn(1,'下载升级文件失败,可能由于以下原因导致无法下载:<br>1、服务器繁忙,请稍候再重新尝试升级<br>2、PHP环境不支持远程 file_get_contents 函数');
7、 ajaxreturn(0,$website['upfolder'].setup_uptemp,$file);
这段代码中获取了两个参数downurl和filename,然后未经任何处理或过滤,带入downfile函数中执行,将远程的文件下载到本地/upload/10001/temp/目录下。
我们可以很容易地从第三方网站下载一个脚本木马,文件名也是我们可控的,导致程序在实现上存在代码执行漏洞,攻击者可以通过该漏洞执行脚本代码,获取服务器控制权限。
0x02 漏洞利用
1、在某个第三方网站上放一句话木马,作为源,供程序利用:
2、构造参数,从第三方网站下载脚本木马到网站目录中,成功下载脚本木马。
3、访问脚本木马路径,触发一句话木马
4、通过菜刀连接,成功控制网站服务器
0x03 修复建议
1、指定文件更新源,禁止任何形式的参数可控,可有效防御。
最后
欢迎关注个人微信公众号:Bypass--,每周原创一篇技术干货。