测试之前
这是一个在朋友指导之下才成功的实战,慢慢的弄清具体原理。 仅供学习,勿做他用!!
测试开始
首先是对目标站点进行了基本的测试然后发现了存在fckeditor,fckeditor的漏洞有很多,基本asp的都被通杀了,大家可以在网上看看。首先看看编辑器的版本:
代码语言:javascript复制$ http://xxxxxxx.com/fckeditor/editor/dialog/fck_about.html
查看版本信息:
可以看到是2.6.6的版本,那就对症下药。同时提一下,查看版本的url一般有以下两种:
代码语言:javascript复制$ http://xxxxxxx.com/fckeditor/editor/dialog/fck_about.html
代码语言:javascript复制$ http://xxxxxxx.com/FCKeditor/_whatsnew.html
我们这次是第一种。 然后看看对应版本的漏洞,在这个版本的FCKeditor 文件上传会将“.”变“_”下划线。我们就需要进行绕过。 很多时候上传的文件例如:shell.php.rar 或shell.asp.jpg 会变为shell_php.jpg 这是新版FCK 的变化。我们可以通过00截断进行绕过,具体方法我们实战中看。 这里最主要存在漏洞的地方是因为网站管理者没有将fckeditor的一个测试文件删除,测试界面存在的url一般为以下:
代码语言:javascript复制$ FCKeditor/editor/filemanager/browser/default/connectors/test.html
$ FCKeditor/editor/filemanager/upload/test.html
$ FCKeditor/editor/filemanager/connectors/test.html
$ FCKeditor/editor/filemanager/connectors/uploadtest.html
我们这次出现的test.html是在:
代码语言:javascript复制$ FCKeditor/editor/filemanager/connectors/test.html
可以看到这个界面是存在文件上传的:
然后我们通过抓包编辑突破这个上传(有狗!) 第一次尝试:
可以看到我们把后缀加上.jpg后上传就把第一个点改为了(直接上传aspx的会被狗拦截,我就不放截图勒)。我们看一下他这个变.为的规则到底是怎么样的呢?
可以看到这样也被狗拦截了,说明不是改变第一个.为_。直接看一看源码吧,主要是这个文件:FCKeditor/editor/filemanager/connectors/asp/commands.asp 具体可以看此篇文章http://back.waitalone.cn/post/Fckeditor2.6.8_ASP_ByPass.html 主要过程就是获取文件名(包含后缀),获取后缀(最后一个点后面的),然后对文件名(无后缀)进行处理,将特殊字符转换成下划线。
这是一个循环,这个循环将文件名和路径连接在一起即代码中的sFilePath,当sFilePath不存在的时候就进入else调用oUploader.SaveAs保存文件。 上传时的代码执行流程,在第一个流程中我们sFilePath变量是sServerDir和sFileName两个变量合成的,此时的sFileName是经过 SanitizeFileName()函数处理过后的变量,而当我们再次上传同名文件时,会进入if流程这个时候的sFileName将是用sExtension的后缀,此时的sFileName将在下次循环中和sServerDir一起合成sFilePath,因此第二次上传的后缀是没有经过处理的,然后直接带入oUploader.SaveAs中进行保存,接下来看下oUploader.SaveAs保存文件和oUploader.File( “NewFile” ).Ext后缀获取的代码流程。 大概看了一下源码的解释,我们继续进行测试,这次我们进行00截断,第一次:
这是我们第一次上传,可以看到上传的文件名 在最后一个点被确定了文件后缀然后其它的特殊符号被替换成了下滑线,第二次上传:
第二次应该检测到是同名文件,然后加了(1),接着就没有进行检测于是被00截断了。成功上传,这是一个大马,我们访问看看:
结语
就到这里吧,再次感谢朋友的指导。
来源:R_song's blog
http://www.raosong.cc/2019/04/15/11. Fckeditor漏洞Getshell/