报告编号:B6-2019-110702

报告来源:360-CERT

报告作者:360-CERT

更新日期:2019-11-07

0x00 背景描述

2019年8月22日,趋势科技研究团队发布了编号为CVE-2019-12527的Squid代理服务器缓冲区溢出漏洞分析报告,攻击者可以在无需身份验证的情况下构造数据包利用此漏洞造成远程代码执行。

360CERT已发布预警:https://cert.360.cn/warning/detail?id=52b94287c9f7454c18ed7c9be3a17f01

该报告是对此漏洞的利用分析。

0x01 环境配置

测试环境配置:

Linux osboxes 4.10.0-28-generic #32~16.04.2-Ubuntu SMP Thu Jul 20 10:19:48 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

测试版本下载地址:

http://www.squid-cache.org/Versions/v4/squid-4.7.tar.gz

编译:

安装后地址:

/usr/local/squid/sbin/squid

在配置文件/usr/local/squid/etc/squid.conf最后添加:

0x02 漏洞利用

漏洞点在: src/HttpHeader.cc:

decodeAuthToken数组用于存放base解密后的数据,并且没有边界判断,所以造成溢出。

而decodeAuthToken定义成静态变量,位于程序的.bss区,可以覆盖到其他全局变量,造成崩溃,但崩溃会重新起一个进程,主进程并不会崩溃。

崩溃现场:

从图中我们可以看出,我们可以call一个地址,并且rdi 可控,相当于我们可以执行带一个参数的函数。查看程序的保护措施:

并未开启随机化,所以got和plt的地址固定,可以通过调用system@plt来执行命令,在rdi指向的地址0xc66488上填充要执行的命令。

decodeAuthToken起始位置:0xc64140 -> this=0xc66488 偏移为:0x2348

0x03 利用脚本

部分poc脚本(该poc仅供研究):

gdb 调试脚本:

0x04 利用效果

运行效果图:

得到的是一个nobody权限

笔者在测试环境中编译Squid默认不开启随机化,但在高版本系统中会默认开启随机化。并且不同条件下编译,生成的程序地址、got和plt地址不同,所以该poc不能通用,但利用思路可以借鉴。

0x05 时间线

2019-07-12 Squid官方发布安全公告

2019-08-22 趋势科技发布研究报告

2019-08-23 360CERT发布漏洞预警

2019-11-07 360CERT发布漏洞利用分析

0x06 参考链接

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

安装squid_CVE-2019-12527:Squid缓冲区溢出漏洞利用分析相关推荐

  1. 分区起始位置参数溢出_IIS6.0缓冲区溢出漏洞深度分析(CVE-2017-7269)

    漏洞描述 开启WebDAV服务的IIS6.0存在缓冲区溢出漏洞可以任意代码执行,目前针对 Windows Server 2003 R2 可以稳定利用.在WebDAV服务的ScStoragePathFr ...

  2. 对 Viper RGB 驱动多个缓冲区溢出漏洞的分析

    0x01 漏洞信息 漏洞类型:基于堆栈的缓冲区溢出[ CWE-121 ],暴露的IOCTL(访问控制不足)[ CWE-782 ] 影响:代码执行允许特权提升 远程可利用:否 本地可利用:是 CVE名称 ...

  3. 超星阅读器ActiveX缓冲区溢出漏洞利用-LoadPage

    超星阅读器4.0漏洞利用过程: 1.由于是缓冲区溢出,最开始我想到的利用方式"jmp esp" 0---------------------256---------260----- ...

  4. 缓冲区溢出漏洞利用--调用白板Messagebox函数两次

    //******有漏洞的程序************* //漏洞函数VerifyPassword 由于文件大小是可变的 但是szBuffer大小只有50 当文件大小大于50的 //时候就会产生缓冲区溢 ...

  5. CVE-2022-0185 价值$3w的 File System Context 内核整数溢出漏洞利用分析

    文章目录 1. 漏洞发现 2. 漏洞分析 3. 漏洞利用方法1-任意写篡改 `modprobe_path` 3-1 泄露内核基址 3-2 任意地址写思路 3-3 FUSE 页错误处理 3-4 完整利用 ...

  6. 缓冲区溢出漏洞攻击——Shellcode编写

    一.实验内容 利用一个程序漏洞,编写shellcode,达成效果:蹦出对话框,显示"You have been hacked!(by JWM)" 二.实验原理 因为输入了过长的字符 ...

  7. kali+php+缓冲区溢出,CVE-2018-18708:Tenda路由器缓冲区溢出漏洞分析

    CVE-2018-18708:Tenda路由器缓冲区溢出漏洞分析 摘要:本文通过对一个ARM路由器缓冲区溢出漏洞的分析,实践逆向数据流跟踪的思路与方法. 假设读者:了解ARM指令集基础知识.了解栈溢出 ...

  8. 20165232 缓冲区溢出漏洞实验

    缓冲区溢出漏洞实验 实验准备 实验环境需要32位的Linux系统,需要下载安装一些用于编译 32 位 C 程序的软件包,代码如下: $ sudo apt-get update$ sudo apt-ge ...

  9. CVE-2021-3156:Sudo 堆缓冲区溢出漏洞(有poc,exp待更新)

    漏洞详情 CVE-2021-3156: 缓冲区溢出漏洞 在sudo解析命令行参数的方式中发现了基于堆的缓冲区溢出.任何本地用户(普通用户和系统用户,sudoer和非sudoers)都可以利用此漏洞,而 ...

最新文章

  1. pytorch bert预训练模型的加载地址
  2. 数据包skb_buf(SKB才是套接字的缓冲区)
  3. 如何判断当前主机是物理机还是虚拟机
  4. easy_runner一个简单的压测程序
  5. 文巾解题 198. 打家劫舍
  6. VTK:Utilities之PiecewiseFunction
  7. mysql 导出表数据到另一张表_yz-Mysql数据库中一个表中的数据导出来到另外一个数据库的表格...
  8. [Qt入门] QPushButton创建
  9. 使用递归解决斐波那契数列的性能问题
  10. DSP中EALLOW,EDIS,EINT,DINT,ERTM,DRTM的作用
  11. 信息系统规划方法-战略目标集转化法(SST)
  12. vue处理PDF文档流数据并实现PDF的预览以及打印功能以及处理PDF打印乱码问题
  13. 侧脸生成正脸概论与精析(一)Global and Local Perception GAN
  14. php微信使用腾讯地图进行定位,微信小程序在腾讯地图上选择定位
  15. windows显示WiFi密码
  16. 已知a和b的最大公因数和最小公倍数求这两个数字
  17. mysql编译安装指定端口_在CentOS7系统上编译安装MySQL 5.7.13步骤详解
  18. 详解EBS接口开发之采购订单导入(转载)
  19. 3.3.6 全微分与复合求导
  20. matlab图像处理ppt,数字图像处理(MATLAB版).ppt

热门文章

  1. 845B - Luba And The Ticket
  2. 学习进度表(160519更新)
  3. DesignPattern_Java:Adapter Pattern
  4. [转载]C#多线程学习(一) 多线程的相关概念
  5. Python稳基修炼之计算机等级考试易错细节题1(含答案和解析)
  6. Java之static的内容
  7. python中列表相加规则_在Python字典列表中使用公共键/值求和值
  8. 2061:【例1.2】梯形面积【入门题】
  9. android studio 分页,Android Paging codelab
  10. 检测电脑硬件的软件_慎用优化软件 不然I7也会卡