记录黑客技术中优秀的内容,传播黑客文化,分享黑客技术精华

CVE-2019-18679 Squid 敏感信息泄漏

2020-05-25 09:42

0x1 前言

Squid是一个开源的高性能的代理缓存服务器。它接受来自客户端的请求并适当地处理这些请求。例如,如果一个人想下载一web页面,他请求Squid为他取得这个页面。Squid随之连接到远程服务器并向这个页面发出请求。然后,Squid显式地聚集数据到客户端机器,而且同时复制一份。当下一次有人需要同一页面时,Squid可以简单地从磁盘中读到它,那样数据迅即就会传输到客户机上。当前的Squid可以处理HTTP,FTP,GOPHER,SSL和WAIS等协议。

几个月之前,Synacktiv teams对Squid的源码进行审计,发现了几个漏洞,其中一个是在Digest authentication过程中触发的敏感信息泄漏漏洞。

0x2 漏洞复现

下载Squid有漏洞的版本,这里我选择了squid/3.5.28。
编译安装

./configure --enable-auth --enable-auth-digest
make -j4
make install

安装完成之后squid的主要目录结构如下:

/usr/local/squid/
├── sbin
│ └── squid //squid程序
├── libexec //辅助程序
│ ├── basic_smb_auth
│ └── digest_file_auth
└── etc
│ └── squid.conf //配置文件
└── logs //运行日志
├── access.log
└── cache.log

修改配置文件,增加一些内容开启digest auth。

auth_param digest program <path to program>
auth_param digest children 8
auth_param digest realm Access to Squid
auth_param digest nonce_garbage_interval 10 minutes
auth_param digest nonce_max_duration 45 minutes
auth_param digest nonce_max_count 100
auth_param digest nonce_strictness on

运行squid程序,通过squid代理,访问某个网站。返回header中nonce字段就是泄漏的内存地址。

curl -I -x 192.168.6.22:3128 https://xz.aliyun.com/

HTTP/1.1 407 Proxy Authentication Required
Server: squid/3.5.28
Mime-Version: 1.0
Date: Wed, 13 May 2020 13:28:15 GMT
Content-Type: text/html;charset=utf-8
Content-Length: 3526
X-Squid-Error: ERR_CACHE_ACCESS_DENIED 0
Vary: Accept-Language
Content-Language: en
Proxy-Authenticate: Digest realm="Access to Squid", nonce="7/W7XgAAAABwTjQEilUAAE+y+jgAAAAA", qop="auth", stale=false
X-Cache: MISS from test
Via: 1.1 test (squid/3.5.28)
Connection: keep-alive

0x3 漏洞分析

漏洞发生在fixHeader函数。nonce变量通过authenticateDigestNonceNew函数申请,authenticateDigestNonceNonceb64取出nonce变量的值,通过httpHeaderPutStrf发送给客户端。

authenticateDigestNonceNonceb64函数单纯的取出了nonce->key的值,重点看下nonce变量和nonce->key的赋值过程。

函数authenticateDigestNonceNew申请nonce变量

authDigestNonceEncode函数对nonce->noncedata的地址base64编码,赋值给nonce->key

最后response header中的nonce字段就是base64编码之后的nonce->noncedata的地址。

0x4 修复方式

nonce->noncedata的地址“编码/加密”方式从base64换成了md5。如果把x64地址全部用Md5计算一遍,还是可以通过暴力破解的方式,得到nonce->noncedata的地址。。。


知识来源: xz.aliyun.com/t/7771

阅读:21390 | 评论:0 | 标签:CVE

想收藏或者和大家分享这篇好文章→复制链接地址

“CVE-2019-18679 Squid 敏感信息泄漏”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

ADS

标签云