Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
Tunna — Tunna 是一组工具,可以将任何 TCP 通信包装并通过 HTTP 隧道进行传输。它可用于绕过完全防火墙环境中的网络限制。 | Kitploit
工具/GitHubGitHub/secforce/tunna
Web代理与拦截IDS/IPS规避渗透测试红队
GitHubsecforce/tunna

Tunna

Tunna 是一组工具,可以将任何 TCP 通信包装并通过 HTTP 隧道进行传输。它可用于绕过完全防火墙环境中的网络限制。

查看仓库
1.3k28095年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Tunna

Tunna 是一套工具,用于将任何 TCP 通信封装并通过 HTTP 隧道传输。可用于绕过完全防火墙环境中的网络限制。

v1.1 Alpha 版本

root@kitploit:~
				  _____                        
				 |_   _|   _ _ __  _ __   __ _ 
				   | || | | | '_ \| '_ \ / _` |
				   | || |_| | | | | | | | (_| |
				   |_| \__,_|_| |_|_| |_|\__,_|	
                                                 

                 Tunna 0.1,用于 HTTP 隧道传输 TCP 连接,作者 Nikos Vassakis
                 http://www.secforce.co.uk	/ nikos.vassakis <at> secforce.com

################################################################################################################

摘要

root@kitploit:~
TLDR:通过 HTTP 隧道传输 TCP 连接

在完全防火墙(入站和出站连接均受限——仅开放 Web 服务器端口)的环境中

该 Web Shell 可用于连接远程主机上的任何服务。这将是对远程主机本地端口的本地连接,且应被防火墙允许。

Web Shell 将从服务端口读取数据,将其封装为 HTTP 协议,并作为 HTTP 响应发送给本地代理。

本地代理将解封装数据,并将其写入本地端口,客户端程序将连接到此端口。

当本地代理在本地端口收到数据时,会将其作为 HTTP POST 发送给 Web Shell。

Web Shell 将从 HTTP POST 中读取数据,并将其写入服务端口。

然后重复上述过程。

仅需开放 Web 服务器端口(通常为 80/443)。 整个通信(外部)均通过 HTTP 协议进行。

用法

python proxy.py -u <远程URL> -l <本地端口> [选项]

选项

--help, -h 显示此帮助信息并退出

--url=URL, -u URL 远程 Web Shell 的 URL

--lport=本地端口, -l 本地端口 本地监听端口

--verbose, -v 详细模式(输出数据包大小)

--buffer=缓冲区大小, -b 缓冲区大小* HTTP 请求大小(某些 Web Shell 有大小限制)

无 SOCKS 选项

如果使用了 SOCKS 代理,则忽略这些选项。

--no-socks, -n 不使用 SOCKS 代理

--rport=远程端口, -r 远程端口 Web Shell 要连接的远程服务端口

--addr=远程IP, -a 远程IP Web Shell 要连接的远程地址(默认 = 127.0.0.1)

上游代理选项

通过本地代理隧道连接

--up-proxy=上游代理, -x 上游代理 上游代理(http://proxyserver.com:3128)

--auth, -A 上游代理需要身份验证

高级选项

--ping-interval=PING_DELAY, -q PING_DELAY webshprx 轮询线程间隔(默认 = 0.5 秒)

--start-ping, -s 先启动轮询线程——某些服务会先发送数据(例如 SSH)

--cookie, -C 请求 Cookie

--authentication, -t 基本身份验证

  • 参阅限制说明

使用示例: python proxy.py -u http://10.3.3.1/conn.aspx -l 8000 -v

root@kitploit:~
# 这将在本地端口 8000 启动一个 SOCKS 代理服务器
# 此连接将通过 HTTP 封装,并在远程服务器解封装

python proxy.py -u http://10.3.3.1/conn.aspx -l 8000 -x https://192.168.1.100:3128 -A -v

# 这将在本地端口 8000 启动一个 SOCKS 代理服务器
# 它将通过一个需要身份验证的本地代理(https://192.168.1.100:3128)连接到远程 Tunna Web Shell

python proxy.py -u http://10.3.3.1/conn.aspx -l 4444 -r 3389 -b 8192 -v --no-socks

# 这将发起 Web Shell 与远程主机 RDP(3389)服务之间的连接
# RDP 客户端可以连接 localhost 端口 4444
# 此连接将通过 HTTP 封装

前提条件

root@kitploit:~
能够在远程服务器上上传 Web Shell

限制 / 已知错误 / 临时解决方案

root@kitploit:~
这是概念验证代码,可能导致服务器拒绝服务。
	已尽力在运行后或出错时进行清理(但不保证)

基于本地测试:		
	* JSP 缓冲区需限制(使用缓冲区选项):
			在 Linux Apache Tomcat 上 4096 可行
			在 XAMPP Apache Tomcat 上 1024 可行(较慢)
			* 超过此大小可能导致远程套接字字节丢失
			例如:ruby proxy.rb -u http://10.3.3.1/conn.jsp -l 4444 -r 3389 -b 1024 -v

	* 默认未启用套接字:
		php windows(IIS + PHP)
		XAMPP Windows
		php linux(PHP 内置 Web 服务器 / Apache + PHP)
	如果出现错误:Uncaught Error: Call to undefined function socket_create()
	请参阅 https://stackoverflow.com/questions/6137823/fatal-error-call-to-undefined-function-socket-create
	
	
	* Web Shell 中的回车符(代码之外): 
		会出现在响应中 / 被写入本地套接字 → 导致数据包损坏

	* Windows 下 PHP Web Shell:循环函数导致远程套接字拒绝服务: 
		已添加 sleep 函数 → 可行但稍慢 
	* PHP Web Shell 需要在文件末尾("?>" 之后)删除换行符
		因为这些字符会在每次响应中被发送,导致 Tunna 混淆
	

文件

root@kitploit:~
Web Shell:
	conn.jsp	已在 Apache Tomcat(Windows + Linux)上测试
	conn.aspx	已在 IIS 6+8(Windows Server 2003/2012)上测试 
	conn.php	已在 LAMP + XAMPP + IIS(Windows + Linux)上测试

Web 服务器:
	webserver.py	已在 Python 2.6.5 上测试

代理:
	proxy.py	已在 Python 2.6.5 上测试

技术细节

架构决策

root@kitploit:~
数据以原始形式发送在 HTTP POST 体中(无 POST 变量)

指令/配置作为 URL 参数(HTTP GET)发送给 Web Shell
数据在 HTTP 体(HTTP POST)中发送

未使用 WebSocket:大多数 Web 服务器默认不支持
无法实现异步 HTTP 响应
	代理持续轮询服务器(默认 0.5 秒)

初始化阶段

第一个数据包与 Web Shell 建立会话——获取 Cookie 返回 例如:http://webserver/conn.ext?proxy

第二个数据包向 Web Shell 发送连接配置选项 例如:http://webserver/conn.ext?proxy&port=4444&ip=127.0.0.1

root@kitploit:~
Web Shell 要连接的 IP 和端口
这是一个线程化请求:
	在 PHP 中,此请求将进入无限循环 
	以保持 Web Shell 套接字连接存活
	在其他 Web Shell 中,会收到 [OK] 返回

TUNNA 客户端

将创建一个本地套接字,供客户端程序连接 客户端连接后,启动轮询线程并开始执行 套接字上的任何数据(来自客户端)被读取并作为 HTTP POST 请求发送 Web Shell 套接字上的任何数据将作为对 POST 请求的响应发送

轮询线程

由于 HTTP 响应不能是异步的。 此线程将按间隔(默认 0.5 秒)对 Web Shell 执行 HTTP GET 请求 如果 Web Shell 有数据要发送,它将(也)作为对此请求的回复发送 否则发送空响应

通常: 来自本地代理的数据通过 HTTP POST 发送 每 0.5 秒执行一次 GET 请求以查询 Web Shell 的数据 如果 Web Shell 端有数据,将作为对其中一个请求的响应发送

Web Shell

Web Shell 连接到本地或远程主机上的套接字。 写入套接字的任何数据都将作为对请求(POST/GET)的回复发回代理 通过 POST 接收到的任何数据都将写入套接字

注意

所有请求都需要设置 URL 参数 "proxy",以便由 Web Shell 处理 (http://webserver/conn.ext?proxy)

退出时 / 出错时

终止所有线程并关闭本地套接字 向 Web Shell 发送 proxy&close: 终止远程线程并关闭套接字

SOCKS

SOCKS 支持是 Tunna 的一个附加模块。在本地,它是一个独立的线程,处理连接请求和流量,添加一个指定端口和数据包大小的头部,并将其转发给 Tunna。Tunna 将其发送到远程 Web 服务器,移除 HTTP 头部,并将数据包转发到远程 SOCKS 代理。远程 SOCKS 代理发起连接,并将接收到的端口映射到本地端口。如果远程 SOCKS 代理从服务收到数据,它会查看映射表,找到需要响应的端口,将端口作为头部添加,以便本地 SOCKS 代理知道将数据转发到何处。从接收端口来的任何流量将被转发到本地端口,反之亦然。

版权与免责声明

Tunna,基于 HTTP 的 TCP 隧道 Nikos Vassakis 版权所有(C)2014 SECFORCE。

此工具仅用于合法目的。

本程序是自由软件:您可以重新分发和/或修改它 根据自由软件基金会发布的 GNU 通用公共许可证, 许可证版本 3 或(由您选择)任何更高版本。

分发此程序的目的是希望它有用,但 不提供任何担保;甚至没有针对特定用途的默示担保。 有关更多详情,请参阅 GNU 通用公共许可证。

您应该已收到 GNU 通用公共许可证的副本,随此程序一起。 如果没有,请参见 http://www.gnu.org/licenses/。

下载工具