为什么我们需要反连平台(Why)

在进行漏洞检测的时候,我们会发现有很多的漏洞在执行了一些命令后,从表面上看没有任何回应的,比如命令执行漏洞,可以让目标执行读取文件的命令等,但由于前端并没有对应的展示,导致我们并不能知道文件是否成功读取,也就不知道命令是否执行成功。同时还有向经典的log4j rce,fastjson,ssrf等,都是没有回显的漏洞,那么当面对这类的漏洞,我们就需要一个反连平台,通过让目标执行pingcurl等命令,对反连平台发起请求,反连平台在接受到请求后,就能告诉我们,命令触发了,也就代表了漏洞存在了。 所以当我们想要比较完备的对一个系统进行测试,反连平台的利用一定是必不可少的。所以本文将着重讲述xray的反连平台如何部署搭建,配置文件如何修改,如何进行调试,并使用实际存在的漏洞进行举例。

视频教程(Video tutorial)

准备工作(Preliminary)

云服务器(Cloud server)

Ubuntu 20.04

安全策略:开启反连平台对外端口,开启53端口(UDP协议) 也就是修改安全组策略,将53端口开放,⚠️注意,协议类型一定要是UDP

rev-1.png

然后将需要对外开放的,部署反连平台的端口进行开放,比如8777,⚠️注意,该端口的协议类型是TCP

rev-2.png

解决53端口被systemd-resolve占用的问题

首先使用以下命令确认端口占用情况 sudo netstat -nultp 在确认被占用后,可以执行如下命令停用systemd-resolved sudo systemctl stop systemd-resolved 编辑resolved.conf sudo vim /etc/systemd/resolved.conf 将文件中的对应内容改为如下内容

[Resolve]
DNS=x.x.x.x         #取消注释,增加dns,此处的值可以填写你的云服务器公网IP
#FallbackDNS=
#Domains=
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#DNSOverTLS=no
#Cache=no-negative
DNSStubListener=no    #取消注释,把yes改为no
#ReadEtcHosts=yes

修改完成后运行如下命令即可解除占用 sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf

域名(Domain)

以下的ip请替换为准备好的云服务器的公网ip

  1. 仅配置如图所示的内容:

rev-3.png

不做其他任何变动,同时配置文件填写好,在启动后,支持http/rmi的反连,dns仅支持在使用dig或者nslookup时,指定IP解析的情况下,接收到请求。 也就是说,执行ping/curl命令时,反连平台并没有办法收到dns解析记录。 如果想要让反连平台的dns功能也正常工作,应进行如下操作:

开始部署(Deployments)

连接上远程服务器,处理完53端口占用问题,上传最新版的xray,并运行一下生成配置文件,反连平台部分按照以下进行修改

使用方式(Usage)

生效测试(Entry-into-force Testing)

在服务端启动一个xray reverse,应该能看到这样的界面:

rev-9.png

访问webUI后的链接即可访问到反连平台:

插件测试(Plugin Testing)

以下测试考虑到大部分人的情况,将一律采用客户端+服务端的形式进行测试,同时在客户端上挂一个burp进行抓包查看详细的发包细节

常见问题排查(Troubleshooting)

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