Nginx 文件名逻辑漏洞 CVE-2013-4547
影响范围: Nginx 0.8.41 - 1.4.3 Nginx 1.5.0 - 1.5.7 漏洞类型:任意文件解析 操作系统限制:无 配置要求:默认配置 漏洞利用:远程命令执行 利用原理:在受影响的版本中,Nginx 读取路径中的字符时候,遇到空格会认为路径部分结束,接下来是 HTTP 协议版本,如果在空格后面接着一个空字节(0x00),Nginx 错误地跳过正常终止逻辑,允许非法字符序列进入后续路径处理。攻击者修改文件后缀,末尾有一个空格,Nginx 接收到请求后在磁盘找到相应文件后认为请求合法,但完整路径是/uploadfiles/文件名.gif[0x20] [0x00].php,配置文件 conf 正则匹配到.php,就会交给后端 FastCGI 处理,由于 FastCGI 协议和 PHP 解析器是基于 C 语言字符串处理,C 语言中的 0x00 代表字符串结束,PHP 实际处理的文件则是/uploadfiles/文件名.gif,因为该文件已经被 Nginx 指定文件后缀,PHP 会忽略其 gif 后缀,直接解析其中的 PHP 代码,导致远程代码执行 漏洞复现:现成的 ...
Nginx 整数溢出漏洞 CVE-2017-7529
影响范围 Nginx 0.5.6 - 1.13.2 漏洞类型整数溢出 操作系统限制无 配置要求Nginx 开启了缓存功能 漏洞利用信息泄露 利用原理Nginx 处理 Range 请求的模块计算请求范围时候使用了 64 位有符号整数,在计算多段请求时候,Nginx 会计算总的返回长度,攻击者通过给出接近 64 位整数机选大数字,两个负数相减或正数相加,结果超过 64 位整数能表示的最大范围,这个数值在计算机内部发生了溢出。当 Nginx 开启了缓存,存文件的格式不是纯文本,而是包含 KEY、过期时间、后端服务器信息,后端返回的原始头信息,以及真正的网页内容,由于漏洞导致的整数溢出(没做边界检验),攻击者构造负数起始位置,在通过整数溢出使得请求变得合理(大整数与负数相加后整数溢出变成极小的数,极小的数小于实际文件总长,使服务器认为请求合理),Nginx 内部计算的原始读取位置发生了偏移,可以让出错的指针刚好落到缓存头区域,进而读到缓存的内容 漏洞复现现成的 vulhub 来拉取镜像 123456#下载vulhub源代码git clone https://github.com/vu...