linux基础提权总结
本文最后更新于310 天前,其中的信息可能已经过时,如有错误请发送邮件到270371528@qq.com

linux基础提权总结

基础知识:

我们先看一下文件的详细信息

image-20250307113139159

回顾一下这每一列的意思.

第一列:drwx——

这一共10位字符。可以分为四个部分。

第一部分是第一个字符。这是文件类型标识:

:表示这是一个普通文件。除了普通文件,还有其他类型的文件标识,例如:

d:代表目录(directory)。

l:表示符号链接(symbolic link)。

c:字符设备文件,通常用于与字符设备(如终端)进行交互。

b:块设备文件,一般用于与块设备(如硬盘)进行交互。

第二部分是2-4这三个字符。这是规定文件所有者的权限

r:代表读权限(对应数值是4)
w:代表写权限(对应数值是2)
x:表示执行权限(对应数值是1)

:表示无权限(对应数值是0)。

第三部分是5-7这三个字符。这是规定文件所属组的权限

第四部分是2-4这三个字符。这是规定其他用户的权限

例如:drwx——就表示:这是一个目录文件。文件所有者有读写执行权限(对应数值4+2+1=7),文件所属组和其他用户都是没读写执行权限的(对应数值0)

我们可以使用 chmod 命令结合这个数字来设置文件权限。例如:

chmod 700 file

第二列:1(表示硬链接数)

硬链接是文件系统中指向同一个文件数据的多个文件名。这里的 1 表示该文件只有一个硬链接,即当前显示的这个文件名是指向该文件数据的唯一引用。

第三列:root:文件所有者

这表明该文件的所有者是名为 root 的用户

第四列:root:文件所属组

说明该文件属于名为 root 的用户组。

第五列:4096:文件大小

表示该文件占用的磁盘空间大小为 4096 字节。

第六列:3月 7 10:53:文件最后修改时间

说明该文件最后一次被修改的时间是 3 月 7 日 10 点 53 分。

第七列:. :文件名(这里是表示目录)

提权方式

1.脏牛提权(内核溢出)

脏牛漏洞影响Linux内核版本 2.6.22 至 4.8.3。如果系统内核版本在此范围内,可能存在该漏洞。可以试试能否提权。原理是偏pwn的知识,我们会操作就行。下面开始模拟渗透提权过程

vulhub靶机下载地址链接

下载后进入虚拟机装好并启动。

image-20250307121120540

打开我们的攻击机kali,查看ip

image-20250307121142169

扫描整个网段

nmap -sS 61.139.2.0/24

发现了我们的受害机。

image-20250307121455305

接着扫描全端口

image-20250307121515625

发现除了ssh和http服务的端口外,还有一个1898端口,浏览器访问61.139.2.132:1898查看:

image-20250307121829526

页面最下面有个powered by drupal

查找资料发现

image-20250307122343093

这个CMS是爆过CVE的。

利用msf开始渗透!

msfconsole进入msf

寻找模块

image-20250307125151014

这里我用第二个,查看选项

image-20250307160101030

设置靶机的ip和端口,然后运行

image-20250307160734494

可以看到下图,我们成功运行拿到shell,渗透成功,但是是www-data用户,这个权限太低。但是linux内核版本为4.4.0-31,可能存在脏牛提权。接下来开始脏牛提权

image-20250307161442935

我们另起一个终端,下载攻击工具

git clone https://github.com/mzet-/linux-exploit-suggester

image-20250307162651354

先利用msf切到靶机的/tmp目录( 一般来说在/tmp目录下 , 是可以进行可读写可执行的 )。然后将sh脚本上传到靶机上。

image-20250307162828430

image-20250307162848683

再切换到shell交互,给文件加个权限(因为这个文件是我们自己上传上去的所以自己就是文件所有者,可以加权限)然后运行。

image-20250307163239830

执行脚本后扫描到了许多cve,可以看到有脏牛

image-20250307163443719

kali机另起终端下载该提权工具

image-20250307163654888

同样上传dcow.cpp脚本到受害机

image-20250307164124799

然后开启shell,输入

g++ -Wall -pedantic -o2 -std=c++11 -pthread -o dcow dcow.cpp -lutil

将dcow.cpp编译为dcow(可执行文件)

image-20250307164437805

然后开启一个bash shell(msf开启的shell无法运行dcow文件,所以要通过其他方式在受害机开启bashshell交互)

python -c 'import pty; pty.spawn("/bin/bash")'

最后执行编译好的dcow即可

image-20250307165150460

可以看到成功拿到了root账号的密码。

image-20250307165731089

成功以root账户登入。

大致过程很好理解。就是信息收集然后通过Drupal的漏洞拿到shell。拿到shell后通过上传恶意工具扫描发现了有脏牛提权的cve。便利用cve脚本开始提权以拿到root账号的密码。

2.suid提权

SUID(Set User ID)提权的原理是通过设置可执行文件的SUID位,使程序在执行时以文件所有者的权限运行,而非执行者的权限

使用chmod u+s <filename>命令为文件设置SUID位。

设置后,文件权限中会显示s,如-rwsr-xr-x

image-20250308140543669

常见查找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 {} ;
find / -perm -4000 2>/dev/null

已知的可用来提权的linux可行性的文件列表如:

nmap、vim、find、more、less、bash、cp、Nano、mv、awk、man、weget

这里我以find为例:

image-20250308140730408

可以看到find是s权限。

利用find来执行命令:

image-20250308140839411

成功显示root,因为我们执行find时,find是以root权限运行的,所以whoami的结果就是root。

我们利用find执行命令开启root的shell。

image-20250308142428657

提权成功

3.计划任务提权

如果计划任务以高权限(如 root)运行,且任务内容可以被普通用户修改或利用,攻击者可以通过篡改可写的计划任务脚本等方式实现提权。

当获取一个linux普通用户时,可以查看计划任务,看看有没有可以篡改的任务脚本

cat /etc/crontab

这里以一道CTF题为例

我们渗透成功拿到www-data权限后,读取flag发现权限不够

image-20250308134533775

开始计划任务提权,我们先进入crontab目录

image-20250308134645851

发现root文件。大胆猜测这个root文件一定是一个以root用户运行的计划任务脚本。

image-20250308134852635

我们读取后发现有个sh脚本,该脚本是以root权限每分钟执行一次。查看该脚本的权限。

image-20250308135126438

权限为777,很大,那么我们篡改脚本内容来提升flag文件权限即可

image-20250308135429929

提权成功,实战中可以修改脚本为执行反弹shell来获取root权限。

4.sudo提权

sudo 提权的原理是利用 sudo 命令的特性,允许普通用户以 root 或其他高权限用户的身份执行命令。如果配置不当或存在漏洞,攻击者可以通过 sudo 实现权限提升

配置文件sudo 的权限配置存储在 /etc/sudoers 文件中,也可以通过 /etc/sudoers.d/ 目录下的文件进行配置。

权限验证:用户执行 sudo 命令时,系统会验证用户的权限(通过 /etc/sudoers 文件)并要求输入当前用户的密码(除非配置了 NOPASSWD

例如:/etc/sudoers中有:

user1 ALL=(ALL) NOPASSWD: ALL

表示user1无需密码即可执行任何命令

也可以执行执行root shell

image-20250308144133330

5.shadow提权

/etc/shadow 是 Linux 系统中存储用户密码哈希值的文件,是系统安全的重要组成部分。它包含用户的加密密码以及其他与密码相关的信息

当我们普通用户可以访问 /etc/shadow文件时,有几率拿到root密码的hash 然后进行暴力破解

6.password提权

原理是当我们普通用户对 /etc/passwd 具有写入权限时

我们就可以新建伪造的"root"用户 还有就是 /etc/passwd里边不小心存储了root密码的hash值

我们就可以进行john破解密码进行登录

提权工具

介绍几个提权工具

1.linux-exploit-suggester(主要针对内核)

我在上面的脏牛提权用的就是这个。这个脚本会输出内核等信息,然后输出可能存在的漏洞,包括exp的下载地址,可以下载对应的exp来测试。有橙色标签的说明更符合目标机情况。

使用方法:

拿到shell后上传该脚本到受害机.然后执行下列命令

chmod +x linux-exploit-suggester.sh  ##添加执行权限
./linux-exploit-suggester.sh   ##执行脚本

该脚本会检查存在的cve漏洞。在通过脚本的判断后可以通过给予的信息下载exp进行提权

image-20250307171341936

这里扫到的cve,我们下载脚本后可能会遇到下载的c语言环境的脚本,需要c语言进行编译,而服务器上可能很少会安装c语言环境,我们可以本地进行编译,将编译完的exp再上传上去执行。

2.linux-exploit-suggester-2

和上面那个类似,算是稍微强化版。用法和上面一样。

3.LinEnum

下载地址

Linux枚举及权限提升检查工具,该工具除了RCE无法收集,其它的信息都能收集,主要收集:内核、发行版本、系统信息、用户信息、特权访问、环境、作业、任务、服务、web服务的版本、默认/弱口令、搜索等

使用方法

拿到shell后上传该脚本到受害机/tmp目录下.然后执行下列命令

chmod +x LinEnum.sh  ##添加执行权限
./LinEnum.sh  ##执行脚本

可以看到返回的信息很多,可以看到SUID提权用到的信息等,以及历史命令等等

image-20250307173022540

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇