Xray工具详细使用方法(基于macos)
下载地址:https://github.com/chaitin/xray/releases
官方教程:https://docs.xray.cool/#/tutorial/webscan_proxy
1、下载安装
英特尔cpu的mac直接下载xray_darwin_amd64.zip即可
解压后得到这样一个文件
在mac上找一个合适的地方新建名为xray的文件夹,然后把下载了的文件放进去
然后在该文件夹打开终端,运行此文件
1 |
|
第一次使用它会出现一个报错,只是说需要生成几个文件而已,它会自动生成的,可以看到文件夹里面多了几个文件,我们接着再运行一次,这次我们直接查看版本号
1 |
|
若正常显示版本号,且无报错,说明安装成功
2、基础功能使用
xray最基础的功能有两个。
一个是代理模式,这个其实就是我们可控的扫描,我们在浏览器上访问一个网站的页面,xray就会自动对当前页面进行测试,测试完成后自动暂停,等我们访问别的页面,xray再继续扫描。
一个是爬虫模式,这个其实就是全自动的扫描,我们不可控,就是不需要我们操作浏览器,直接一条命令把待测网址传给xray,然后xray就通过爬虫的方式,对这个网址进行爬虫,将爬取到的所有页面都进行扫描测试,最后生成报告。(注意,此方法看上去很方便,但是实际上精准度不高,会有很多的遗漏或错误,并且由于全自动不可控,故很可能被waf之类的拦截)
1)代理模式
安装ca证书
这个是必须要安装的,和burp安装的时候需要ca证书相同,这里根据官方教程,直接把ca证书安装在操作系统上即可
1 |
|
运行此命令,生成ca证书
可以看到会在文件夹里生成两个文件
然后双击ca.crt就会自动弹出系统证书管理软件
询问是否添加证书,点击添加即可
然后在搜索框搜索x-ray
双击搜索出来的这条记录
将这里的SSL这个选项设为“始终信任”
然后红色提示变为蓝色就说明完成了
为FireFox 浏览器单独设置ca证书
若你的浏览器是chrome之类的,就不需要这一步的操作了,此操作是单独针对 FireFox 浏览器的
如图进入 FireFox 浏览器的设置,“隐私与安全”选项的下面有一个“查看证书”按钮
选择“导入”,然后将刚刚生成的ca.crt文件导入进来即可(注意导入时弹出的确认框需要将两个复选框都钩上)
配置代理
我这里用的 FireFox 浏览器
因为之前配置burp的时候在浏览器上装了这个插件,所以就直接用了,如果没装的自己去下载安装
配置其实很简单,就是新建一个情景模式,我命名为xray,然后可以直接像我图上这样配置,注意代理端口号是可以随意更改的,只要不和电脑上正在用的端口号冲突即可
使用
1 |
|
如图,使用这个命令即可,注意这里的地址和端口就是我们刚刚在 FireFox 浏览器配置的,必须相同!
接下来,只需要在 FireFox 浏览器上访问你想要扫描的网站即可,xray就会自动在后面对当前访问的页面进行扫描
解释
这里需要解释一下代理模式到底是什么原理
即浏览器所有发送的请求,都经过xray,从xray发到目标服务器,所以xray会获得到请求包,然后对这些请求包进行扫描。
2)爬虫模式
这个模式使用很简单,直接输入一条命令即可
1 |
|
解释一下命令后面的参数,带了一个你要扫描的网址,然后指定输出报告到xray-crawler-testphp.html
接下来就坐着等报告了,非常方便无脑,但需要注意,如果遇到js渲染的页面就不能处理
相关配置:
在这里可以配置爬虫的相关信息
用法默认都注释了,这里不再赘述
3、进阶功能
1)xray与burp联动
介绍
这个功能其实是基于之前讲的基础功能里面的代理模式的进阶
代理模式是有三层关系:浏览器——xray——服务器
而该模式其实就是增加一层关系,把burp放到其中,有两种放法
1⃣️把burp放到浏览器和xray之间变成这样:浏览器——burp——xray——服务器
这样的好处是什么?我们可以修改浏览器请求,让我们的请求更加可控,这样发送到xray的请求就更准确
2⃣️把burp放到xray和服务器之间变成这样:浏览器——xray——burp——服务器
这样的好处是什么?xray测试时发送的所有请求都先被burp拦截住,当然一般情况下xray发送的请求有上千个,我们不可能一个个拦截放行,所以更多的时候用的是burp的history功能,它可以记录所有经过burp的请求,然后我们就可以直接对可疑请求在burp上研究了
使用方法1
1⃣️浏览器——burp——xray——服务器
浏览器上的代理不用xray的了,用burp的代理,因为浏览器的包发到burp的
然后在burp上设置顶级代理,就是让burp将包发送到上层的代理
然后让xray监听1112端口即可
1 |
|
接下来就浏览器访问要扫描的网站即可
使用方法2
2⃣️浏览器——xray——burp——服务器
在xray的config配置里设置代理,这个代理地址就是burp的代理地址
然后启动xray
1 |
|
这个端口就是之前我们用代理模式的时候设置的1112
然后浏览器上也设置一下,和之前的代理模式设置的一样
这样就设置完成了
梳理一下整个过程:
浏览器上将请求通过1112端口发送到xray上,因为xray正在监听1112端口,然后xray将请求发送到8080端口,然后burp正在监听8080端口,所以burp就收到了xray的请求
演示
1⃣️浏览器——burp——xray——服务器
可以看到burp的请求都到xray里面了
2⃣️浏览器——xray——burp——服务器
可以看到,xray所有的请求都在burp的history里面显示出来了
2)xray测试DVWA靶场
DVWA靶场的搭建过程这里就不展示了,我是在windows虚拟机里面跑phpstudy搭建的,有问题直接百度解决,如果嫌麻烦,直接用buuctf里面的在线靶场,一键运行(DVWA账户admin密码password)
注:漏洞难度选择low(其他难度自测,这里不做演示)
1.Brute Force爆破漏洞
这里使用的是xray的代理模式,监听1112端口
1 |
|
然后账户密码随便输一下,点击Login按钮,xray就开始扫描了
可以看到总共有4个漏洞,第一个是暴力破解,验证一下(看不懂漏洞名称可以看下面“4、参数详情-指定漏洞插件”里面写的)
账户admin密码password成功登录
再验证第四个sql注入
存在sql注入
2.Command Injection命令注入漏洞
验证一下cmd-injection漏洞
可以看到得到了正确的计算结果,说明存在命令注入漏洞
3.csrf漏洞
扫描不出来
4.文件包含漏洞
扫描不出来
5.文件上传漏洞
随便选一张图片上传上去
检测出了文件上传漏洞
按它的payload准备一个恶意文件
上传成功
访问成功,说明存在漏洞
6.Insecure CAPTCHA不安全验证机制漏洞
扫描不出来
7.SQL注入漏洞
验证一下
确实存在sql注入
8.sql注入漏洞(盲注)
扫不出来
9.DOM型XSS漏洞
验证一下
因为这里没有输入框只有选择框,但它是get请求,所以直接改在url里面即可
漏洞存在
10.反射型XSS漏洞
利用成功
11.存储型XSS漏洞
利用成功
3)xray与crawlergo联动
xray的爬虫模式是先通过我们提供的一个域名进行爬虫,爬取这个域名下面的其他URL,然后对这些URL进行扫描。xray的强项不是爬虫,所以如果我们利用更强大的爬虫工具为xray提供更多的URL,那么扫描到的漏洞也会更多,所以我们引入crawlergo这个工具
关于这个工具的安装和使用,可以参考我的这篇文章:xxxxxxxxxx
联动:
启动xray进行监听:
1 |
|
启动crawlergo爬取URL:
1 |
|
这样设置后,crawlergo爬取到的url就会发送到xray上了
4)xray与rad联动
rad其实和crawlergo的作用是一样的,我也不知道他们两个谁的效果更好,我看了rad的最新版是2021年更新的,而crawlergo的最新版是2022年更新的,但在xray的官方文档里面,之前写的是xray与crawlergo联动,现在改成了xray与rad联动。我比较了一下,发现rad可以对需要登录的网址进行登录后爬虫,这个我在crawlergo的文档里好像没看到,所以我们还是也学一下rad
rad下载地址:https://github.com/chaitin/rad/releases
下载后和crawlergo一样,在电脑上找一个文件夹存放即可
然后终端进入这个文件夹,执行以下命令,以获取配置文件:
1 |
|
注意:电脑里面需要安装chrome浏览器。可以看到上图中第一个INFO就是它自动找到了电脑里面Chrome浏览器的路径。
如下图,生成了配置文件
查看rad自带的帮助信息:
1 |
|
详细的rad使用方法这里不描述了,可以看xray官方文档里面与rad联动的那一部分,这里详细讲一下如果让rad爬取需要登录的网站
输入以下命令:
1 |
|
注:这个网址是我在虚拟机中搭建的DVWA靶场,因为这个靶场需要登录才能用,所以这里以这个靶场为例。
运行命令,会自动打开chrome
输入账号密码登录后,返回命令行敲回车即可
这就是开始爬取了
⚠️rad打开浏览器默认是不加载图片的,可以看到刚刚上面访问DVWA靶场的时候,它的logo都没显示。但是如果某个网站登录是有验证码的,那么就需要登录的时候,在rad的配置文件中开启图片显示功能,这样才能显示出验证码
4、参数详情
查看xray的help提示信息
1)显示log信息
参数:
1 |
|
使用方法:
1 |
|
⚠️注意,这个参数一定要跟在二进制程序后面,不能写在webscan后面
2)指定漏洞插件
内置插件:
- xss检测——xss
- SQL注入检测——sqldet
- 命令/代码注入检测——cmd-injection
- 目录枚举——dirscan
- 路径穿越检测——path-traversal
- XML实体注入检测——xxe
- poc管理——phantasm
- 文件上传检测——upload
- 弱口令爆破检测——brute-force
- jsonp检测——jsonp
- ssrf检测——ssrf
- 基线检查——baseline(检测低SSL版本、缺失的或错误添加的http头等)
- 任意跳转检测——redirect
- CRLF注入——crlf-injection
5、零基础编写自己的poc
1)介绍
如果自己用python完整的写一个poc,除非自己之前有框架,不然写一个还是比较花时间的,但xray这里直接给我们一个接口,我们只需要写几行代码就能完成一个poc
2)配置环境
我这里用的是vscode
安装yaml插件,然后进入yaml设置里
打开这个settings.json文件,将里面的内容改成如下内容:
1 |
|
新建一个名为poc-yaml-ex.yml的文件(文件名格式必须为fingerprint-yaml-*.yml或poc-yaml-*.yml),若出现如下图所示的小字,说明配置成功
3)最简单的poc
1 |
|
一共有五条内容,分别为名字(name)、传输方式(transport)、规则(rules)、表达式(expression)、详情(detail)
名字——自定义
传输方式——tcp/udp/http
规则——第一条规则r1是请求方法为get请求,请求路径为”/“的请求,规则的结果是若返回的响应码为200则说明这个相应是我们想要的
表达式——这个就是放规则的,这里只有一条规则r1,如果有两条,有可能我们只需要其中一条成立即可,所以需要做表达式来设定
详情——显示提示结果
执行:(注意,poc文件需要放在xray的目录下)
1 |
|
我在浏览器上访问http://example.com/这个网站,因为是正常访问,响应码是200,所以就会返回这个漏洞信息。
4)进阶的poc
详见xray官方文档https://docs.xray.cool/#/README
当然,如果poc还不懂,或者xray的使用还不懂,可以看官方的这个视频教学
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!