mirror of
https://gitee.com/wujiawei1207537021/wu-lazy-cloud-network.git
synced 2025-06-06 13:27:55 +08:00
[fix]
This commit is contained in:
parent
fb086d6e95
commit
600706ccc1
@ -56,4 +56,9 @@ public class InternalNetworkClientPermeateClientVisitor implements InternalNetwo
|
||||
* 访客ID
|
||||
*/
|
||||
private String visitorId;
|
||||
|
||||
/**
|
||||
* 是否是ssl
|
||||
*/
|
||||
private boolean isSsl;
|
||||
}
|
||||
|
@ -38,4 +38,10 @@ public class InternalNetworkPermeateServerVisitor implements InternalNetworkPerm
|
||||
*/
|
||||
private List<HandleChannelTypeAdvanced> handleChannelTypeAdvancedList;
|
||||
|
||||
|
||||
/**
|
||||
* 是否是ssl
|
||||
*/
|
||||
private boolean isSsl;
|
||||
|
||||
}
|
||||
|
@ -51,5 +51,17 @@ public interface InternalNetworkPermeate {
|
||||
*/
|
||||
void setVisitorPort(Integer visitorPort);
|
||||
|
||||
/**
|
||||
* 是否是ssl
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
boolean isSsl();
|
||||
|
||||
/**
|
||||
* 设置ssl
|
||||
*/
|
||||
void setSsl(boolean ssl);
|
||||
|
||||
|
||||
}
|
@ -13,7 +13,7 @@ import lombok.experimental.Accessors;
|
||||
@Builder
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class InternalNetworkPermeateRealServer {
|
||||
public class InternalNetworkServerPermeateServerRealServer {
|
||||
|
||||
|
||||
|
@ -0,0 +1,31 @@
|
||||
package org.framework.lazy.cloud.network.heartbeat.server.netty;
|
||||
|
||||
import lombok.Data;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.InternalNetworkPermeate;
|
||||
|
||||
|
||||
@Data
|
||||
public class InternalNetworkServerPermeateServerConf implements InternalNetworkPermeate {
|
||||
|
||||
/**
|
||||
* 目标地址
|
||||
*/
|
||||
private String targetIp;
|
||||
|
||||
/**
|
||||
* 目标端口
|
||||
*/
|
||||
private Integer targetPort;
|
||||
|
||||
|
||||
/**
|
||||
* 访问端口
|
||||
*/
|
||||
private Integer visitorPort;
|
||||
|
||||
|
||||
/**
|
||||
* 是否是ssl
|
||||
*/
|
||||
private boolean isSsl;
|
||||
}
|
@ -3,12 +3,27 @@ package org.framework.lazy.cloud.network.heartbeat.server.netty.filter;
|
||||
import io.netty.channel.Channel;
|
||||
import io.netty.channel.ChannelPipeline;
|
||||
import io.netty.channel.socket.SocketChannel;
|
||||
import io.netty.handler.ssl.SslContext;
|
||||
import io.netty.handler.ssl.SslContextBuilder;
|
||||
import io.netty.handler.ssl.util.InsecureTrustManagerFactory;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.InternalNetworkServerPermeateServerRealServer;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.decoder.TransferDecoder;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.encoder.TransferEncoder;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.filter.DebugChannelInitializer;
|
||||
import org.framework.lazy.cloud.network.heartbeat.server.netty.handler.NettyServerPermeateServerRealHandler;
|
||||
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
|
||||
@Slf4j
|
||||
public class NettyServerPermeateServerRealFilter extends DebugChannelInitializer<SocketChannel> {
|
||||
private final InternalNetworkServerPermeateServerRealServer internalNetworkServerPermeateServerRealServer;
|
||||
|
||||
public NettyServerPermeateServerRealFilter(InternalNetworkServerPermeateServerRealServer internalNetworkServerPermeateServerRealServer) {
|
||||
this.internalNetworkServerPermeateServerRealServer = internalNetworkServerPermeateServerRealServer;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method will be called once the {@link Channel} was registered. After the method returns this instance
|
||||
* will be removed from the {@link ChannelPipeline} of the {@link Channel}.
|
||||
@ -18,14 +33,21 @@ public class NettyServerPermeateServerRealFilter extends DebugChannelInitializer
|
||||
@Override
|
||||
protected void initChannel0(SocketChannel ch) {
|
||||
ChannelPipeline pipeline = ch.pipeline();
|
||||
// // 适配https
|
||||
// try {
|
||||
// SslContext sslContext = SslContextBuilder.forClient()
|
||||
// .trustManager(InsecureTrustManagerFactory.INSTANCE).build();
|
||||
// ch.pipeline().addLast(sslContext.newHandler(ch.alloc(), "https://juno.shuhan-juno.com", 443));
|
||||
// } catch (SSLException e) {
|
||||
// throw new RuntimeException(e);
|
||||
// }
|
||||
Boolean isSsl = internalNetworkServerPermeateServerRealServer.getIsSsl();
|
||||
if(isSsl){
|
||||
log.info("init channel0 ssl");
|
||||
String targetIp = internalNetworkServerPermeateServerRealServer.getClientTargetIp();
|
||||
Integer targetPort = internalNetworkServerPermeateServerRealServer.getClientTargetPort();
|
||||
// 适配https
|
||||
try {
|
||||
SslContext sslContext = SslContextBuilder.forClient()
|
||||
.trustManager(InsecureTrustManagerFactory.INSTANCE).build();
|
||||
pipeline.addLast("ssl", sslContext.newHandler(ch.alloc(),targetIp,targetPort));
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
// 解码、编码
|
||||
pipeline.addLast(new TransferDecoder(Integer.MAX_VALUE, 1024 * 1024*10));
|
||||
pipeline.addLast(new TransferEncoder());
|
||||
|
@ -5,17 +5,17 @@ import io.netty.channel.ChannelDuplexHandler;
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
import io.netty.channel.ChannelPipeline;
|
||||
import io.netty.channel.socket.SocketChannel;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.InternalNetworkPermeateRealServer;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.InternalNetworkServerPermeateServerRealServer;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.adapter.ChannelFlowAdapter;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.filter.DebugChannelInitializer;
|
||||
import org.framework.lazy.cloud.network.heartbeat.server.netty.handler.NettyServerPermeateServerVisitorHandler;
|
||||
|
||||
public class NettyServerPermeateServerVisitorFilter extends DebugChannelInitializer<SocketChannel> {
|
||||
private final InternalNetworkPermeateRealServer internalNetworkPermeateRealServer;
|
||||
private final InternalNetworkServerPermeateServerRealServer internalNetworkServerPermeateServerRealServer;
|
||||
private final ChannelFlowAdapter channelFlowAdapter;
|
||||
|
||||
public NettyServerPermeateServerVisitorFilter(InternalNetworkPermeateRealServer internalNetworkPermeateRealServer, ChannelFlowAdapter channelFlowAdapter) {
|
||||
this.internalNetworkPermeateRealServer = internalNetworkPermeateRealServer;
|
||||
public NettyServerPermeateServerVisitorFilter(InternalNetworkServerPermeateServerRealServer internalNetworkServerPermeateServerRealServer, ChannelFlowAdapter channelFlowAdapter) {
|
||||
this.internalNetworkServerPermeateServerRealServer = internalNetworkServerPermeateServerRealServer;
|
||||
this.channelFlowAdapter = channelFlowAdapter;
|
||||
}
|
||||
|
||||
@ -32,6 +32,6 @@ public class NettyServerPermeateServerVisitorFilter extends DebugChannelInitiali
|
||||
protected void initChannel0(SocketChannel ch) throws Exception {
|
||||
ChannelPipeline pipeline = ch.pipeline();
|
||||
pipeline.addLast(new ChannelDuplexHandler());
|
||||
pipeline.addLast(new NettyServerPermeateServerVisitorHandler(internalNetworkPermeateRealServer, channelFlowAdapter));
|
||||
pipeline.addLast(new NettyServerPermeateServerVisitorHandler(internalNetworkServerPermeateServerRealServer, channelFlowAdapter));
|
||||
}
|
||||
}
|
||||
|
@ -7,10 +7,11 @@ import io.netty.channel.ChannelHandlerContext;
|
||||
import io.netty.channel.ChannelOption;
|
||||
import io.netty.channel.SimpleChannelInboundHandler;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.InternalNetworkPermeateRealServer;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.InternalNetworkServerPermeateServerRealServer;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.adapter.ChannelFlowAdapter;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.enums.ChannelFlowEnum;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.utils.ChannelAttributeKeyUtils;
|
||||
import org.framework.lazy.cloud.network.heartbeat.server.netty.InternalNetworkServerPermeateServerConf;
|
||||
import org.framework.lazy.cloud.network.heartbeat.server.netty.flow.ServerChannelFlow;
|
||||
import org.framework.lazy.cloud.network.heartbeat.server.netty.socket.NettyServerPermeateServerConnectRealSocket;
|
||||
|
||||
@ -18,12 +19,12 @@ import java.util.UUID;
|
||||
|
||||
@Slf4j
|
||||
public class NettyServerPermeateServerVisitorHandler extends SimpleChannelInboundHandler<ByteBuf> {
|
||||
private final InternalNetworkPermeateRealServer internalNetworkPermeateRealServer;
|
||||
private final InternalNetworkServerPermeateServerRealServer internalNetworkServerPermeateServerRealServer;
|
||||
private final ChannelFlowAdapter channelFlowAdapter;// 流量适配器
|
||||
// private final NettyChannelPool nettyChannelPool = new DefaultNettyChannelPool(10);
|
||||
|
||||
public NettyServerPermeateServerVisitorHandler(InternalNetworkPermeateRealServer internalNetworkPermeateRealServer, ChannelFlowAdapter channelFlowAdapter) {
|
||||
this.internalNetworkPermeateRealServer = internalNetworkPermeateRealServer;
|
||||
public NettyServerPermeateServerVisitorHandler(InternalNetworkServerPermeateServerRealServer internalNetworkServerPermeateServerRealServer, ChannelFlowAdapter channelFlowAdapter) {
|
||||
this.internalNetworkServerPermeateServerRealServer = internalNetworkServerPermeateServerRealServer;
|
||||
this.channelFlowAdapter = channelFlowAdapter;
|
||||
}
|
||||
|
||||
@ -42,9 +43,10 @@ public class NettyServerPermeateServerVisitorHandler extends SimpleChannelInboun
|
||||
|
||||
// 判断是否有可用的通道 如果没有创建新的通道
|
||||
|
||||
log.info("开始准备绑定渗透真实通道: {}", internalNetworkPermeateRealServer.getVisitorPort());
|
||||
log.info("开始准备绑定渗透真实通道: {}", internalNetworkServerPermeateServerRealServer.getVisitorPort());
|
||||
// 创建这是客户端通道池
|
||||
NettyServerPermeateServerConnectRealSocket.buildRealServer(internalNetworkPermeateRealServer, visitorChannel, visitorId);
|
||||
|
||||
NettyServerPermeateServerConnectRealSocket.buildRealServer(internalNetworkServerPermeateServerRealServer, visitorChannel, visitorId);
|
||||
|
||||
log.info("内网渗透 服务端访客端口连接成功了");
|
||||
|
||||
@ -56,7 +58,7 @@ public class NettyServerPermeateServerVisitorHandler extends SimpleChannelInboun
|
||||
|
||||
// 访客通道
|
||||
Channel visitorChannel = ctx.channel();
|
||||
Integer visitorPort = internalNetworkPermeateRealServer.getVisitorPort();
|
||||
Integer visitorPort = internalNetworkServerPermeateServerRealServer.getVisitorPort();
|
||||
byte[] bytes = new byte[buf.readableBytes()];
|
||||
buf.readBytes(bytes);
|
||||
// 获取客户端通道,而后进行数据下发
|
||||
|
@ -6,7 +6,7 @@ import io.netty.channel.*;
|
||||
import io.netty.channel.nio.NioEventLoopGroup;
|
||||
import io.netty.channel.socket.nio.NioSocketChannel;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.InternalNetworkPermeateRealServer;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.InternalNetworkServerPermeateServerRealServer;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.utils.ChannelAttributeKeyUtils;
|
||||
import org.framework.lazy.cloud.network.heartbeat.server.netty.filter.NettyServerPermeateServerRealFilter;
|
||||
|
||||
@ -22,23 +22,23 @@ public class NettyServerPermeateServerConnectRealSocket {
|
||||
/**
|
||||
* 连接真实服务
|
||||
*
|
||||
* @param internalNetworkPermeateRealServer 访客信息
|
||||
* @param internalNetworkServerPermeateServerRealServer 访客信息
|
||||
*/
|
||||
public static void buildRealServer(InternalNetworkPermeateRealServer internalNetworkPermeateRealServer,Channel visitorChannel ,String visitorId) {
|
||||
buildNewRealServer(internalNetworkPermeateRealServer,visitorChannel,visitorId);
|
||||
public static void buildRealServer(InternalNetworkServerPermeateServerRealServer internalNetworkServerPermeateServerRealServer, Channel visitorChannel , String visitorId) {
|
||||
buildNewRealServer(internalNetworkServerPermeateServerRealServer,visitorChannel,visitorId);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param internalNetworkPermeateRealServer 访客信息
|
||||
* @param internalNetworkServerPermeateServerRealServer 访客信息
|
||||
* @param visitorChannel
|
||||
* @param visitorId
|
||||
*/
|
||||
private static void buildNewRealServer(InternalNetworkPermeateRealServer internalNetworkPermeateRealServer,
|
||||
private static void buildNewRealServer(InternalNetworkServerPermeateServerRealServer internalNetworkServerPermeateServerRealServer,
|
||||
Channel visitorChannel, String visitorId) {
|
||||
try {
|
||||
String clientTargetIp = internalNetworkPermeateRealServer.getClientTargetIp();
|
||||
Integer clientTargetPort = internalNetworkPermeateRealServer.getClientTargetPort();
|
||||
Integer visitorPort = internalNetworkPermeateRealServer.getVisitorPort();
|
||||
String clientTargetIp = internalNetworkServerPermeateServerRealServer.getClientTargetIp();
|
||||
Integer clientTargetPort = internalNetworkServerPermeateServerRealServer.getClientTargetPort();
|
||||
Integer visitorPort = internalNetworkServerPermeateServerRealServer.getVisitorPort();
|
||||
Bootstrap bootstrap = new Bootstrap();
|
||||
bootstrap.group(eventLoopGroup).channel(NioSocketChannel.class)
|
||||
// 设置读缓冲区为2M
|
||||
@ -50,7 +50,7 @@ public class NettyServerPermeateServerConnectRealSocket {
|
||||
// .option(ChannelOption.SO_BACKLOG, 128)//务端接受连接的队列长度 默认128
|
||||
// .option(ChannelOption.RCVBUF_ALLOCATOR, new NettyRecvByteBufAllocator(1024 * 1024))//用于Channel分配接受Buffer的分配器 默认AdaptiveRecvByteBufAllocator.DEFAULT
|
||||
.option(ChannelOption.WRITE_BUFFER_WATER_MARK, new WriteBufferWaterMark(1024 * 1024, 1024 * 1024 * 2))
|
||||
.handler(new NettyServerPermeateServerRealFilter())
|
||||
.handler(new NettyServerPermeateServerRealFilter(internalNetworkServerPermeateServerRealServer))
|
||||
|
||||
;
|
||||
|
||||
@ -77,7 +77,7 @@ public class NettyServerPermeateServerConnectRealSocket {
|
||||
} else {
|
||||
log.error("服务端内网渗透 无法连接当前网络内的目标IP:【{}】,目标端口:【{}】", clientTargetIp, clientTargetPort);
|
||||
channelFuture.channel().eventLoop().schedule(() -> {
|
||||
buildNewRealServer(internalNetworkPermeateRealServer, visitorChannel, visitorId);
|
||||
buildNewRealServer(internalNetworkServerPermeateServerRealServer, visitorChannel, visitorId);
|
||||
}, 2, TimeUnit.SECONDS);
|
||||
}
|
||||
});
|
||||
|
@ -7,7 +7,7 @@ import io.netty.channel.nio.NioEventLoopGroup;
|
||||
import io.netty.channel.socket.nio.NioServerSocketChannel;
|
||||
import lombok.Getter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.InternalNetworkPermeateRealServer;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.InternalNetworkServerPermeateServerRealServer;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.NettyPermeateVisitorContext;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.NettyVisitorPortContext;
|
||||
import org.framework.lazy.cloud.network.heartbeat.common.adapter.ChannelFlowAdapter;
|
||||
@ -200,7 +200,7 @@ public class NettyServerPermeateServerConnectVisitorSocket {
|
||||
if (permeateVisitorPort == null) {
|
||||
throw new IllegalArgumentException("visitorPort must not null");
|
||||
}
|
||||
InternalNetworkPermeateRealServer internalNetworkPermeateRealServer = InternalNetworkPermeateRealServer
|
||||
InternalNetworkServerPermeateServerRealServer internalNetworkServerPermeateServerRealServer = InternalNetworkServerPermeateServerRealServer
|
||||
.builder()
|
||||
.clientTargetIp(clientTargetIp)
|
||||
.clientTargetPort(clientTargetPort)
|
||||
@ -208,7 +208,7 @@ public class NettyServerPermeateServerConnectVisitorSocket {
|
||||
.isSsl(isSsl)
|
||||
.build();
|
||||
|
||||
NettyServerPermeateServerVisitorFilter nettyServerPermeateServerVisitorFilter = new NettyServerPermeateServerVisitorFilter(internalNetworkPermeateRealServer, channelFlowAdapter);
|
||||
NettyServerPermeateServerVisitorFilter nettyServerPermeateServerVisitorFilter = new NettyServerPermeateServerVisitorFilter(internalNetworkServerPermeateServerRealServer, channelFlowAdapter);
|
||||
return new NettyServerPermeateServerConnectVisitorSocket(nettyServerPermeateServerVisitorFilter, permeateVisitorPort);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user