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

内网穿透之利用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协议进行隧道穿透,希望本篇对读者有用。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

操作符——C语言初阶

一.算数操作符: - * / % 、-、*、/这四个运算符均可用于整数及浮点数的运算。 当使用/运算符时,如果两个操作数均为整型,那么执行整数除法,运算结果也为整型;如果两个操作数至少一个为浮…

AJAX入门Day01笔记

Day01_Ajax入门 知识点自测 如下对象取值的方式哪个正确? let obj {name: 黑马 }A: obj.a B: obj()a 答案 A选项正确 哪个赋值会让浏览器解析成标签显示? let ul document.querySelector(#ul) let str <span>我是span标签</span>A: ul.innerText str B: ul…

<MySQL> 查询数据进阶操作 -- 联合查询

目录 一、什么是笛卡尔积&#xff1f; 二、什么是联合查询&#xff1f; 三、内连接 3.1 简介 3.2 语法 3.3 更多的表 3.4 操作演示 四、外连接 4.1 简介 4.2 语法 4.3 操作演示 五、自连接 5.1 简介 5.2 自连接非必要不使用 六、子查询(嵌套查询) 6.1 简介 6.…

计算机毕设 深度学习 大数据 股票预测系统 - python lstm

文章目录 0 前言1 课题意义1.1 股票预测主流方法 2 什么是LSTM2.1 循环神经网络2.1 LSTM诞生 2 如何用LSTM做股票预测2.1 算法构建流程2.2 部分代码 3 实现效果3.1 数据3.2 预测结果项目运行展示开发环境数据获取 最后 0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要…

自己动手实现一个深度学习算法——六、与学习相关的技巧

文章目录 1.参数的更新1&#xff09;SGD2&#xff09;Momentum3&#xff09;AdaGrad4&#xff09;Adam5&#xff09;最优化方法的比较6&#xff09;基于MNIST数据集的更新方法的比较 2.权重的初始值1&#xff09;权重初始值不能为02&#xff09;隐藏层的激活值的分布3&#xff…

使用docker部署ELK日志框架-Elasticsearch

一、ELK知识了解 1-ELK组件 工作原理&#xff1a; &#xff08;1&#xff09;在所有需要收集日志的服务器上部署Logstash&#xff1b;或者先将日志进行集中化管理在日志服务器上&#xff0c;在日志服务器上部署 Logstash。 &#xff08;2&#xff09;Logstash 收集日志&#…

gRPC协议详解

gRPC介绍 gRPC是一个高性能、开源和通用的RPC&#xff08;远程过程调用&#xff09;框架&#xff0c;由Google发起并开发&#xff0c;于2015年对外发布。它基于HTTP/2协议和Protocol Buffers设计&#xff0c;支持多种编程语言&#xff08;如C、Java、Python、Go、Ruby、C#、No…

es安装方式

es安装方式 1.下载镜像的方式 分词器 kibana和es和容器互通的方式 docker network create es-net开始拉去镜像的方式 docker pull kibana:7.12.1运行镜像的方式 docker run -d \--name es \-e "ES_JAVA_OPTS-Xms512m -Xmx512m" \-e "discovery.typesingle-…

论文笔记——BiFormer

Title: BiFormer: Vision Transformer with Bi-Level Routing AttentionPaper: https://arxiv.org/pdf/2303.08810.pdfCode: https://github.com/rayleizhu/BiFormer 一、前言 众所周知&#xff0c;Transformer相比于CNNs的一大核心优势便是借助自注意力机制的优势捕捉长距离…

【算法】堆排序

算法-堆排序 前置知识 堆&#xff08;即将更新&#xff09; 思路 我们现在有一个序列&#xff0c;怎么对它排序&#xff1f; 这是一个非常经典的问题&#xff0c;这里我们使用一个借助数据结构的算法——堆排序解决。 这里有一个序列&#xff0c;要对它升序排序 4 7 3 6 5 …

kubectl get nodes报错:The connection to the server localhost:8080

报错描述kubectl get nodes命令无法执行 在K8S-master初始化后&#xff0c;worker-node节点加入K8S集群后 kubeadm join 192.168.31.150:6443 --token 2n0t62.gvuu8x3zui9o8xnc \--discovery-token-ca-cert-hash sha256:d294c082cc7e0d5f620fb10e527a8a7cb4cb6ccd8dc45ffaf2c…

突发!奥特曼宣布暂停ChatGPT Plus新用户注册!

大新闻&#xff01;就在刚刚&#xff01; OpenAI的CEO Sam Altman宣布暂停ChatGPT Plus 新用户注册&#xff01; Sam Altman对此解释道&#xff1a; 由于OpenAI开发日后ChatGPT使用量的激增超出了我们的承受能力&#xff0c;我们希望确保每个人都有良好的体验。 您仍然可以在a…

51单片机应用从零开始(三)

51单片机应用从零开始&#xff08;一&#xff09;-CSDN博客 51单片机应用从零开始&#xff08;二&#xff09;-CSDN博客 详解 KEIL C51 软件的使用建立工程-CSDN博客 详解 KEIL C51 软件的使用设置工程编绎与连接程序-CSDN博客 目录 1. 用单片机控制第一个灯亮 2. 认识单片…

Mendix 创客访谈录|低代码赋能IoT应用开发

本期创客 郑锴 舜宇光学科技&#xff08;集团&#xff09;有限公司信息技术部 毕业于浙江大学&#xff0c;三年软件设计开发经验。目前任职于舜宇光学科技&#xff08;集团&#xff09;有限公司信息技术部&#xff0c;担任软件开发工程师&#xff0c;主要负责工业互联网相关软件…

报错资源不足,k8s使用containerd运行容器修改挂载点根目录换成/home

运行k8s一段时间发现存储不足报错 发现这里用的是根路径的挂载&#xff0c;修改一下

深入Android S(12.0) 探索 Android Framework 之 SystemServer 进程启动详解

深入学习 Android Framework 第三&#xff1a;深入Android S(12.0) 探索 Android Framework 之 SystemServer 进程启动详解 文章目录 深入学习 Android Framework前言一、Android 系统的启动流程1. 流程图2. 启动流程概述 二、源码详解1. 时序图2. 源代码1、ZygoteInit # main…

opencv(1):创建和显示窗口, 读取保存图片

下载源码&#xff0c;方便查看 API 信息。 快速在源码文件夹中搜索相关 api. grep“namedWindow(*-Rn// 限定 .h 文件 grep“namedWindow(*-Rn|grep "\.h" vscode 语法检测有问题 一直有波浪线 打开 vscode, setting 界面&#xff0c;搜索 python 在 setting.json…

【Shell脚本12】Shell 输入/输出重定向

Shell 输入/输出重定向 大多数 UNIX 系统命令从你的终端接受输入并将所产生的输出发送回​​到您的终端。一个命令通常从一个叫标准输入的地方读取输入&#xff0c;默认情况下&#xff0c;这恰好是你的终端。同样&#xff0c;一个命令通常将其输出写入到标准输出&#xff0c;默…

Linux系统编程——进程中vfork函数

函数原型 pid_t vfork(void);//pid_t是无符号整型 所需头文件 #include <sys/types.h> #include <unistd.h> 功能 vfork() 函数和 fork() 函数一样都是在已有的进程中创建一个新的进程&#xff0c;但它们创建的子进程是有区别的。 返回值 成功子进程中返回 …

RK3588平台开发系列讲解(摄像头篇)USB摄像头驱动分析

🚀返回专栏总目录 文章目录 一. USB摄像头基本知识1.1 内部逻辑结构1.2 描述符实例解析二. UVC驱动框架2.1、设备枚举过程2.2、数据传输过程沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 USB摄像头驱动位于 drivers\media\usb\uvc\uvc_driver.c ,我们本篇重点看下…