本节书摘来自异步社区《metasploit渗透测试手册》一书中的第3章3.8节 理解windows dll注入漏洞,作者【印度】abhinav singh,更多章节内容可以访问云栖社区“异步社区”公众号查看。
3.8 理解windows dll注入漏洞
metasploit渗透测试手册
本节将介绍一种特殊类型的漏洞,这种漏洞不直接存在于windows操作系统中,而是存在于windows上运行的各种应用程序软件之中。这种远程攻击方法针对的是应用程序加载外部库时存在的漏洞,下面介绍这类漏洞,以便对其进行深入分析。
准备
这种攻击方法需要创建包含漏洞的目录路径,目标机器需要执行该路径以便激活该漏洞。这个目录可以是文件、提取的文件夹、usb驱动器或网络共享等。创建的文件本身是完全无害的,但会执行dll注入漏洞来攻击目标系统。
怎样实现
下面介绍dll注入漏洞的实现过程。本示例中,目标机器是一个未打补丁的windows 7 ultimate机器。工作过程是创建一个链接共享该机器必须访问和执行的文件。随着讲解的深入,读者会对这一过程有更好的理解。
(1)使用exploit/windows/browser/webdav_dll_hijacker模块作为漏洞利用代码,windows/ meterpreter/bind_tcp作为攻击载荷,下面对漏洞利用代码和攻击载荷必需的参数进行快速设置。
使用漏洞利用代码的各种参数有助于创建特定文件和顶层共享。其中,参数basename包含了要创建的文件名,extensions是待创建文件的类型扩展名,sharename是待创建用于访问的顶级共享目录,srvhost是本地监听主机,srvport是用于对连接进行监听的端口号。
(2)漏洞利用代码和攻击载荷的相应参数设置完成后,执行漏洞利用代码。执行后的情况如下。
(3)漏洞利用代码成功执行后,开始对产生的连接进行监听,并提供共享链接。目标打开该链接后将触发漏洞并执行漏洞利用代码,下面切换到目标机器屏幕看会发生哪些情况。
目标机器中包含policy.txt文件,该文件已被攻击者共享,该文件是完全无害的,然而一旦目标用户执行该文件后,就会与攻击方机器建立shell连接,而实际上在目标机器上执行的是dll文件,此时在msfconsole屏幕上会看到大量活动。dll成功注入后,将产生一个shell连接(见下图)。
怎样工作
下面分析导致该漏洞的原因。动态链接库(dll)是微软windows操作系统中共享库的一种实现。dll实际上是与某个特定程序相关的可执行程序,该程序运行时会加载与其相关的dll共享库。应用程序运行时,loadlibrary()函数将加载运行时必需的dll,如果待加载dll的位置没有指定,或者应用程序提供的是非全限定的库路径,windows就会使用自定义的搜索顺序进行dll搜索,其中默认搜索位置就是程序的当前工作目录。
目标用户访问共享位置后,就会进入到攻击者控制的区域,这是为什么呢?因为共享文件policy.txt包含非完全限定的dll路径,目标用户执行该文件时,windows会按照缺省搜索顺序搜索该dll文件,而由于当前工作目录(/documents)是由攻击者控制的,攻击者就可以在其中添加恶意的dll代码,并由windows操作系统执行(当前工作目录是windows搜索链接库的缺省位置之一),从而使得攻击者可以执行外部脚本,攻击载荷成功执行后,会在攻击方机器和目标机器之间建立shell连接,攻击者由此获取对目标系统的完全访问权限。以上为该攻击方法的整个过程。
更多
可以使用h. d. moore开发的一个简单工具来探测dll注入漏洞。
h. d. moore的dllhijackaudit工具
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。