渗透测试:Linux提权精讲(四,我了解到的面试的一些小内幕

sudo sed

sudo service

sudo socat

sudo ssh

sudo ssh-keygen

sudo strace

sudo systemctl

sudo tcpdump

sudo tee

sudo timedatectl

sudo tmux

sudo vi

sudo wall

sudo watch

sudo wget

sudo xxd

sudo zip

总结与思考

写在开头

本文在前两篇博客的基础上继续讲解渗透测试的sudo提权方法。相关内容的介绍与背景详见:

渗透测试:Linux提权精讲(一)之sudo方法第一期_Bossfrank的博客-CSDN博客

渗透测试:Linux提权精讲(二)之sudo方法第二期_Bossfrank的博客-CSDN博客

渗透测试:Linux提权精讲(三)之sudo方法第三期_Bossfrank的博客-CSDN博客

本文将在红队笔记大佬讲解与GTFOBins开源项目(详见GTFOBins)的基础上,继续对Linux系统靶机的sudo提权方式进行简要总结。这里还是首先给出红队笔记大佬的视频链接:

「红队笔记」Linux提权精讲:Sudo风暴 - Sudo风暴第3部分,扫地僧级别心法,研究提权技术的同时,打磨你对linux内核的深度理解。渗透测试宝典。_哔哩哔哩_bilibili

文末的总结与思考模块会对本篇涉及到的提权方法进行分类,并总结sudo提权的思路与逻辑,未必描述的完全恰当,仅是我的个人理解,也欢迎读者评论与私信共同探讨。

sudo screen

利用前提

当前用户可以以sudo高级权限运行screen,即运行sudo -l后会有如下的行:

(root) NOPASSWD: /usr/bin/screen

利用详情可见screen | GTFOBins ,screen是一个终端复用工具,和tmux类似。由于screen本身就是终端的一种,因此如果sudo启动就会启动高权限的会话

操作方式

直接sudo即可

sudo screen

然后进入screen的默认界面,按回车或空格即可进入root的shell,即提权成功。

sudo script

利用前提

当前用户可以以sudo高级权限运行script,即运行sudo -l后会有如下的行:

(root) NOPASSWD: /usr/bin/script

利用详情可见script | GTFOBins, script工具本身就是用来启动新的shell会话,并保存shell中的命令操作记录。

操作方式

单纯从提权的角度来看,直接sudo就够了,但如果直接这样操作会存在一个我们不需要的提示信息,同时script会默认记录我们的一些操作,这对于渗透过程的隐藏自身痕迹很不利,因此提权时还需要添加参数-q(quiet),将运行script时的提示语句和最后的退出语句静默掉。同时添加参数/dev/null将script操作记录的结果全都丢掉。

sudo script -q /dev/null

此时启动的root的shell的过程才是渗透测试过程的优雅操作。

sudo sed

利用前提

当前用户可以以sudo高级权限运行sed,即运行sudo -l后会有如下的行:

(root) NOPASSWD: /usr/bin/sed

利用详情可见sed | GTFOBins,sed是一个强大的文本处理工具,用于对文本进行处理、读取和编辑

操作方式

运行如下命令即可提权:

sudo sed -n ‘1e exec bash 1>&0’ /etc/hosts

sed中有选项-n,表示不自动打印所有行(默认情况会打印所有行),仅仅打印我们想要打印的对应行,单引号’1e exec bash 1>0&1’是sed自有的命令,用来实现启动新的shell会话,其中1e表示在第一行后执行命令(1表示第一行,e表示执行命令),然后执行exec bash启动bash,0>&1将输出重定向到输入,形成一个信息流,/etc/hosts是一个文件(其他文件也行),由于sed本身是一个对文本的处理工具,因此必须添加一个待读取的文件,是什么不重要,但必须有,否则报错。

sudo service

利用前提

当前用户可以以sudo高级权限运行service,即运行sudo -l后会有如下的行:

(root) NOPASSWD: /usr/bin/service

利用详情可见service | GTFOBins,service用于管理Linux中的系统服务,能够将可执行文件作为服务启动。

操作方式

运行如下命令即可提权:

sudo service …/…/bin/bash

本质上就是利用service的高权限启动bash的服务,需要注意的是两个…/ ,由于service启动服务并不是通过相对路径或绝对路径,返回上两级目录才能保证service的搜索范围内能够找到bash。

sudo socat

利用前提

当前用户可以以sudo高级权限运行socat,即运行sudo -l后会有如下的行:

(root) NOPASSWD: /usr/bin/socat

利用详情可见socat | GTFOBins,socat是一个多功能的网络工具,可以用来建立双向的数据传输通道。

操作方式

运行如下命令即可提权:

sudo socat stdin exec:/bin/bash

socat可以通过stdin参数作为标准输入来执行命令,此处执行启动bash的命令,其中exec:/bin/bash这种格式是socat的语法。

sudo ssh

利用前提

当前用户可以以sudo高级权限运行ssh,即运行sudo -l后会有如下的行:

(root) NOPASSWD: /usr/bin/ssh

利用详情可见ssh | GTFOBins ,ssh是渗透过程中非常常见的远程登录突破口。

操作方式

运行如下命令即可提权:

sudo ssh -o ProxyCommand=‘;bash 0<&2 1>&2’ x

ssh中的参选项ProxyCommand表示用一个代理服务器连接到远程主机,是在进行ssh操作之前就执行的命令,此处正是利用这个机制进行提权。-o表示option,引出ProxyCommand,';bash 0<&2 1>&2’是核心的提权逻辑,启动bash后对输入输出进行了重定向,但如果仅仅这样写(不加分号的话),引号中的内容会作为ssh的通道,完成代理服务,此时在ssh进行密钥交换的时候会无法与主机通信导致错误。分号就是起了这样的作用,分号的前面隐含了一个空语句,空语句一定能执行成功,只有分号前面的语句执行成功时后面的提权命令才会执行,这是bash的逻辑。最后的x就表示要连接的主机,随便写个啥都行,只要参数不空即可。说的有点绕,我自己也没完全理解清楚,回头再查一查。

sudo ssh-keygen

利用前提

当前用户可以以sudo高级权限运行ssh-keygen,即运行sudo -l后会有如下的行:

(root) NOPASSWD: /usr/bin/ssh-keygen

利用详情可见ssh keygen | GTFOBins

操作方式

ssh-keygen有选项-D,用来指定动态链接库,在ssh-keygen执行的时候加载和使用,我们可以在动态链接库中添加提权逻辑。构造一个文件,写入提权逻辑,并按照动态链接库的方式进行编译。首先将提权逻辑写成一个动态链接库,我们可以直接vim getRoot.c 。内容如下:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

//指定静态无返回值的函数,设置属性constructor
static void inject()attribute((constructor));

void inject(){
//设定uid为0,即root
setuid(0);
system(“/bin/bash -p”);
}

对此.c文件进行编译,使用共享库的编译方式,输出.so文件:

gcc -shared -fPIC -o getRoot.so getRoot.c

此时通过-D参数利用共享库文件getRoot.so即可提权:

sudo ssh-keygen -D ./getRoot.io

注意此时getRoot.io必须给出路径,否则会找不到共享库文件,因为默认情况寻找共享库会在环境变量LD_LIBRARY_PATH寻找共享库,而环境变量中并没有我们编写的这个共享库文件。

sudo strace

利用前提

当前用户可以以sudo高级权限运行strace,即运行sudo -l后会有如下的行:

(root) NOPASSWD: /usr/bin/strace

利用详情可见strace | GTFOBins,strace可用于追踪和记录另一个进程的系统调用和接收到的信号,在调试和理解程序的运行方式时非常有用。

操作方式

运行如下命令即可提权:

sudo strace -o /dev/null /bin/bash

其中-o /dev/null表示将输出信息直接丢掉,/bin/bash直接作为strace要追踪的程序,因此会启动bash,也就实现了提权。

sudo systemctl

利用前提

当前用户可以以sudo高级权限运行systemctl,即运行sudo -l后会有如下的行:

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注网络安全获取)
img

[外链图片转存中…(img-8TuwcDoN-1712637758928)]
[外链图片转存中…(img-arMKW7U0-1712637758929)]
[外链图片转存中…(img-RYu9FTqi-1712637758929)]
[外链图片转存中…(img-UzooonR4-1712637758930)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注网络安全获取)
[外链图片转存中…(img-ob2YAsyd-1712637758930)]

  • 13
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值