Ubuntu 12.04 32位

ida 7.0

0x00:漏洞描述

1.glibc的__nss_hostname_digits_dots存在缓冲区溢出漏洞,导致使用gethostbyname系列函数的某些软件存在代码执行或者信息泄露的安全风险。

通过gethostbyname()函数或gethostbyname2()函数,将可能产生一个堆上的缓冲区溢出。经由gethostbyname_r()或gethostbyname2_r(),则会触发调用者提供的缓冲区溢出, 漏洞产生时至多sizeof(char* )个字节可被覆盖(因为char*指针的大小,即32位系统上为4个字节,64位系统为8个字节)。

0x01:漏洞分析

1.先静态分析glibc源码中的__nss_hostname_digits_dots函数流程,如图1所示。

          图1

图1代码大致流程就是在__nss_hostname_digits_dots中,计算了size_needed,当size_needed > buff_size时,会调用realloc重新申请size_needed的空间。

          图2

图2代码流程在计算size_need时,少加了一个sizeof(*h_alias_ptr),少算了4个字节,所以当name全为数字或者.号时,会将name拷贝到buff的hostname,造成一个指针大小字节的堆溢出。

所以要触发成功需要满足的条件为,size_need足够大,让其调用realloc重新分配。name全为数字或者.号。

2.选择一个受漏洞影响的程序clockdiff来调试分析,在IDA中对__nss_hostname_digits_dots下好断点,如图3所示:

          图3

F9运行,第一次断下无用不是处理我们自己输入的参数,直接跳过。第二次断下,发现gethostbyname的参数为我们输入的参数。Gethostbyname中调用__nss_hostname_digits_dots,其中缓冲区的大小默认为0x400。在调用realloc处下断点,此时buffer_size= 0x41B,刚好是输入参数的长度,因为size_need大于buffer_size所以须要重新分配空间。

          图4

通过上面的判断与计算空间大小后执行到stcpy处(溢出点),通过前面空间的计算,加上字符串结尾的空字节,刚好溢出了一个指针字节。

0x02:总结

1.产生漏洞的条件是当gethostbyname()函灵敏被调用时且满足下面两个条件。

a.size_need足够大,让其调用realloc重新分配。

b.name全为数字或者.号

最新文章

  1. sublime
  2. Linux 安装git
  3. iOS 选择的照片或者拍照的图片上添加日期水印
  4. MVC框架 - 高级示例
  5. JSP与Servlet的中文乱码处理
  6. 计算阶乘并显示_winform (20以后的阶乘溢出)
  7. PHP中public,private,protected,abstract等关键字用法详解
  8. [Helvetic Coding Contest 2017 online mirror]
  9. 微信分享大图遇到的问题(Android)
  10. logback Filter LevelFilter ThresholdFilter
  11. nginx下目录浏览及其验证功能、版本隐藏等配置记录
  12. EUREKA原理总结
  13. SQL Server 性能优化详解
  14. 基于.htaccess的Web Shell工具htshells
  15. swift http post json + 登录
  16. Linu 修改maven的setting保护文件
  17. Vue使用moment.js处理前端时间格式问题
  18. MySQL INFORMATION_SCHEMA 使用
  19. 十大迷你iPhone天气应用
  20. 在oracle11g中配置多个DataGuard物理备机

热门文章

  1. c语言和c++的相互调用
  2. COCO2018 stuff分割
  3. PHP 中 快捷的三元运算...
  4. C++_异常2-返回错误码
  5. CF :K 一个含n条边的带权无向连通图,q次查询,每次查询两点间的最短距离。
  6. Oracle 11g使用DML Error Logging来避免bulk insert故障
  7. 使用jenkins自动化构建android和ios应用
  8. mysql 配置文件详解
  9. JavaScript设计模式(二) - 单例模式
  10. nyoj 325——zb的生日——————【dp】