Xray 扫描器
介绍
原理
安装
Github: https://github.com/chaitin/xray/releases (国外速度快)
国内用户可以从 https://download.xray.cool/ 进行下载,速度更快。
配置
使用
官方文档:https://docs.xray.cool/#/tutorial/prepare
下载 unzip 解压后直接运行
./xray_linux_amd64 version 即可查看 xray 的版本号
代理模式
生成 ca 证书
运行 ./xray_darwin_amd64 genca 即可生成 ca 证书,保存为 ca.crt 和 ca.key 两个文件。
本命令只需要第一次使用的时候运行即可,如果文件已经存在再次运行会报错,需要先删除本地的 ca.crt 和 ca.key 文件。
安装 ca 证书
sudo cp ca.crt /usr/local/share/ca-certificates/xray.crt
sudo update-ca-certificates
启动代理
第一次启动 xray 之后,当前目录会生成 config.yml 文件,选择文件编辑器打开,并按照下方说明修改。
mitm 中 restriction 中 hostname_allowed 增加 testphp.vulnweb.com
mitm:
...
restriction:
hostname_allowed: # 允许访问的 Hostname,支持格式如 t.com、*.t.com、1.1.1.1、1.1.1.1/24、1.1-4.1.1-8
- testphp.vulnweb.com
因为我们的测试目标站就是 http://testphp.vulnweb.com,增加这个过滤之后,xray 将只会扫描该站的流量,避免扫描到非授权目标站点。
对于配置文件中的更多解读,请参考文档中的 配置 章节。
设定漏洞扫描结果的输出,这里选择使用 html 文件输出,所以命令行后面要增加 --html-output xray-testphp.html。
./xray_linux_amd64 webscan --listen 127.0.0.1:7777 --html-output xray-testphp.html
浏览器配置代理
使用浏览器访问 http://testphp.vulnweb.com/
总结
常见故障
网页上出现 xray 的报错信息 Proxy Failed
xray 在代理扫描的时候,需要同时和客户端到和服务端建立连接,如果 xray 和服务器端连接失败,就会返回这样一个错误页面给客户端,常见的错误解释如下
- timeout awaiting response 等待代理返回时候超时,请检查网络情况,是否可以连通,如果是偶尔的超时,可以忽略,重试即可。
- connection reset by peer 连接被中断,请检查对方是否有 waf,ip 是否被拉黑,如果是国外的目标,可能是网络不稳定的原因。
- certificate has expired or is not yet valid 和 certificate signed by unknown authority 等 x509 开头的报错信息,请检查服务端的 ssl 证书配置是否正确,对于自签名证书等问题,可以选择不校验证书,将配置文件中的 tls_skip_verify 改为 true 即可。
- dial i/o timeout 这往往是连接目标网站时间过长导致的,前面指南中的 https://testphp.vulnweb.com 就是一个国外的网站,国内访问容易出现超时。增大配置文件中的 http -> dial_timeout 可以缓解这个问题。
- dial tcp: lookup xxx on xxx:53: no such host 要访问的地址的域名,xray 解析失败。
最常见原因是域名拼写错误,比如 example.xray.cool 写错为 exmple.xray.cool。
在 MacOS 上,如果需要 VPN 才可以访问和解析的域名,在使用 xray 作为代理后,即使 VPN 连接了也无法解析。这是因为 xray 使用了跨平台编译技术,没有使用 MacOS 的 sdk,无法解析这种域名,普通域名不受影响。如果十分依赖这种场景,可以提交反馈。