每次在临时使用xray进行扫描时,都没有配置比较麻烦的反连平台,有些需要外联的漏洞都没有扫到。这次想整个docker持久化的放那里,随时可以用,使用docker维护方便,部署也非常方便。本文记录下配置过程中碰到的一些知识点。
0x01 xray配置项
配置反连平台主要的配置项在reverse
项,主要有http
、dns
、client
三个大项和其他一些小项目构成。
先给出总的配置项,后面挨着对各个项目进行说明。
1 | reverse: |
db_file_path
xray文档解释得很清楚了,反连平台的数据库,指明一个地址就行了。
token
反连平台的认证密码
http
这个选项就是监听的端口,需要说明的是因为是docker化使用frp代理的端口,因此需要通过http头的X-Forwarded-For
字段读取远程的ip,否则是frp的docker容器的ip地址
dns
该选项配置DNS的相关信息,需要制定一个域名,用于反连平台的dns解析。后面的resolve选项,制定静态的dns解析,也就是反连平台作为服务器的解析规则。
client
该处是配置客户端的一些参数。**remote_server
要设置为false,当设置为true的时候,会作为客户端在启动的时候请求外联平台。**另外两个参数则是在外联平台显示的地址。
dns设置
在域名设置的时候,一般来说需要两个域名。一个作为主域名,来进行dnslog请求,另一个作为NS记录的解析转发域名。也可以使用DNS的胶水记录(glue record)用一个域名来转发,但需要DNS服务商的支持。
何为DNS胶水记录?
首先要了解NS记录,ns记录用于指定域名用哪个DNS服务器来解析,一般只能设置为域名的形式,如NS1.example.com。而在只有一个域名的情况下,NS需要指定域名,而DNS服务器还没有对外广播的时候,那么就陷入一个死循环,ns记录需要设置为域名,但是本域名还没有被DNS服务器所解析。举个例子,如a.com
设置的ns记录是ns.a.com
,我们就必须制定ns.a.com
的A记录,否则解析ns.a.com
又会去解析a.com
,所以该请求就要用到DNS胶水记录了。
胶水记录本身为DNS所支持的功能。指定ns解析的域名时,可以使用本DNS的A记录。
0x02 docker化
项目采用docker compose的形式,直接可以使用docker-compose -d
进行一键启动。基础镜像可以直接使用alpine,需要运行go程序,所以需要在Dockerfile
中添加如下命令才能正常运行
1 | RUN mkdir /lib64 && ln -s /lib/libc.musl-x86_64.so.1 /lib64/ld-linux-x86-64.so.2 |
使用frp进行转发需要设置depends_on
具体的项目结构如下:
1 | ├── Dockerfile |
Dockerfile:
1 | FROM alpine |
Docker-compose.yml
1 | version: "2" |
遗留问题
反连平台的http模块支持从http协议的header中取真实ip,但dns模块没有类似的功能,所以在用docker封装的反连平台中,RemoteAddr
均为docker中frp容器的地址,目前暂未想到解决办法,将就使用了。