内网穿刺原理及Frp使用

在常规的搭建会采用反向代理技术进行公网映射,反向代理的工作原理是,代理服务器来接受客户端的网络访问连接请求,然后服务器将请求有策略的转发给网络中实际工作的业务服务器,并将从业务服务器处理的结果,返回给网络上发起连接请求的客户端。但是反向代理技术的使用要满足以下两个条件:①反向代理服务器需要具有公网IP。②反向代理服务器需要能够访问需要映射服务器的局域网。以下是示意图:
在这里插入图片描述

目前大多是遇到的映射问题是,因为价格原因和运营商的管控很多PC和服务器没有公网IP,而云服务器并不能满足与需要映射服务的原始服务器主机在同一局域网,为了解决这一问题我们提出采用穿刺软件的解决方案,将局域网内可以访问公网的服务器装上穿刺软件客户端,再通过在云服务器上安装穿刺软件服务端,将局域网和公网服务器通过软件连接的方式。这样穿刺主机的服务端和客户端相结合就相当于反向代理服务器。而需要满足反向代理的两个条件分别由云服务器(穿刺主机服务端)满足拥有公网IP,局域网内可以访问公网的服务器(穿刺主机客户端)满足可以访问局域网。
在这里插入图片描述
Frp是一款免费穿刺软件,是一种快速反向代理,目前,它支持TCP和UDP,以及HTTP和HTTPS协议,可以通过域名将请求转发到内部服务。frp 还有一个 P2P 连接模式。一下是他的使用方式:
将frps.exe与frps.ini其放到具有公网IP服务器上,Frpc.exe与frpc.ini的需要穿刺的局域网内服务器上
修改配置文件frpc.ini启用此功能:
[common]
admin_addr = 127.0.0.1
admin_port = 7400
admin_user = admin
admin_pwd = admin
然后访问http://127.0.0.1:7400查看管理界面,用户名和密码均为admin.

在这里插入图片描述

修改配置文件frps.ini连接到 frp 客户端:

frps.ini

[common]
bind_port = 7000
frps启动命令:
./frps -c ./frps.ini
修改配置文件frpc.ini开启映射:
[common]
server_addr = x.x.x.x
server_port = 7000

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
请注意,local_port(在客户端侦听)和remote_port(在服务器上公开)用于进出 frp 系统的流量,而server_port在 frp 之间使用。
在这里插入图片描述

frpc启动:
./frpc -c ./frpc.ini
使用 frp 公开 HTTP(S) 服务
修改frps.ini,设置vhost HTTP端口为8080:
[common]
bind_port = 7000
vhost_http_port = 8080
运行frps:
./frps -c ./frps.ini
修改frpc.ini并设置server_addr为远程frps服务器的IP地址。这local_port是您的网络服务的端口:
[common]
server_addr = x.x.x.x
server_port = 7000

[web]
type = http
local_port = 80
custom_domains = www.xxxxx.store
运行frpc:
./frpc -c ./frpc.ini
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python 内穿刺(Python reverse shell)是一种技术,用于在一个局域中的计算机上远程执行命令。它通常用于络安全测试和渗透测试中,以验证系统的安全性。 在 Python 中,可以使用 `socket` 模块来实现一个简单的内穿刺工具。下面是一个简单的例子: ```python import socket import subprocess # 设置监听的本地 IP 和端口号 host = '192.168.1.100' port = 1234 # 创建 socket 对象 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 绑定 IP 和端口号 s.bind((host, port)) # 监听连接 s.listen(1) print(f"Listening on {host}:{port}...") # 接受连接 conn, addr = s.accept() print(f"Connected by {addr[0]}:{addr[1]}") # 循环接收和执行命令 while True: cmd = conn.recv(1024).decode() if cmd.lower() == 'exit': break output = subprocess.getoutput(cmd) conn.send(output.encode()) # 关闭连接 conn.close() ``` 以上代码是一个简单的服务器端程序,它会监听指定的 IP 和端口,接受客户端的连接,并将客户端发送的命令执行后返回结果。你可以将该代码保存为 `server.py` 并在服务器上运行。 客户端代码如下: ```python import socket # 设置服务器的 IP 和端口号 host = '192.168.1.100' port = 1234 # 创建 socket 对象 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 连接服务器 s.connect((host, port)) # 循环发送命令并接收结果 while True: cmd = input("Enter command (or 'exit' to quit): ") s.send(cmd.encode()) if cmd.lower() == 'exit': break output = s.recv(1024).decode() print(output) # 关闭连接 s.close() ``` 以上代码是一个简单的客户端程序,它会连接到指定的服务器 IP 和端口,并发送用户输入的命令,并打印服务器返回的结果。你可以将该代码保存为 `client.py` 并在客户端上运行。 需要注意的是,内穿刺是一种潜在的安全风险,使用时需要谨慎,并确保在合法授权的范围内进行使用
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值