> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xray.cool/llms.txt
> Use this file to discover all available pages before exploring further.

# 基本介绍

> xray 是一款功能强大的安全评估工具，由多名经验丰富的一线安全从业者呕心打造而成

<img src="https://mintcdn.com/chaitin-1/NtCIc402TMVz6jL5/images/tools/xray/term.svg?fit=max&auto=format&n=NtCIc402TMVz6jL5&q=85&s=0f1fd0aafa0a83f2ccd5dcb4d871f24f" width="800" height="376" data-path="images/tools/xray/term.svg" />

<Warning>在使用该工具前，请确保已仔细阅读 [免责声明](https://github.com/chaitin/xray/blob/master/Disclaimer.md)，并已同意声明中的各条款。</Warning>

## 特性（characterization）

* **检测速度快**。发包速度快; 漏洞检测算法效率高。
* **支持范围广**。大至 OWASP Top 10 通用漏洞检测，小至各种 CMS 框架 POC，均可以支持。
* **代码质量高**。编写代码的人员素质高, 通过 Code Review、单元测试、集成测试等多层验证来提高代码可靠性。
* **高级可定制**。通过配置文件暴露了引擎的各种参数，通过修改配置文件可以客制化功能。
* **安全无威胁**。xray 定位为一款安全辅助评估工具，而不是攻击工具，内置的所有 payload 和 poc 均为无害化检查。

## 支持检测的漏洞类型（Vulnerability Types）

| 名称             | Key              | 说明                                                                              |
| -------------- | ---------------- | ------------------------------------------------------------------------------- |
| XSS漏洞检测        | `xss`            | 利用语义分析的方式检测XSS漏洞                                                                |
| SQL 注入检测       | `sqldet`         | 支持报错注入、布尔注入和时间盲注等                                                               |
| 命令/代码注入检测      | `cmd-injection`  | 支持 shell 命令注入、PHP 代码执行、模板注入等                                                    |
| 目录枚举           | `dirscan`        | 检测备份文件、临时文件、debug 页面、配置文件等10余类敏感路径和文件                                           |
| 路径穿越检测         | `path-traversal` | 支持常见平台和编码                                                                       |
| XML 实体注入检测     | `xxe`            | 支持有回显和反连平台检测                                                                    |
| poc 管理         | `phantasm`       | 默认内置部分常用的 poc，用户可以根据需要自行构建 poc 并运行。文档：[POC](https://docs.xray.cool/#/guide/poc) |
| 文件上传检测         | `upload`         | 支持常见的后端语言                                                                       |
| 弱口令检测          | `brute-force`    | 社区版支持检测 HTTP 基础认证和简易表单弱口令，内置常见用户名和密码字典                                          |
| jsonp 检测       | `jsonp`          | 检测包含敏感信息可以被跨域读取的 jsonp 接口                                                       |
| ssrf 检测        | `ssrf`           | ssrf 检测模块，支持常见的绕过技术和反连平台检测                                                      |
| 基线检查           | `baseline`       | 检测低 SSL 版本、缺失的或错误添加的 http 头等                                                    |
| 任意跳转检测         | `redirect`       | 支持 HTML meta 跳转、30x 跳转等                                                         |
| CRLF 注入        | `crlf-injection` | 检测 HTTP 头注入，支持 query、body 等位置的参数                                                |
| XStream漏洞检测    | `xstream`        | 检测XStream系列漏洞                                                                   |
| Struts2 系列漏洞检测 | `struts`         | 检测目标网站是否存在Struts2系列漏洞，包括s2-016、s2-032、s2-045、s2-059、s2-061等常见漏洞                 |
| Thinkphp系列漏洞检测 | `thinkphp`       | 检测ThinkPHP开发的网站的相关漏洞                                                            |
| shiro反序列化漏洞检测  | `shiro`          | 检测Shiro反序列化漏洞                                                                   |
| fastjson系列检测   | `fastjson`       | 检测fastjson系列漏洞                                                                  |

其中 POC 框架默认内置 Github 上贡献的 POC 和部分CT stack上收录的 POC，用户也可以根据需要自行构建 POC 并运行。

## 设计理念（Design Concept）

<AccordionGroup>
  <Accordion title="发最少的包做效果最好的探测">
    如果一个请求可以确信漏洞存在，那就发一个请求。如果两种漏洞环境可以用同一个 payload 探测出来，那就
    不要拆成两个。
  </Accordion>

  <Accordion title="允许一定程度上的误报来换取扫描速度的提升">
    漏洞检测工具无法面面俱到，在漏报和误报的选择上必然要选择误报。如果在使用中发现误报比较严重，可以进行反馈。
  </Accordion>

  <Accordion title="尽量不用时间盲注等机制检测漏洞">
    时间检测受影响因素太多且不可控，而且可能会影响其他插件的运行。因此除非必要（如 sql）请尽量使用与时间无关的
    payload。
  </Accordion>

  <Accordion title="尽量不使用盲打平台">
    如果一个漏洞能用回显检测就用回显检测，因为盲打平台增加了漏洞检测过程的不确定性和复杂性。
  </Accordion>

  <Accordion title="耗时操作谨慎处理">
    全局使用 Context 做管理，不会因为某个请求而导致全局卡死。
  </Accordion>
</AccordionGroup>

## 简易架构（simple architecture）

了解 xray 的整体架构可以更好的理解 cli 和配置文件的设置，方便大家更好的使用。

整体来看，扫描器这类工具大致都是由三部分组成：

1. 来源处理
2. 漏洞检测
3. 结果输出

### 来源处理（Source processing）

这一部分的功能是整个漏洞检测的入口，在 xray 中我们定义了 5 个入口，分别是

* HTTP 被动代理
* 简易爬虫
* 单个 URL
* URL列表的文件
* 单个原始 HTTP 请求文件

### 漏洞检测（Detection）

这一部分是引擎的核心功能，用于处理前面 来源处理 部分产生的标准化的请求。用户可以针对性的启用插件，配置扫描插件的参数，配置 HTTP 相关参数等。

### 结果输出（Output）

漏洞扫描和运行时的状态统称为结果输出，xray 定义了如下几种输出方式:

* Stdout (屏幕输出, 默认开启)
* JSON 文件输出
* HTML 报告输出
* Webhook 输出

在使用 xray 的过程中只要谨记这三个部分，所有的命令行用法就看起来很简单了。 接下来就让我们上路吧。
