《红蓝攻防对抗实战》十三.内网穿透之利用HTTP协议进行隧道穿透

news2024/11/25 0:40:43

内网穿透之利用HTTP协议进行隧道穿透

  • 一.前言
  • 二.前文推荐
  • 三.利用HTTP协议进行隧道穿透
    • 1. Reduh进行端口转发
    • 2. ReGeorg进行隧道穿透
    • 3. Neo-reGeorg加密隧道穿透
    • 4. Tunna进行隧道穿透
    • 5 .Abptts加密隧道穿透
    • 6. Pivotnacci加密隧道穿透
  • 四.本篇总结

一.前言

本文介绍了利用HTTP协议进行隧道穿透的方法。WEB tunnel即WEB隧道,可以进行局域网穿透控制,通过web tunnel可以桥接到局域网内的所有网络设备,让远程访问此设备就像在局域网内访问此设备一样。Web隧道允许用户通过HTTP连接发送非HTTP流量,这样就可以在HTTP上携带其他协议数据。Web tunnel适用于当目标开启防火墙时,此时入站和出站连接都受到限制,除了WEB服务的端口(80或443)。Webshell可以用于连接目标主机上的服务,这是目标主机上的本地端口连接,一般都会允许从服务端口读取数据,并将其封装到HTTP上,作为HTTP响应发送到本地代理,整个外部通讯都是通过HTTP协议完成的。

二.前文推荐

《红蓝攻防对抗实战》一. 隧道穿透技术详解
《红蓝攻防对抗实战》二.内网探测协议出网之TCP/UDP协议探测出网
《红蓝攻防对抗实战》三.内网探测协议出网之HTTP/HTTPS协议探测出网
《红蓝攻防对抗实战》四.内网探测协议出网之ICMP协议探测出网
《红蓝攻防对抗实战》五.内网探测协议出网之DNS协议探测出网
《红蓝攻防对抗实战》六.常规反弹之利用NC在windows系统执行反弹shell
《红蓝攻防对抗实战》七.常规反弹之利用NC在Linux系统执行反弹shell
《红蓝攻防对抗实战》八.利用OpenSSL对反弹shell流量进行加密
《红蓝攻防对抗实战》九.内网穿透之利用GRE协议进行隧道穿透
《红蓝攻防对抗实战》十.内网穿透之利用DNS协议进行隧道穿透
《红蓝攻防对抗实战》十一.内网穿透之利用SSH协议进行隧道穿透
《红蓝攻防对抗实战》十二.内网穿透之利用ICMP协议进行隧道穿透
《红蓝攻防对抗实战》十三.内网穿透之利用HTTP协议进行隧道穿透
————————————————————————————————————————————

三.利用HTTP协议进行隧道穿透

WEB tunnel即WEB隧道,可以进行局域网穿透控制,通过web tunnel可以桥接到局域网内的所有网络设备,让远程访问此设备就像在局域网内访问此设备一样。Web隧道允许用户通过HTTP连接发送非HTTP流量,这样就可以在HTTP上携带其他协议数据。Web tunnel适用于当目标开启防火墙时,此时入站和出站连接都受到限制,除了WEB服务的端口(80或443)。Webshell可以用于连接目标主机上的服务,这是目标主机上的本地端口连接,一般都会允许从服务端口读取数据,并将其封装到HTTP上,作为HTTP响应发送到本地代理,整个外部通讯都是通过HTTP协议完成的。
假设在内网渗透中发现主机,经测试发现存在网站,可以通过此站点的HTTP协议去搭建隧道,通过漏洞获取到webshell权限,当拥有webshell权限时就可以利用HTTP协议的webshell tunnel进行搭建,下面用一些案例来演示如何搭建web tunnel,具体实验环境如表1-1所示,实验拓扑如图1-1所示。

图1-1 HTTP协议实验拓扑图

表1-1 HTTP协议实验环境表
主机类型IP配置
攻击机192.168.0.58
Web服务器192.168.0.25,192.168.52.11
靶机192.168.52.12

1. Reduh进行端口转发


Reduh是一款基于WEB服务的端口转发工具,它支持asp、jsp、php脚本环境,由客户端进行连接,客户端需要配置JDK环境,使用前需要获取到目标服务器webshell权限,才可以上传reDuh服务端对应脚本文件,reDuh文件再将内网服务器的端口通过HTTP/HTTPS服务转发到本地,形成一个连通回路。
1)通过上传reDuh.php文件搭建WEB隧道,将靶机的RDP远程连接服务通过reDuh.php文件转发到攻击机。首先检测到目标主机是PHP环境,通过文件上传漏洞获取到webshell权限,之后上传reDuh.php文件到网站根目录下,此时在攻击机访问网站[http://192.168.0.25/reDuh.php](http://192.168.0.25/reDuh.php)显示如图1-2所示结果,即表示文件部署成功。


图1-2 测试访问


2)接下来,我们使用攻击机进入工具目录reDuhClient/dis文件夹下,执行java -jar reDuhClient.jar http://192.168.0.25/reDuh.php命令,对Web服务器进行连接,这里搭建隧道时,默认会使用1010端口。注意,如果隧道连接未成功,有可能是服务端php环境配置问题,我们对Web服务器的PHP扩展设置,对其php.ini文件中的extension=php_sockets.dll代码去掉注释即可,命令执行成功,如图1-3所示。


图1-3 攻击机连接Web服务器


3)此时攻击机的1010端口会开启监听,我们可以利用nc工具连接本地1010端口,执行nc -nv 127.0.0.1 1010命令,即可对正向代理进行管理,执行后如图1-4所示。



图1-4 NC连接服务端


4)这里使用[createTunnel]的方法将靶机的远程连接服务映射到攻击机8888端口,执行[createTunnel]8888:192.168.52.12:3389命令,即可将靶机的3389端口转发到攻击机的8888
如图1-5所示。

图1-5 设置端口转发


5)这时靶机的3389端口的远程连接服务已经转发到本地的8888端口,可以尝试在攻击机中使用rdesktop命令连接本地8888端口,执行rdesktop 127.0.0.1:8888命令,发现可以远程连接,如图1-6所示。

图1-6 测试连接成功

2. ReGeorg进行隧道穿透

ReGeorg是一款利用http协议建立隧道进行数据传输的内网代理工具,依赖python2环境,是reduh的升级版,相对于reduh来说增加了很多特性,比如流量加密、响应码定制等。下载压缩包完成解压后,查看目录结构,可以看到支持3种脚本语言,如图1-7所示。按照web服务对应的脚本语言选择webshell文件上传,进行隧道穿透。

图1-7 reGeorg压缩包文件


1)本次实验环境如图1-1-7所示。假设Web服务器是PHP环境,可以使用tunnel.nosocket.php脚本文件,上传文件到Web服务器网站根目录下。成功上传则通过http访问网站此脚本文件,可以看到部署成功,如图1-8 所示。

图1-8访问服务器shell文件


2)使用攻击机运行reGeorgSocksProxy.py文件, 执行python2 reGeorgSocksProxy.py -u http://192.168.0.25/tunnel.nosocket.php -p 8888命令,连接tunnel.nosocket.php文件,指定转发流量到攻击机的8888端口,出现如图1-9所示的界面则证明隧道穿透成功。

图1-9搭建regeorg隧道

3)随后,在攻击机中修改 proxychains4.conf配置文件,并在其底部添加一行socks5127.0.0.1 8888参数来完成 proxychains 代理配置,如下图1-10所示。


图1-10修改proxychains配置

4)当配置完proxychains代理后,即可在攻击机执行proxychains rdesktop 192.168.52.12命令来连接靶机,通过所建立的 socks协议隧道,直接远程连接到目标服务器,如图1-11 所示。


图1-11隧道连接测试成功

3. Neo-reGeorg加密隧道穿透

Neo-regeorg可以说是Regeorg的重构版,也是一款很实用的WEB隧道工具,在Regeorg的基础上提高隧道的连接安全性、可用性、传输内容保密性,以应对更多的网络环境场景,工具依赖python3环境,它的原理与regeorg相似。

1)本次实验环境如图1-1所示,Neo-Regeorg使用条件和Regeorg类似,这里也是通过webshell将tunnel.php文件上传Web服务器网站服务的根目录下,生成带有密码的服务器脚本文件。执行python neoreg.py generate -k test命令,-k是指定密码,运行后会在当前目录生成文件夹neoreg_servers,文件夹内会有各种环境下的脚本,如图1-12所示。

图1-12生成Web tunnel文件


2)将生成的文件上传放置到Web服务器下,访问网站下该文件,如图1-13所示。

图1-13访问服务器webtunnel文件


3)使用Kali攻击机执python neoreg.py -k test -u http://192.168.0.25/tunnel.php -p 8888命令,此时隧道搭建成功,如图1-14所示。

图1-14利用webtunnel搭建加密隧道1


4)随后,在攻击机中修改proxychains4.conf配置文件,并在其底部添加一行socks5127.0.0.1 8888参数来完成proxychains代理配置,如图1-15所示。

图1-15修改proxychains.conf文件


5)当配置完proxychains代理后,即可在攻击机执行proxychains rdesktop 192.168.52.12命令来连接靶机,通过所建立的socks协议隧道,直接远程连接到目标服务器,如图1-16所示。

图1-16隧道连接成功

4. Tunna进行隧道穿透

Tunna是一款基于Python语言所开发的隧道工具,它不仅可以用于通过 HTTP来包装和隧道化任何TCP通信,还可以用于绕过防火墙环境中的各种网络限制,其工具结构如图1-17所示。

图1-17 Tunna结构


1)本次实验环境同上,通过webshell管理权限上传conn.php到网站根目录下,就可以通过http协议访问conn.php文件连接受控服务器,然后在攻击机上执行python proxy.py -u http://192.168.0.25/conn.php -l 8888 -a 192.168.52.12 -r 80 –v命令,将靶机里的WEB服务的80端口映射到本地8888端口。-l参数是指监听本地端口,-r参数是指远程转发的端口,-a参数是指转发的地址,-v参数是指详细模式,执行成功如图1-18所示。

图1-18端口映射


2)攻击机执行成功后,此时端口映射成功,接下来我们在浏览器访问本地8888端口,即可访问到内网靶机的WEB服务,如图1-19所示。

图1-19 映射成功

5 .Abptts加密隧道穿透

Abptts工具是一款基于python 2开发的工具,支持asp、jsp脚本环境,可以利用http建立ssl加密的隧道,相对于regeorg更加稳定。但Abptts工具每次只能转发一个端口,在使用上有一定局限性。下面演示Abptts工具隧道穿透。

1)Abptts需要python 2环境,并且需要使用pip2安装依赖包pycryptodome和httplib2。在Kali攻击机上使用git命令把github上的abptts包拉取到本地,执行git clone https://github.com/nccgroup/ABPTTS.git命令之后安装,进入工具目录下使用abpttsfactory.py执行python2 abpttsfactory.py -o webshell命令会生成webshell文件夹,如图1-20所示。

图1-20利用abptts生成webtunnel文件


2)由于abptts只能生成aspx和jsp脚本,因此本次跳板机使用的是asp+lls环境。为了方便直接把abptts.asp文件放置到根目录,我们通过url访问。如图1-21所示。

图1-21通过url访问


3)在攻击机执行命令将靶机的3389端口转发到攻击机的5555端口上,执行python2 abpttsclient.py -c webshell/config.txt -u “http://192.168.0.25/abptts.aspx” -f 127.0.0.1:5555/192.168.52.12:3389命令,即可实现端口转发,如图1-22所示。

图1-22利用webtunnel进行端口转发


4)命令执行后,我们在攻击机执行rdesktop 127.0.0.1:5555命令,即可连接到靶机的3389端口,成功连接如图1-23所示,表示隧道搭建成功。

图1-23隧道连接测试成功

6. Pivotnacci加密隧道穿透

Pivotnacci这款工具一样是通过HTTP协议来搭建隧道的,它通过socks代理,支持socks4、socks5两种协议,并且能为隧道加密,也是一款不错的隧道工具。

1)下载完安装包解压后需要先初始化,使用攻击机在pivotnacci-master文件夹下执行 pip2 install -r requirements.txt命令来下载相关依赖库。然后使用python配置环境,执行python setup.py install命令会生成文件,如图1-24所示。

图1-24初始化pivitnacci环境


2)使用ls命令显示存在执行安装命令后产生的文件,如图1-25所示。

图1-25 pivitnacci环境搭建完成


3)如果需要使用密码加密,可以在agents/agent.php文件中为AGENT_PASSWORD赋值,这里将密码设置为text,如图1-26所示。

图1-26配置webtunnel文件连接密码


4)设置完成后将agent.php放置在网站根目录下,在攻击机执行./pivotnacci http://192.168.0.25/agent.php -p 6666 --password text -v命令,其中-p 6666是指定转发端口,–password是指自定义密码,执行成功则如图1-27所示。

图1-27利用webtunnel文件搭建隧道


5)随后,在攻击机中修改 proxychains4.conf配置文件,并在其底部添加一行socks5 127.0.0.1 6666参数来完成proxychains代理配置,如图1-28所示。

图1-28修改proxychains配置文件

6)当配置完proxychains代理后,即可在攻击机执行proxychains rdesktop 192.168.52.12命令来连接靶机,如图1-29所示,通过所建立的socks协议隧道,可以直接远程连接到靶机。


图1-29隧道测试连接成功

四.本篇总结

随着隧道技术的不断更新迭代,越来越多的攻击者利用隧道技术攻击企业内网中,在本篇文章中介绍了如何利用HTTP协议进行隧道穿透,希望本篇对读者有用。

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

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

相关文章

python 实验7

姓名:轨迹 学号:6666 专业年级:2021级软件工程 班级: 66 实验的准备阶段 (指导教师填写) 课程名称 Python开发与应用 实验名称 文件异常应用 实验目的 (1)掌握基本文件读写的方式; …

基于消息队列+多进程编写的银行模拟系统

银行模拟系统 概述客户端 client.c服务端 serve.c开户 enroll.c存款 save.c转账 transfer.c取款 take.cmakefile文件 概述 该案例大体过程为,服务器先启动,初始化消息队列和信号,用多线程技术启动开户、存钱、转账、取钱模块,并且…

Python基础-解释器安装

一、下载 网址Welcome to Python.orgPython更新到13了,我们安装上一个12版本。 这里我保存到网盘里了,不想从官网下的,可以直接从网盘里下载。 链接:百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间…

IDEA从Gitee拉取代码,推送代码教程

打开IDEA,选择Get from Version Control 输入Gitee 仓库项目的URL地址 URL地址输入后点击Clone,即拉取成功 向Gitee提交推送代码 右键选中项目,选中Git 第一步先点击 Add 第二步 点击Commit填写提交信息,点击Commit就会出现下面…

Jenkins的一些其他操作

Jenkins的一些其他操作 1、代码仓库Gogs的搭建与配置 Gogs 是一款极易搭建的自助 Git 服务,它的目标在于打造一个最简单、快速和轻松的方式搭建 Git 服务。使用 Go 语言开发的它能够通过独立的二进制进行分发,支持了 Go 语言支持的所有平台&#xff0…

Vue修饰符(Vue事件修饰符、Vue按键修饰符)

目录 前言 Vue事件修饰符 列举较常用的事件修饰符 .stop .prevent .capture .once Vue按键修饰符 四个特殊键 获取某个键的按键修饰符 前言 本文介绍Vue修饰符,包括Vue事件修饰符以及按键修饰符 Vue事件修饰符 列举较常用的事件修饰符 .stop: …

【Linux基础IO篇】深入理解文件系统、动静态库

【Linux基础IO篇】深入理解文件系统、动静态库 目录 【Linux基础IO篇】深入理解文件系统、动静态库再次理解文件系统操作系统内存管理模块(基础)操作系统如何管理内存 Linux中task_struct源码结构 动态库和静态库动静态库介绍:生成静态库库搜…

IDEA安装配置SceneBuilder

1、下载 SceneBuilder 地址: Scene Builder - Gluon ​​​​​​​ Scene Builder | JavaFX中文官方网站 选择符合自己系统版本,JAVA版本的下载 2、安装SceneBuilder 执行下载的 SceneBuilder 安装程序,并按照安装向导的指示进行…

Pikachu漏洞练习平台之CSRF(跨站请求伪造)

本质:挟制用户在当前已登录的Web应用程序上执行非本意的操作(由客户端发起) 耐心看完皮卡丘靶场的这个例子你就明白什么是CSRF了 CSRF(get) 使用提示里给的用户和密码进行登录(这里以lili为例) 登录成功后显示用户…

(Matalb时序预测)GWO-BP灰狼算法优化BP神经网络的多维时序回归预测

目录 一、程序及算法内容介绍: 基本内容: 亮点与优势: 二、实际运行效果: 三、部分代码展示: 四、完整代码数据说明手册下载: 一、程序及算法内容介绍: 基本内容: 本代码基于M…

SSH-远程连接服务器

一、理论知识 目前远程连接服务器的主要类型: 文字接口明文传输:Telnet、RSH 等为主,目前非常少用。文字接口加密:SSH 为主,已经取代上述的 Telnet、RSH 等明文传输方式。图形接口:XDMCP(X Di…

Neo4j数据库介绍及简单使用

图数据库介绍 图数据库是一种专门设计用于存储和管理图形数据的数据库类型。在图数据库中,数据以图的形式表示,其中节点表示实体,边表示实体之间的关系。这种表示方式非常适合处理具有复杂关系的数据,如社交网络、推荐系统、网络…

安装部署PowerDNS--实现内网DNS解析(use)

使用PowerDNS实现内网DNS解析_powerdns-admin-CSDN博客 https://www.cnblogs.com/guangdelw/p/17348982.html 一、概念介绍 PowerDNS是一个域名解析服务,官网提供了三个组件:Authoritative、Recursor、dnsdist,分别用来作为权威服务器、域名递…

Leetcode——岛屿的最大面积

1. 题目链接:695. 岛屿的最大面积 2. 题目描述: 给你一个大小为 m x n 的二进制矩阵 grid 。 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在 水平或者竖直的四个方向上 相邻。你可以假设 grid 的四个边缘都…

ssh脚本找不到命令或者执行无效的解决办法

如图:今天在编写脚本时发现的这个问题, 在排除脚本语法错误、编码格式等情况下,仍然出现“bash 。。未找到命令”的字样 解决办法: 给每台虚拟机的环境变量source一下: 命令如下 source /etc/profile或者输入 vim ~…

【数据结构】直接选择排序(你知道最不常用的排序算法有哪些吗?)

👦个人主页:Weraphael ✍🏻作者简介:目前正在学习c和算法 ✈️专栏:数据结构 🐋 希望大家多多支持,咱一起进步!😁 如果文章有啥瑕疵 希望大佬指点一二 如果文章对你有帮助…

【2023云栖】黄博远:阿里云人工智能平台PAI年度发布

本文根据2023云栖大会演讲实录整理而成,演讲信息如下: 演讲人:黄博远 | 阿里云计算平台事业部资深产品专家、阿里云人工智能平台PAI产品负责人 演讲主题:阿里云人工智能平台PAI年度发布 AIGC是我们这个时代的新机遇 今年云栖大…

单相过压继电器DVR-G-100-1 0~500V AC/DC220V 导轨安装

系列型号 DVR-G-100-1X3数字式过压继电器; DVR-G-100-3三相过压继电器; DVR(H)-G-100-1单相过压继电器; DVR-Q-100-3三相欠压继电器; DVR(H)-Q-100-3三相欠压继电器 一、用途 主要应用于电机、变压器等主设备以及输配电系统的继…

人工智能与大数据:驱动现代业务转型的双引擎

在当今数字化时代,人工智能(AI)和大数据已成为驱动业务和技术创新的关键力量。它们的结合不仅重塑了传统行业,也催生了新的商业模式和服务方式。 AI与大数据在零售行业的应用 在零售行业,AI和大数据的应用已经成为提…

代码随想录Day45 动态规划13 LeetCode T1143最长公共子序列 T1135 不相交的线 T53最大子数组和

LeetCode T1143 最长公共子序列 题目链接:1143. 最长公共子序列 - 力扣(LeetCode) 题目思路: 动规五部曲分析 1.确定dp数组的含义 这里dp数组的含义是结尾分别为i-1,j-1的text1和text2的最长公共子序列长度 至于为什么是i-1,j-1我之前已经说过了,这里再…