2017.W43 - L(R)FI
> 最近没有爱 上班都在玩 OSCP
## 前言 ##
PHP 是最好的语言 没有之一[1]
## 内容 ##
在 CWE 的分类中 (98)[2] 介绍了 不正确档案引用 的类别
在 PHP 跟其他 script language 中 可以动态引用外部档案当作是函式库
像是 include('library.php') 这就是 PHP 的其中一种写法
而比较动态的写法 可能会透过外部参数来决定引用那个档案
常见的做法是用在多国语的环境下 像是 http://example.com?lang=zh_tw
底层的引用方式就可能会是 include(_GET["lang"] . ".php.inc") [3]
然而这种解法就存在 LFI / RFI 的潜在漏洞
这类型的问题 取决于执行 Web 的权限来判断影响的程度
假若是 root 执行的 web service 就可以透过 LFI 来读取 /etc/shadow 的内容
或是 RFI [4] 来扩大攻击伤害
这类型的问题都会被归类在 CWE-20 Improper Input Validation [5]
也就是不正确处理使用者输入所照成的问题
这类型的问题包含常见的 XSS、Command Injection 等
[1]: http://lmgtfy.com/?q=php+%E6%98%AF%E6%9C%80%E5%A5%BD%E7%9A%84%E8%AA%9E%E8%A8%80
[2]: https://cwe.mitre.org/data/definitions/98.html
[3]: https://www.owasp.org/index.php/Testing_for_Remote_File_Inclusion
[4]: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-2774
[5]: https://cwe.mitre.org/data/definitions/20.html