DLL Hijacking Exploit

简介:

 前几天 exploit-db 数据库中公布了 长达 3 页的本地漏洞,全是:DLL Hijacking Exploit。详情可以参考:http://www.exploit-db.com/local/,那么什么是 DLL Hijacking Exploit? 是什么原因造成的 DLL Hijacking Exploit 呢? 下面我给简单说一下原因:

一、环境变量执行优先级

说起该漏洞,先谈一下变量的优先级别:

最高

%userprofile%

%systemroot%/system32

%systemroot%

用户定义path

最低

二、软件兼容性原因导致漏洞产生

Windows 操作有不同的操作系统,而不同的操作系统里面有不同的 共享链接库(dll),这就造成了不一致,有的库XP才有,有的库win7才有,有的或者直接废弃掉了,而软件必须兼容这些,这就给 DLL Hijacking Exploit 攻击带来了可称之机。首先看一张图:

image

当我打开 2222.docx 文档的时候,默认会调用  winword.exe 进程打开文件,然后寻找共享链接库(dll),这里我们抓到的是:imeshare.dll、IMM32.DLL。可以看到,winword 会通过上面提到的环境变量优先级来查找dll 的位置,如果存在就加载该dll 文件。根据上面的图可以看到如下顺序:

程序安装目录—》system32 目录—》注册表的images file execution options 映象路径à 加载。

在每一步寻找dll 的时候,如果存在就马上加载。根据“有的库XP才有,有的库win7才有,有的或者直接废弃掉了”这个原因,我们就理由说:我们可以劫持攻击。攻击思路如下:“如果某一系统中废弃掉了某一个 dll 文件,而软件又要为了兼容系统,还会寻找 dll,这时候,我们就可以在他寻找的某一路径中(可以为最终路径,也就是当前目录),写入我们的恶意dll 文件,让其加载执行code

三、实施攻击

前提条件:

1、  软件启动时需要加载一个 dll 。

2、  软件需要的 dll 在系统中不存在(因为不同系统环境不同,很多dll已经废弃)。

3、  一个编译好的恶意dll,示例代码如下:

#include <windows .h>
 
int hax()
 
{
 
WinExec(&quot;calc&quot;, 0);
 
exit(0);
 
return 0;
 
}
 
BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason, LPVOID lpvReserved)
 
{
 
hax();
 
return 0;
 
}
</windows>

 

攻击:

在 winword.exe 启动时会调用 imeshare.dll,如果系统中不存在,就会在某一系统环境变量指定的路径中寻找,现在我们把制作好的 imeshare.dll 放在 doc 文档的当前目录,然后当 word 启动时,就会加载我们的恶意dll,执行恶意code。

所需要的文件。

漏洞执行成功!

四、其他软件利用

五、劫持总结

a)         Javascript Hijacking

b)         Linux shell Hijacking

c)         images file execution options hijack

d)         DLL Hijacking

e)         …..

f)          Windows shell Hijacking

所有造成劫持的原因都来源于:某个东西可被覆盖!!

 

思考:在其他地方是否可被劫持呢? 思想? 大脑?









本文转hackfreer51CTO博客,原文链接:http://blog.51cto.com/pnig0s1992/575499,如需转载请自行联系原作者

相关文章
|
算法 数据安全/隐私保护
【密码学】一文读懂Whirlpool
首先呢,祝大家今晚节日快乐,Whirlpool是由Vincent Rijmen(高级加密标准的联合创始人)和Paulo S.L.M.Barreto设计的,后者于2000年首次提出了它。
1613 0
【密码学】一文读懂Whirlpool
|
2月前
|
BI
成熟稳定的诊所门诊his系统,saas模式,易扩展
一套成熟稳定的项目级云门诊系统源码,支持SaaS架构,适用于社区卫生服务站、诊所、门诊部等医疗机构。含上百个落地案例,功能涵盖门诊挂号、收费、诊疗、药房管理、医保对接等,支持二次开发与定制。
123 16
|
10月前
|
SQL 安全 关系型数据库
mysql注入-字符编码技巧
通过字符编码技巧,攻击者可以在SQL注入中绕过常见的输入验证机制,成功攻击数据库。因此,理解这些技巧及其可能的攻击路径,对防御SQL注入至关重要。开发者应采取多层次的安全措施,确保应用程序在不同字符集和编码环境下都能有效防御注入攻击。通过强制使用统一编码、严格的输入验证、预编译语句以及多层次的编码检查,可以有效地提高系统的安全性,防止SQL注入攻击带来的风险。
367 72
|
机器学习/深度学习 算法 程序员
Python实现Chiikawa
Python实现Chiikawa
708 1
|
机器学习/深度学习 人工智能 自然语言处理
十个最适合论文写作的GPTs及其应用
十个最适合论文写作的GPTs及其应用
738 0
|
安全 Java 程序员
线程安全与 Vector 类的分析
【8月更文挑战第22天】
339 4
|
前端开发
简单学生管理系统HTML前端页面
简单学生管理系统HTML前端页面
792 0
简单学生管理系统HTML前端页面
|
数据采集 存储 JavaScript
深入Node.js:实现网易云音乐数据自动化抓取
深入Node.js:实现网易云音乐数据自动化抓取
|
监控 测试技术 持续交付
Volcano 火山模型到 Pipeline
“【5月更文挑战第24天】”
376 1
|
数据安全/隐私保护 索引 Python
「Python系列」Python OS文件/目录方法、Python错误和异常
Python的`os`模块提供了与操作系统交互的方法,包括文件和目录的操作。
360 1

热门文章

最新文章