端口复用后门
副标题[/!--empirenews.page--]
目录
端口复用后门一. 端口复用1.1 端口复用场景条件
1.2 类型1.2.1 端口重定向即本地建立2个套接字sock1、sock2,sock1监听80端口,sock2监听其它端口。当有80的连接时,sock1将接收到的数据进行判断,如果是http数据则处理,如果是其它数据则将其转发到sock2的端口。 1.2.2 端口复用在本地建立一个监听和本地开放一样的端口如80端口,当有连接来到时,判断是否是自己的数据包,如果是则处理数据,否则不处理,交给源程序。 1.3 原理端口重定向只是利用了本地环回地址127.0.0.1转发接收外来数据,端口复用只是利用了socket的相关特性。 示例代码: s = socket(AF_INET,SOCK_STREAM,0); setsockopt(s,SOL_SOCKET,SO_REUSEADDR,&buf,1)); server.sin_family=AF_INET; server.sin_port=htons(80); server.sin_addr.s_addr=htonl(“127.0.0.1”); 在端口复用技术中最重要的一个函数是setsockopt(),这个函数就决定了端口的重绑定问题。 setsockopt()函数,用于任意类型、任意状态套接口的设置选项值。尽管在不同协议层上存在选项,但本函数仅定义了最高的“套接口”层次上的选项。
我们这里要使用的是socket中的SO_REUSEADDR,下面是它的解释。
一般地,我们需要设置socket为非阻塞模式,缘由如果我们是阻塞模式,有可能会导致原有占用端口服务无法使用或自身程序无法使用,由此可见,端口复用使用非阻塞模式是比较保险的。 然而理论事实是需要检验的,当有些端口设置非阻塞时,缘由它的数据传输连续性,可能会导致数据接收异常或者无法接收到数据情况,非阻塞对于短暂型连接影响不大,但对持久性连接可能会有影响,比如3389端口的转发复用,所以使用非阻塞需要视端口情况而定。 此方法目前对Apache和IIS5.0及以下版本有效 1.3.1 利用端口重定向目的: 原先存在80端口,希望22,23,3389复用80端口。 原理:
首先外部IP(192.168.2.1)连接本地IP(192.168.1.1)的80端口,由于本地IP(192.168.1.1)端口复用绑定了80端口,所以复用绑定端口监听到了外部IP(192.168.2.1)地址流量,判断是否为HTTP流量,如果是则发送回本地80端口,否则本地IP(192.168.1.1)地址连接本地ip(127.0.0.1)的3389端口,从本地IP(127.0.0.1)端口3389获取到的流量由本地IP(192.168.1.1)地址发送到外部IP(192.168.2.1)地址上,这个过程就完成了整个端口复用重定向。 (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |