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,如需转载请自行联系原作者

相关文章
|
安全 Shell 网络安全
MSF框架讲解
MSF框架讲解
|
安全 网络协议 Unix
MSF8
Samba是一个用来让UNIX系列的操作系统与微软Windows操作系统的SMB/CIFS网络协议做链接的自由软件。在Samba 3.0系列版本上存在一个用户模拟漏洞,攻击者利用此漏洞可模拟任意用户,执行未授权的操作。
|
安全 网络协议 Unix
MSF2
Armitage工具的界面很简洁,左上角是Metasploit提供的一些进行渗透的模块,右上角显示的是扫描到的目标主机,下面是一个Metasploit控制终端,前面提到过Armitage可以挂载多个Metasploit控制终端,所以这里可以开启多个Metasploit控制终端。事实上使用Armitage跟直接使用Metasploit控制终端的差别不大,区别是在Armitage中可以从图形界面上选择用于渗透的模块,而控制终端需要通过命令显示并选择渗透模块。
|
Linux 网络安全
MSF4
要使用MSFConsole控制终端进行渗透测试,必须熟练掌握MSFConsole的常用命令,这些常用命令如下:
|
网络协议 安全 关系型数据库
MSF7
在 Metasploitable 靶机上运行后门程序“ shell_zbj. elf ”,该程序运行起来后会连接Kali虚拟机
|
安全 Unix Java
MSF1
Metasploit是一个开源的、用Ruby脚本语言写的渗透测试框架(Metasploit Framework,MSF),该框架集成了很多可用的渗透利用工具,用户可以在这个框架下进行一系列的渗透测试,利用现有的装备(Payload),如Meterpreter等进一步获取对方的Shell。Metasploit功能强大,可以帮助安全人员评估系统安全性,发现系统的安全漏洞,对漏洞的防范措施进行验证,并提供真正的安全风险情报,因此几乎每一个从事渗透测试的人都会接触到它,是渗透测试最常用的工具。
|
安全 Shell 网络安全
MSF3
metasploit攻击载荷模块有三种类型,分别是独立攻击载荷(Singles)传输器载荷(Stager)和传输体载荷(Stage)。
|
Web App开发 安全 JavaScript
MSF6
目前msfvenom工具已经取代了metasploit-framework旗下的msfpayload(载荷生成器)和msfencoder(编码器)。
|
SQL 网络协议 关系型数据库
|
Apache C++ 数据安全/隐私保护