Linux提权手法整理
之前写过了windows提权小结,这下一篇水什么就有了嘛,于是有了这篇水文,整理一下Linux提权
前篇windows提权小结 ,链接送上 https://www.cnblogs.com/lcxblogs/p/14163338.html
0x00 前言
同windows提权的目的,也是从普通用户权限提升到管理员权限,以便实现读写敏感文件、横向移动进一步控制、执行一些需要权限的命令之类的要求
仍然是思路总结性质的文章,具体操作不展开介绍
具体如何做,应该注意哪些细节,请参考网上其他师傅们的复现操作
本文不涉及第三方提权
0x01 系统内核漏洞
按照windows那篇与这篇两篇文章相互对应的关系,我就也把系统内核漏洞放在第一个位置(事实上能不用就不最先用内核漏洞,未经测试的内核漏洞可能产生意外的结果,比如系统崩溃啦、蓝屏啦、连接GG啦......)
还是,同windows内核提权一样,我们需要知道有哪些可以利用的Linux内核漏洞?
推荐几个脚本
(1)LinEnum
下载链接: https://github.com/rebootuser/LinEnum
使用方法在链接里有,能搜集出很多信息
(2)linuxprivchecker
下载链接:https://github.com/sleventyeleven/linuxprivchecker
(3)linux-exploit-suggester2
下载链接:https://github.com/jondonas/linux-exploit-suggester-2
利用内核漏洞,需要目标系统没打有关此漏洞的补丁,然后我们把利用脚本exp往目标机器上传,传了之后要能执行
当然除了上面介绍的几个信息收集工具之外,也可以手动搜集内核相关信息,前提是你记得住命令
比如uname -a 看一下内核版本
cat /etc/issue
cat /etc/*-release 看下发行版本
然后用kali的searchsploit查询exploitdb ,找一下此版本下,哪些内核漏洞可以利用,具体呢要看exp的说明,都是有要求的不是很随便的exp,注意不要被坑了
给你一个眼神:
言归正传
首先,如果提到Linux提权,绝对绕不过著名的脏牛漏洞,即CVE-2016-5195
Linux内核>=2.6.22(2007年发行)开始受影响,直到2016年10月18日修复
其危害就是与低权限用户可提权相关的
至于为什么叫做dirty COW(脏...牛?)?
大致原因是内核函数处理Copy-on Write(即COW)时存在条件竞争造成COW过程被破坏,出现一些问题,原理分析看这里 https://www.anquanke.com/post/id/84851
网上有此漏洞提权的exp,c的,下载后编译成可执行文件,然后执行
其他类型的内核漏洞也是怎么个思想去寻找,不要怂就是干
Linux内核的一些exp合集: https://github.com/SecWiki/linux-kernel-exploits
0x02 钻空子提权
利用root权限运行的服务钻空子
这个其实并不算一种办法,只是一种朴素的想法
如果找到某服务以root用户身份运行,并且这是一个我们可以执行命令的程序相关的服务,那我们是不是可以钻个空子,用这个程序执行一些命令,变相地实现“提权”
ps -aux | grep root 找到root运行的服务
比较常用的例子就是:数据库服务是root权限运行的,那么我们可以通过在数据库shell中执行一些本来普通权限执行不了需要系统高权限才能执行的系统命令,这也是一种提权......吧
或者
查找敏感文件,比如passwd和shadow
/etc/passwd 存了一些用户信息。正常来说此文件是全用户可读,root可写的
/etc/shadow 存密码hash。仅仅root可读写的
cd /etc 然后 ls -l passwd shadow
看一下文件权限
如果passwd是普通用户可写的(梦里啥都有),可以把root的密码字段换成一个已知密码的hash
如果shadow是普通用户可读的(洗洗睡吧),可以读取root的hash密码,爆破之
或者
是不是存在一些密码复用的情况,root密码和其他你找到的密码一样......呢
可以尝试,但是不要对这种办法报太大希望
0x03 定时任务提权
又名cronjobs提权,如果配置不当就能加以利用(都比较看脸)
主要思想是:计划任务如果被设置是以root权限执行的,且可以修改定时(计划)任务中定义的脚本或文件,就能在root权限下执行任意代码
例子请参考 https://www.freebuf.com/articles/system/175453.html
(例子中的dash、nano可以根据实际情况选择其他的shell和编辑器)
0x04 SUID提权
SUID---set user ID
顺便讲一下Linux中文件权限的表示方法,啊懂的都懂,有不懂的兄弟我就自告奋勇一下了
类UNIX系统下可以通过 ls -l 查看文件权限
表示方法是一种十位表示法,类似:
- r w x r w x r w x
1 2 3 4 5 6 7 8 9 10
2-10位展示的 r w x 分别是readable 、writable、 executable权限 或者说可读、可写、可执行 或者说4、2、1,没有相应权限的位置写-
属主(u)2-4位;属组(g)5-7位; 其他(o)8-10位
第一位可以是:p 管道文件; d 目录文件 ;l 符号连接文件;- 普通文件;s socket文件;c 字符设备文件;b 块设备文件
除此之外,还有三种特殊权限:SUID、SGID、sticky
s或S(SUID--set user ID )占据4号位,对应值为4
s或S(SGID-set group ID)占据7号位,对应值为2
t或T(sticky)占据10号位,对应值为1
于是给文件加减权限就有:
chmod u+s filename
chmod g+s filename
chmod o+t filename (取消权限顺理成章+换成-即可)
或用数字表示
chmod 4755 filename 代表-rwsr-xr-x (-rwxr-xr-x 这是原来的755,赋了SUID=4权限)
chmod 7755 filename 代表-rwsr-sr-t (-rwxr-xr-x 这是原来的755,赋了SUID、GUID、sticky=4+2+1=7权限)
chmod 7666 filename 代表-rwSrwSrwT (-rw-rw-rw- 这是原来的666,赋了SUID、GUID、sticky=4+2+1=7权限)
chmod 0755 filename 去掉所有特权
看出来点区别没?
小写s或s或t是取代了原来的x的,但如果原来没有x,就会表示为大写的S或S或T
SUID作用于文件(二进制程序):用户将继承文件所有者的权限(root用户创建一个文件并加上SUID,其他用户使用这个文件时就是具有root权限的)
GUID作用于文件(二进制程序)和目录:对于文件,用户将继承文件所属组的权限;对于目录,此目录下的所有新建目录、文件都自动继承此目录的属组权限
sticky作用于目录:粘滞键,目录中的用户只能删除、移动、更改自己的文件或目录(比如创建一个公共目录,管理员不希望a用户能修改b用户创建的、放在公共目录中的文件,反之b用户也不能修改a用户创建的、放在公共目录中的文件,那就把公共目录设定一个sticky位,定住)
讲了这么多废话,这和提权有啥关系啊?
别急,原理懂了就好说了
首先找目标系统上,所有运行中的且有SUID的、都以root用户权限运行的可执行文件(3种命令,不同系统不一样,都试试):
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -print 2>/dev/null
find / -user root -perm -4000-exec ls -ldb {} \;
找到的这些都是以root权限运行的,包含SUID的‘s’的,属主是root的文件
随便找一个试一下(只是演示)
可以看到是root的SUID,都红了
我这里没有好的命令,实际上最好找到有nmap、vim、find、more、less、bash、cp、Nano、mv、awk、man、weget之类的且用了SUID的命令
这些命令都是可以在root权限下运行,对于SUID提权有帮助的
具体提权方法可以参考 https://pentestlab.blog/2017/09/25/suid-executables/
https://blog.csdn.net/fly_hps/article/details/80428173
实际上,基本没有人很nice又非常可爱的小运维会把这些文件加SUID的,相信我
所以就当复习一下Linux的小知识吧,不说了
0x05 环境变量操作
一种与SUID提权 结合+操作 的手段
Linux中环境变量是PATH,echo $PATH 查看当前环境变量
如果在PATH变量中发现“.”,表示用户可以从当前目录执行二进制文件脚本
举个简单的例子,仅供演示不代表实操:
我新建一个ls的可执行文件,里面写着 whoami
PATH没加.之前是这样的
加个. (关于Linux环境变量配置请参考:https://www.cnblogs.com/youyoui/p/10680329.html)
再来ls
可见执行结果不是原来的ls 产生的列表效果了,而是变成执行了我ls文件中的whoami了
那么你讲这些对提权有啥用啊?辅助理解,辅助理解
举一反三,我原来有个可执行的A文件,运行这个A文件可以实现某种功能,比如查看系统进程或者其他什么东西
诶好巧不巧,这个A文件是个有root的SUID的可执行文件(但除了管理员其他人无修改此文件的w权限,只是可读可执行 -rwsr-xr-x)
一个普通用户,在目标Linux中为了提权,想利用我上一点说的搜索root权限的有SUID的文件(find / -user root -perm -4000 -print 2>/dev/null)时,啪地一下发现了这个A文件,很快啊
比如执行A文件叫shell,是通过gcc demo.c -o shell生成的,demo.c这个C文件中调用了系统命令ps,于是./shell效果和执行ps效果是一样的,会显示当前进程信息
cp /bin/sh /tmp/ps
把/bin/sh脚本执行命令文件复制到/tmp路径下,新文件起个名也叫ps
export PATH=/tmp:$PATH
($PATH处写echo $PATH的结果)在原有的环境变量基础上,加上新文件ps(其实内容也就是/bin中的sh)所在的路径
再次./shell的时候,也就是执行ps的时候!!!
这次执行的并不是原有的显示进程信息的操作,由于加入了环境变量,而是执行了/tmp路径下的新文件ps,即执行了sh命令,会出现执行sh的脚本执行命令效果!
在sh命令下,执行whoami查看权限是root,提权成功,是因为SUID提权原理,shell文件本身是有root的SUID的,配合本小点讲的环境变量的操作实现提权+任意命令执
行(ps可以换其他的,/tmp路径可以换其他的,/bin/sh也可以换其他的),这个方法本质上还是需要SUID提权的,算是一种操作的延展,鸡肋+1 get
参考过这篇被翻译烂了、讲的比较全的文章:https://xz.aliyun.com/t/2767
就能更好理解一下上述内容了
其他还有一些方法,比如CVE-2019-14287
请参考文章:https://www.freebuf.com/vuls/217089.html
嗯......不做评论,感兴趣可以看一下
各位师傅还有哪些最新的好办法,求分享
随便转载,请标明作者出处
Linux提权手法整理的更多相关文章
- 免考final linux提权与渗透入门——Exploit-Exercise Nebula学习与实践
免考final linux提权与渗透入门--Exploit-Exercise Nebula学习与实践 0x0 前言 Exploit-Exercise是一系列学习linux下渗透的虚拟环境,官网是htt ...
- Linux提权(1)-基础版~
利用Linux内核漏洞提权 VulnOS version 2是VulHub上的一个Linux提权练习,当打开虚拟机后,可以看到 获取到低权限SHELL后我们通常做下面几件事 1.检测操作系统的发行版本 ...
- 又一款linux提权辅助工具
又一款linux提权辅助工具 – Linux_Exploit_Suggester 2013-09-06 10:34 1455人阅读 评论(0) 收藏 举报 https://github.com/Pen ...
- Linux提权:从入门到放弃
*原创作者:piece of the past,本文属Freebuf原创奖励计划,未经许可禁止转载 日站就要日个彻底.往往我们能拿下服务器的web服务,却被更新地比西方记者还快的管理员把内网渗透的种子 ...
- 记一次初步Linux提权
前言. 提权这么久了 还是头一次提下Linux的服务器... 由于之前一直钻研的win服务器 要不是前些日子爆出来Struts2-045漏洞 估计还没时间接触Linux提权.... 正文. st2 ...
- 利用Metasploit进行Linux提权
利用Metasploit进行Linux提权 Metasploit 拥有msfpayload 和msfencode 这两个工具,这两个工具不但可以生成exe 型后门,一可以生成网页脚本类型的webshe ...
- 20. Linux提权:从入门到放弃
几点前提 已经拿到低权shell 被入侵的机器上面有nc,python,perl等linux非常常见的工具 有权限上传文件和下载文件 内核漏洞提权 提到脏牛,运维流下两行眼泪,我们留下两行鼻血.内核漏 ...
- Unix/Linux提权漏洞快速检测工具unix-privesc-check
Unix/Linux提权漏洞快速检测工具unix-privesc-check unix-privesc-check是Kali Linux自带的一款提权漏洞检测工具.它是一个Shell文件,可以检测 ...
- Linux提权中常见命令大全
在拿到一个 webshell 之后,大家首先会想到去把自己的权限提升到最高,windows 我们会提升到 SYSTEM 权限,而 Linux 我们会提升到 root 权限,拿在进行 Linux 提权的 ...
随机推荐
- 1.3.6、通过Path匹配
server: port: 8080 spring: application: name: gateway cloud: gateway: routes: - id: guo-system4 uri: ...
- MySQL中的联表查询与子查询
0.准备数据 1.内连接:INNER JOIN 2.左连接:LEFT JOIN 3.右连接:RIGHT JOIN 4.USING子句 扩展知识点: 0.表别名的使用: 1.group by的用法 2. ...
- 关于easyswoole实现websocket聊天室的步骤解析
在去年,我们公司内部实现了一个聊天室系统,实现了一个即时在线聊天室功能,可以进行群组,私聊,发图片,文字,语音等功能,那么,这个聊天室是怎么实现的呢?后端又是怎么实现的呢? 后端框架 在后端框架上,我 ...
- WPF教程十四:了解元素的渲染OnRender()如何使用
上一篇分析了WPF元素中布局系统的MeasureOverride()和ArrangeOverride()方法.本节将进一步深入分析和研究元素如何渲染它们自身. 大多数WPF元素通过组合方式创建可视化外 ...
- Kotlin Coroutine(协程): 四、+ Retrofit
@ 目录 前言 一.准备工作 二.开始使用 1.简单使用 2.DSL 3.扩展函数 4.请求发起 总结 前言 Retrofit 从 2.6.0 版本开始, 内置了对 Kotlin Coroutines ...
- Arduino IDE 2.0 beta安装
1.在官网(Software | Arduino)下载安装包,此次提供操作系统有:Windows.Linux和macOC系统 2.点击安装包进行安装 3.点击我同意 4.点击下一步 5.选择安装路径( ...
- NIO 输入输出
NIO 是java14 API 提供的一种新输入输出流,一套用于标准IO的文件读写,一套用于网络编程. 1. NIO 与IO 的区别 IO流以字节流输入输出,一次以一个字节进行数据操作,效率慢: NI ...
- Python单元测试框架unittest之深入学习
前言 前几篇文章该要地介绍了python单元测试框架unittest的使用,本篇文章系统介绍unittest框架. 一.unittest核心工作原理 unittest中最核心的四个概念是:test c ...
- Redis 6.0 新特性:带你 100% 掌握多线程模型
Redis 官方在 2020 年 5 月正式推出 6.0 版本,提供很多振奋人心的新特性,所以备受关注. 码老湿,提供了啥特性呀?知道了我能加薪么? 主要特性如下: 多线程处理网络 IO: 客户端缓存 ...
- 高校表白App-团队冲刺第七天
今天要做什么 使用Fragment进行分屏处理,制作底层 做了什么 完成任务 遇到的问题 因为以前做过了一个,所以这次没有遇到什么问题,开心.啊哈哈