Linux 提权学习

提权的目的是获取 root 权限

root 权限可获取 shadow 文件中的密码 Hash,若内网环境中存在「账户/密码复用」的情况,可用于横向扩展

暴力破解

suid 提权

内核漏洞提权

定时任务提权

sudo 提权

第三方服务提权(docker、mysql、redis、NFS提权)

暴力破解

爆破 root 用户的密码

有一个工具,sucrack

——————

suid 提权

suid(Set owner User ID up on execution)

suid是可执行文件的一个属性(我理解为是一个特殊权限)

通过这个,其他组用户在执行一个程序时可以有该程序所有者/组 的权限

如果此程序所有者是root权限,那其他用户也能有root权限

条件:程序所有者是 0 号或其他 super user ,同时有suid 权限

程序只要有suid权限,就可以提权,这个说法其实是不准确的。只有这个程序的所有者是0号或其他super user,同时拥有suid权限,才可以提权。

正常权限比如为 rwx ,可读可写可执行

而有的却是 rws ,这个 s 就是 suid

比如,nmap是需要 root 权限才能运行, 给nmap加上suid权限,这样普通用户就可以随便运行nmap了。

常见用来提权的 Linux 可执行文件:

nmap、vim 、find、bash、more、less、nano、cp

查看可以 suid 提权的可执行文件

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

find / -user root -perm -4000-print2>/dev/null

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

可以看到有 nmap 之类的

在看看 nmap 的权限

-rwsr-xr-x 1 root root 780676 2008-04-08 10:04 /usr/bin/nmap

有一个 s 权限,即可以进行 suid 提权

旧版本的 Nmap(2.02 到 5.21)具有交互模式,允许用户执行 shell 命令。

即使用 nmap 的 --interactive 交互模式

nmap --interactive

进入 nmap 交互模式之后,输入 !sh 就可以进行执行命令了,并且是 root 权限

find 提权

后面跟的 abc 是一个存在的文件夹或文件

find abc -exec whoami \;

————————

内核漏洞提权

先查看Linux 内核版本

uname -a

比如我这里是 5.13.0

1、寻找内核版本存在的漏洞

可以用 kali 自带的 searchsploit ,看看有没有符合的漏洞。

searchsploit Ubuntu 5.13.0

2、下载payload并编译

如果有符合的漏洞,后面有 payload 文件名,使用 -m 命令下载下来(一般应该是 .c 文件, 还需要编译)

searchsploit -m 41760.txt

下载好会有路径

文本打开这个文件会有编译命令,编译之后得到可执行文件,执行即可。

3、执行编译后的可执行文件

然后大概会得到一个用户,su 用户名 登录,就有 root 权限了

除了kali 的 searchsploit ,还可以利用  linux-exploit-suggester、linux-exploit-suggester-2等工具

——————

计划任务提权

定时任务(cron job)

通过配置crontab可以让系统周期性地执行某些命令或者脚本

User Crontabs 通常位于 /var/spool/cron/or/var/spool/cron/crontabs/(非 root 用户无法查看 root 用户的计划任务)

system 系统的 crontab 位于/etc/crontab (普通用户可查看)

cron通常以root特权运行,如果可以修改其调度的任何脚本或二进制文件,那就可以使用root权限执行任意代码。

普通用户可以列出系统的计划任务:

cat /etc/crontab

我们先创建一个可执行文件以便测试,然后在 /etc/crontab 文件中添加这个文件,让此文件能够计划性周期性执行。

而在实际情况中,cat /etc/crontab 就是要看看里面存不存在可执行文件,并且有普通用户可更改的权限。

创建测试文件

为了方便,也先赋权,防止后面没有执行权限

touch test.sh

chmod 777 test.sh

文件中写入内容:

#!/bin/bash

cp /bin/bash /tmp/shell

chmod +s /tmp/shell

此内容的功能:

cp /bin/bash /tmp/shell 是把 bash 复制到 /tmp 文件夹下,命名为 shell 文件

chmod +s /tmp/shell 给其赋予 suid 权限,即让普通用户也能执行此 /shell 文件

在 /etc/crontab 加上创建的文件的计划任务(编辑此文件需要 root 权限)

*  *    * * *   root    /home/doodric/test.sh

然后计划任务成功执行,即 /home/doodric/test.sh 执行之后

/tmp 下就得到了这个 shell 文件,是通过 /bin/bash 复制过来的

直接输入 /tmp/shell 

相当于成功把 bash 文件给复制移动了(是 root 权限才能做到的)

总之,就是在 计划任务中看看有没有可写的可执行文件,普通用户对此计划任务文件修改内容,达到以 root 权限执行命令

——————

sudo 提权

运用sudo可以使普通用户使用root用户的命令,只需要输入普通用户的密码。

比如通过 sudo 命令执行 su 切换用户命令,只需要输入普通用户 msfadmin 的密码,不需要 root 用户的密码

但是通过对配置文件 /etc/sudoers 进行修改,把用户

vim  /etc/sudoers

我这里文件内是空白的,添加一行内容:

msfadmin ALL=(ALL:ALL) NOPASSWD:ALL

(msfadmin 是我们的普通用户,添加之后让 sudo 命令免密码使用)

然后再执行 sudo su

发现不用输入普通用户的密码就能进入管理员用户了。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C++】结构体嵌套结构体

目录 1、缘起 2、结构体嵌套结构体 3、总结 1、缘起 结构体嵌套结构体 是一种数据组织方式,就像 俄罗斯套娃 一样,一个数据结构可以包含另一个数据结构。这种嵌套结构使得程序可以更加灵活地处理数据,从而更好地满足复杂的需求。类比生活中…

Can‘‘t connect to MySQL server on localhost (10061)解决方法

首先检查MySQL 服务没有启动》如果没有启动,则要启动这个服务。 有时候安装mysql后使用mysql命令时报错 Cant connect to MySQL server on localhost (10061),或者用net start mysql 时报服务名无效,一般是因为mysql服务没有启动。 打开 powe…

MySQL中使用IN()查询到底走不走索引?

MySQL中使用IN()查询到底走不走索引? 看数据量 EXPLAIN SELECT * from users WHERE is_doctor in (0,1); 很明显没走索引,下面再看一个sql。 EXPLAIN SELECT * from users WHERE is_doctor in (2,1);又走索引了,所以…

day81【leetcode】打家劫舍专题

文章目录前言一、打家劫舍(力扣198)【相邻两间房不能偷】二、打家劫舍 II(力扣213)【围成一圈 相邻两间房不能偷】三、打家劫舍 III(力扣337)【树形DP】每日一题day81:链表中的下一个更大节点&a…

Java:jdk的安装以及hello world

由于本人头发较多,常常被认为是不用功的程序员;故,我来学学Java,希望我变秃了也变强了! 首先是java的安装,根据我司java的建议,安装了jdk8与jdk17!因为在众多的版本中,只…

《Netty》从零开始学netty源码(三十九)之PoolSubPage的内存分配

目录 PoolSubPage.allocategetNextAvail方法toHandle方法removeFromPool方法 PoolSubPage.allocate 上一篇我们介绍了PoolSubPage的简单知识,当我们需要PoolSubPage的内存时可调用allocate方法查找可分配二进制的位置,具体的源码过程如下: …

vite .env.test环境使用ant design vue ,打包后a-date-picker控件无法选择日期

前端开发后台管理系统,常用的UI库当属Element UI和 Ant Design Vue,但是前段时间遇到一个奇葩问题,在这里记录一下,防止小伙伴们踩坑。 后台系统,大家肯定都用过时间控件,本期我们使用的是ant design vue&…

网络-IP地址(嵌入式学习)

IP地址基本概念IPv4 五类:A B C D E特殊地址子网掩码子网号概念IPv6优势举个栗子基本概念 IP地址是Internet中主机的标识 IP地址(Internet Protocol Address 互联网国际地址)是一种在Internet上的给主机编址的方式,它主要是为互…

piwigo安装及初步使用

一 摘要 本文主要介绍piwigo 安装及初步使用,nginx \php\mysql 等使用 docker 安装 二 环境信息 2.1 操作系统 CentOS Linux release 7.9.2009 (Core)2.2 piwigo piwigo-13.6.0.zip三 安装 3.1安装资源下载 piwigo 请到官网下载https://piwigo.org 安装步骤也…

js非常的混乱怎么学才能入门呢?

前言 ES5还是要学的喔,里面有很多重要的概念,跟ES6有着很强的关联性,大致上包括: 变量声明 ES5 使用var关键字来声明变量,而 ES6 引入了 let 和 const 关键字,用于声明块级作用域的变量和常量。这些新的关…

MobPush创建推送

功能说明 MobPush提供遵循REST规范的HTTP接口,适用各开发语言环境调用。 IP绑定 工作台可以绑定服务器IP地址,未绑定之前所有IP均可进行REST API的调用,绑定后进仅绑定的IP才有调用权限。 调用地址 POSThttp://api.push.mob.com/v3/push/c…

坚鹏:《银行业数字化转型指导意见》政策解读及银行数字化转型

中国银保监会《关于银行业保险业数字化转型的指导意见》政策解读及银行数字化转型 课程背景: 很多银行存在以下问题: 不知道如何准确理解中国银保监会《关于银行业保险业数字化转型的指导意见》相关政策 不清楚中国银保监会《关于银行业保险业数字化…

TensorFlow 深度学习第二版:1~5

原文:Deep Learning with TensorFlow Second Edition 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 深度学习 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 不要担心自己的形象,只…

L2-044 大众情人分数 25分

人与人之间总有一点距离感。我们假定两个人之间的亲密程度跟他们之间的距离感成反比,并且距离感是单向的。例如小蓝对小红患了单相思,从小蓝的眼中看去,他和小红之间的距离为 1,只差一层窗户纸;但在小红的眼里&#xf…

36岁大龄程序员被裁,找了2个月工作,年包从100万降到50万,要不要接?

为了找到工作,你愿意接受降薪多少? 一位36岁的杭州程序员问: 36岁被裁,找了2个月工作,年包从100万降到50万,真心纠结,要不要接? 网友们分成了旗帜鲜明的两派,一派人认为不…

【面试题】20个常见的前端算法题,你全都会吗?

现在面试中,算法出现的频率越来越高了,大厂基本必考 今天给大家带来20个常见的前端算法题,重要的地方已添加注释,如有不正确的地方,欢迎多多指正💕 大厂面试题分享 面试题库 前后端面试题库 (…

基于RDF本体模型和图数据库实现知识查询与推理

基于RDF本体模型和图数据库实现知识查询与推理 基于RDF本体模型和图数据库实现知识查询与推理一、案例本体模型解释二、数据构建与查询 Here’s the table of contents: 基于RDF本体模型和图数据库实现知识查询与推理 本文主要使用ONgDB图数据库和Neosemantics组件,…

运行时内存数据区之虚拟机栈——操作数栈

操作数栈 每一个独立的栈帧中除了包含局部变量表以外,还包含一个后进先出(Last-In-First-Out)的操作数栈,也可以称之为表达式栈(Expression Stack)。操作数栈,在方法执行过程中,根据字节码指令,往栈中写入数据或提取数…

《花雕学AI》06:抢先体验ChatGPT的九个国内镜像站之试用与综合评测

最近ChatGPT持续大火,大家们是不是在网上看到各种和ChatGPT有趣聊天的截图,奈何自己实力不够,被网络拒之门外,只能眼馋别人的东西。看别人在体验,看别人玩,肯定不如自己玩一把舒服的啊。 上一期&#xff0…

视图的使用

为什么引入视图(Views) 如果您读过其他类似的书,可能会看到这些书在介绍视图时列举了许多引入视图的原因。其中认为最重要的原因是维护数据的独立性。那么什么是数据的独立性呢? 早期信息系统的设计与开发多采用模块驱动方式&am…
最新文章