前言
工作需要,记录📝学习,先从 Arbitrary File Read Vulnerabilities 分析吧。
准备工作
- Suricata 7.0.8
- 熟悉 pcre、任意文件读取漏洞的原理
攻
带入攻击者视角,目前有一个任意文件读取漏洞的利用点,他会去读哪些东西(直白点就是攻击者字典中的内容)?
- 利用绝对路径 or 相对路径,如
../
、./
,以及它的编码形式,如%2e%2e%2f
、%252e%252e%252f
(绕过防护)去读取网站源码文件,目的是去读到关键性的信息(数据库配置文件、密钥、甚至Passwd)。 - 读取服务器配置文件,如
/etc/passwd
、/etc/hosts
、/root/.bash_history
等等这样的,若后端开发语言为Java会去读,若为PHP毫无疑问会去读php.ini
等等。 - 若后端语言为PHP,必然会测的就是伪协议,例如
file://
、php://
、zip://
、http://
等等,后端语言为Java的话会去测测jar
等等。 - 还有一些在字典中高频出现的后缀
.jar
,.tar.gz
,.zip
等等。 - 很火的云安全,云与容器相关,例如AWS元数据、容器环境信息。
好多好多Payload,这里把它泛化为四大类–>路径穿越及绕过技巧、读取特定的敏感文件(OS特定的、开发框架特定的、云与容器相关的等等)、伪协议与特殊协议、文件名后缀。
守
设计好一个yaml规则配置文件如下
patterns:
paths:
- (?:(?:%2e|%252e|\.\.|\.){1,}(?:%2f|%252f|\/|\\){1,}){1,2}
- (?:\\x[0-9a-f]{2}){1,2}
files:
os:
- \/etc\/passwd
- \\boot\.ini
- \/\.ssh\/id_rsa
- \/\.bash_history
- \/etc\/hosts
framework:
- \/etc\/php\/php\.ini
- web\.xml
- \/etc\/nginx\/nginx\.conf
protocols:
- (?:file:\/\/|php:\/\/|zip:\/\/|http:\/\/)
extensions:
- [^&]*\.(?:tar\.gz|jar|db|bak)