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 提权的 ...
随机推荐
- 如何用Redis统计独立用户访问量
拼多多有数亿的用户,那么对于某个网页,怎么使用Redis来统计一个网站的用户访问数呢? 使用Hash 哈希是Redis的一种基础数据结构,Redis底层维护的是一个开散列,会把不同的key映射到哈希表 ...
- XCTF EasyRE
一.查壳 无壳,并且发现是vc++编译的 二.拖入ida,来静态分析,这题让我深刻感觉到汇编的nb. 这段算是灵性的一段了,单从静态语句来看,发现分析不出啥,只能靠猜一下,我当时猜的是将输入的字符串又 ...
- 自动化测试 如何快速提取Json数据
Json作为一种轻量级的交换数据形式,由于其自身的一些优良特性比如包含有效信息多,易于阅读和解析. 使用Json的场景也很多,比如读取解析系列化的Json格式的数据,我们需要将一个Json的字符串解析 ...
- c语言:结果不理解
#include <stdio.h> int main() { int a;float b; scanf("a=%d,b=%f",&a,&b); pri ...
- vivo x9i ADB 模拟点击
手机连接电脑无反应,安装360驱动大师 更多设置--关于---多次点击软件版本号--开启开发者选项 USB调试--USB模拟点击(需要密码开启)
- 高性能内存图数据库RedisGraph(一)
作为一种简单.通用的数据结构,图可以表示数据对象之间的复杂关系.生物信息学.计算机网络和社交媒体等领域中产生的大量数据,往往是相互连接.关系复杂且低结构化的,这类数据对传统数据库而言十分棘手,一个简单 ...
- sql-3-DML_DQL
DML-操作数据 1.insert语句 --增加一行数据 insert into 表名([字段1,字段2,字段3,...])values('值1','值2','值3',...); insert int ...
- git clone 中途停止不动
参考链接1:https://blog.csdn.net/weixin_36965307/article/details/105046699 参考链接2:https://blog.csdn.net/le ...
- Scrapy入门到放弃03:理解settings配置,监控Scrapy引擎
前言 代码未动,配置先行.本篇文章主要讲述一下Scrapy中的配置文件settings.py的参数含义,以及如何去获取一个爬虫程序的运行性能指标. 这篇文章无聊的一匹,没有代码,都是配置化的东西,但是 ...
- AAAI 2021 最佳论文公布
作者:Synced 翻译:仿佛若有光 第三十五届 AAAI 人工智能会议 (AAAI-21) 以虚拟会议的形式拉开帷幕.组委会在开幕式上公布了最佳论文奖和亚军.三篇论文获得了最佳论文奖,三篇被评为 ...