为什么我们需要反连平台(Why)
在进行漏洞检测的时候,我们会发现有很多的漏洞在执行了一些命令后,从表面上看没有任何回应的,比如命令执行漏洞,可以让目标执行读取文件的命令等,但由于前端并没有对应的展示,导致我们并不能知道文件是否成功读取,也就不知道命令是否执行成功。同时还有向经典的log4j rce,fastjson,ssrf等,都是没有回显的漏洞,那么当面对这类的漏洞,我们就需要一个反连平台,通过让目标执行ping
、curl
等命令,对反连平台发起请求,反连平台在接受到请求后,就能告诉我们,命令触发了,也就代表了漏洞存在了。
所以当我们想要比较完备的对一个系统进行测试,反连平台的利用一定是必不可少的。所以本文将着重讲述xray的反连平台如何部署搭建,配置文件如何修改,如何进行调试,并使用实际存在的漏洞进行举例。
视频教程(Video tutorial)
准备工作(Preliminary)
云服务器(Cloud server)
Ubuntu 20.04
安全策略:开启反连平台对外端口,开启53端口(UDP协议) 也就是修改安全组策略,将53端口开放,⚠️注意,协议类型一定要是UDP

解决53端口被systemd-resolve占用的问题
首先使用以下命令确认端口占用情况sudo netstat -nultp
在确认被占用后,可以执行如下命令停用systemd-resolved
sudo systemctl stop systemd-resolved
编辑resolved.conf
sudo vim /etc/systemd/resolved.conf
将文件中的对应内容改为如下内容
sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
域名(Domain)
以下的ip请替换为准备好的云服务器的公网ip- 仅配置如图所示的内容:

腾讯云
腾讯云
- 自定义DNS Host

- 修改域名的DNS解析

- 修改完成后,需要10分钟到几小时不等的时间生效,时间越久,部署效果越好
阿里云
阿里云
- 自定义DNS Host


- 修改域名的DNS解析

- 修改完成后,需要10分钟到几小时不等的时间生效,时间越久,部署效果越好
开始部署(Deployments)
连接上远程服务器,处理完53端口占用问题,上传最新版的xray,并运行一下生成配置文件,反连平台部分按照以下进行修改独立远程服务端
独立远程服务端
以下配置文件中的ip请替换为云服务器对应的公网ip
非独立远程服务端
非独立远程服务端
以下的ip请替换为准备好的云服务器的公网ip
当前版本非独立远程服务端的部署,在添加了DNS后,被动代理模式会出现无法扫描的BUG,建议暂时使用独立远程服务端进行部署
使用方式(Usage)
独立远程服务端
独立远程服务端
- 将xray放置于存在公网ip的服务器上,并按照上述进行配置。
- 安装screen,并使用screen创建一个新的视窗,并将反连平台运行在新的视窗中,这样在退出ssh连接后,反连平台将一直保持运行,操作如下
- 这样将进入到名为reverse的视窗中,执行
./xray reverse
启动反连平台,可以输入exit退出视窗 - 使用screen -ls可以查看当前存在的视窗,并使用
screen -r {{id}}
进入视窗 - 然后在本地将客户端的配置配置好,启动客户端即可。
非独立远程服务端
非独立远程服务端
- 将xray放置于存在公网ip的服务器上,并按照上述进行配置。
- 配置完成后,直接在该服务器上进行操作,反连将可以正常运行
生效测试(Entry-into-force Testing)
在服务端启动一个xray reverse,应该能看到这样的界面:
HTTP
HTTP





DNS
DNS






插件测试(Plugin Testing)
以下测试考虑到大部分人的情况,将一律采用客户端+服务端的形式进行测试,同时在客户端上挂一个burp进行抓包查看详细的发包细节log4j
log4j
靶场:vulfocus上的log4j的第一个靶场做测试
命令:
该插件默认使用dns进行检测,如果想不用dns进行检测,可以在配置文件中,将domain置空,同时将dns_server_ip置空。

./xray_darwin_arm64 ws --poc poc-go-apache-log4j2-rce --basic [http://123.58.224.8:32750](http://123.58.224.8:32750)




fastjson
fastjson
靶场:vulfocus的fastjson 代码执行 (CNVD-2019-22238)
命令:
./xray_darwin_arm64 ws --plug fastjson --url [http://123.58.224.8:52772](http://123.58.224.8:52772)

常见问题排查(Troubleshooting)
- 本地客户端报错,连接不上服务端的反连平台
- 请检查客户端与服务端是否可以正常通信
- 请检查客户端与服务端的token是否一致
- 请检查客户端与服务端使用的xray版本是否一致
- 请检查客户端与服务端所写的端口是否一致
- 请检查服务端存在的云服务器的对应端口是否开放(安全组策略,iptables,端口占用等)
- DNS反连无法使用
- 请检查域名配置是否正确,是否已经设置dns host,自定义dns解析服务器
- 请检查客户端与服务端的配置文件中的域名填写正确