Prime1 - 提权的另一种解法,彻底搞懂OpenSSL解密渗透提权,超强思路版。

提权枚举

现在我们直接从低权限用户开始;我们先按照提权步骤,简单的系统枚举

虽然我们知道可以利用系统版本低进行内核提权,内核提权虽然比较快比较方便,但也比较暴力,缺点非常明显;很容易导致系统服务中断,或者不稳定

  • 打比赛除外,你打比赛只要拿到flag得分都行

image-20240601231010996

列出账号具有的权限

执行enc,可以用root权限执行,不需要密码

image-20240601231301368

ENC探索与查找

image-20240601231426308

使用strings是否能看一下enc的内容;同样是没有权限的

image-20240601231632059

使用file enc
enc: executable, regular file, no read permission

他说这是个可执行的不可读权限文件

我们运行enc,需要密码;尝试了password.txt与user.txt都不行image-20240601232213214

  • 新的知识点openssl

此处应该是另一种思路寻找enc的泄露密码;根据经验,存放密码应该是系统备份的位置

我们这个权限应该是有很多报错的,将报错扔掉

find / -name '*back*' 2>/dev/null

后来我实验发现删不删报错都一样,应该是系统不支持的问题,因为页面一闪而过,我们对结果数据进行排序

,再做个less分屏显示;貌似没多大卵用;

我们在搜集过程中要么用backup要么用pass,为什么不用password,因为后边他写的是wd还是word就不清楚;如果我们搜bak就太多了

find / -name '*backup*' 2>/dev/null | sort | less

搜集一下信息吧;

/opt/backup
/opt/backup/server_database/backup_pass

/var/backups

image-20240601233252265

image-20240601233350693

将这个三个地方都看一下;嗯,试了下/var/backups,有passwd的备份,但是没有权限去读,shadow也是相同,sudo下看能不能cp到/tmp目录下;不行,再看其他文件有无信息;

你的密码为了enc,backup_password;然后祝福我们

image-20240601234112410

找的过程非常顺利,主要是怎么搜索,查找的时候用引号将关键词,用的backup查找,也可以用pass,避免信息洪水,把错误信息扔掉,还有排序,less使用

ENC破解

运行enc,输出了good;image-20240601234853850

有两个文件貌似无权显示,加个sudo再尝试下;

好的,这样就出来了

image-20240601235133845

cat;一个像base64,一个说我们是ippsec的粉丝,将ippsec字符串转成md5哈希形式,用它获得真实自己

image-20240601235216525

md5格式生成

echo -n 'ippsec' |md5sum

-n 不输出尾随换行符

都是固定格式,不会就自己查资料,要么是–help

要么是man 命令

image-20240602000015099

如果不用n;看一下;这个结果完全是不一样的

一定要知道,如果只是视觉上来看,或者文本标异的话那就不需要;如果设计到字节级操作,那就要考虑到

image-20240602000052873

美化下md5生成的值,echo -n 'ippsec' | md5sum | awk -F ' ' '{print $1}'

awk是个文本编辑器,-F 是指定靠什么字符进行分割,第一第二分别是$1、$2、…

366a74cb3c959de17d61db30591c39d1

image-20240602000638553

openssl破解语句

看红队笔记才知道给的编码是openssl加密解码的,通过key.txt解出enc.txt的内容;后来才了解到,openssl解密后跟enc,怪不得这个思路没走,现在知道就得记住了

enc与openssl是捆绑的,

解密是-d 因为里面有base64编码,

我们还要解64编码-a 64位,

-k 指定上一步生成的md5


构造Cipher数据

这个是假如我们不知道base64编码(因为编码有很多,下次可能就是不认识的编码)解决的方法

openssl --help将编码复制到文件里进行整理

image-20240602002304784

我们用awk全局替换所有空格替换成回车键进行打印

  • gsub 替换
  • wc -l 行计数
  • uniqc 取唯一
awk '{gsub(/ /,"\n");print}'   cipher | sort | uniq | wc -l

整理完之后就可以把这些重定向到cipher里面

awk '{gsub(/ /,"\n");print}' cipher | sort | uniq > ciphers

cat

image-20240602004020030

这个做完之后掉头继续做openssl破解语句,看openssl enc --help说明-k怎么使用

image-20240602004557419

那我们还需要对md5进行echo值进行修改,那我们直接在输出修改语句吧

od 是linux系统命令,用man去查,

转储文件以8进制

image-20240602004924485

  • -A是根 不需要指定任何类型那就是n
  • -t x1
echo -n 'ippsec' | md5sum | awk -F ' ' '{print $1}' | od -A n -t x1

image-20240602005553963

多了一个字符0a,再对oa去掉

tr -d 去掉任何换行符

echo -n 'ippsec' | md5sum | awk -F ' ' '{print $1}' | tr -d '\n' | od -A n -t x1

image-20240602005812718

那现在还要进行修剪,

echo -n 'ippsec' | md5sum | awk -F ' ' '{print $1}' | tr -d '\n' | od -A n -t x1 | tr -d '\n' | tr -d ' '

image-20240602010012159

这个才是我们需要的,指定给key的

3336366137346362336339353964653137643631646233303539316333396431

for循环成功执行

们可以构造bash脚本,写一个for循环,将CipherTypes中的每一行替换为上述命令中的-cipher,bash脚本如下:

for cipher in $(cat ciphers);do echo 'nzE+iKr82Kh8BOQg0k/LViTZJup+9DReAsXd/PCtFZP5FHM7WtJ9Nz1NmqMi9G0i7rGIvhK2jRcGnFyWDT9MLoJvY1gZKI2xsUuS3nJ/n3T1Pe//4kKId+B3wfDW/TgqX6Hg/kUj8JO08wGe9JxtOEJ6XJA3cO/cSna9v3YVf/ssHTbXkb+bFgY7WLdHJyvF6lD/wfpY2ZnA1787ajtm+/aWWVMxDOwKuqIT1ZZ0Nw4=' | openssl enc -d -a -$cipher -k 3336366137346362336339353964653137643631646233303539316333396431;done

image-20240602011705311

密码为tribute_to_ippsec,很可能就是saket的ssh密码

image-20240602011859307

直接进入了ssh;提高交互性

python -c 'import pty;pty.spawn("/bin/bash")'

提权

给了提示信息,他说可以让我们执行此文件

/home/victor/undefeated_victor

image-20240602012133055

如果你能打败我,那就在你面前挑战我;/challenge: 未找到

那我们就写入内容

image-20240602012432567

那我们继续执行/bin/bash追加到challenge

对文件加执行权限,再次运行提示的程序,可以看到提权成功

这个靶机openssl思路也是解决了

eated_victor

如果你能打败我,那就在你面前挑战我;/challenge: 未找到

那我们就写入内容

那我们继续执行/bin/bash追加到challenge

对文件加执行权限,再次运行提示的程序,可以看到提权成功

这个靶机openssl思路也是解决了

image-20240602012721851
目前红队打靶就就更新到这里吧,要去忙其他的事情了,记录下红队视频的记录
https://www.bilibili.com/video/BV1ue4y1S7Zm?t=2.6
该去复习蓝队知识备战护网了,还需要保持学业期末成绩不挂科,之后再进行专升本的学习,真的是突然发觉时间不够用了,来年再见此期红队打靶更新吧!!!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【云原生】Kubernetes----POD控制器

目录 引言 一、Pod控制器概述 二、Pod控制器的种类 (一)ReplicaSet (二)Deployment (三)StatefulSet (四)DaemonSet (五)Job 三、使用POD控制器 &a…

【Seafile】Seafile容器版文件删除后存储空间不释放问题解决

Seafile是一款非常优秀的网盘系统,我们可以根据官方文档,在本地虚拟机研究Seafile免费版的安装和使用,安装建议采用使用docker容器的方式。 不过在使用过程中,刚接触的小伙伴可能会遇到这样的问题: 删除网盘里面的文…

数据赋能(106)——方法论:描述模式与AI——批量处理

在一系列相似的主题内容进行编写时,可以采用批处理的方式。主要步骤如下: 1、确定主题内容模式。如:各个主题的概述中,包括如下内容模式项目:工作主要目的、工作重要性、工作核心内容、工作本质 2、确定模式的各项内…

C++设计模式-状态模式

文章目录 28. 状态模式 运行在VS2022,x86,Debug下。 28. 状态模式 状态模式让一个对象的行为随着内部状态的改变而改变,而该对象也像换了类一样。应用:如在游戏开发中,游戏有不同场景,如主菜单、开始、战斗…

在leafet上画圆、多边形、线、矩形

在leaflet上画圆、多边形、线、矩形 <template><div id"map" class"map"></div> </template><script> import L from leaflet; export default {data () {return {myGroup: ,};},mounted () {this.initMaps()this.huizhiro…

Houdini的PythonScript基本使用

前言 Houdini内置了Python脚本和相应的编辑器, 很多时候想灵活的制作各种Houdini工具, 基本是必须用到 Python。Houdini官方的python提供了非常完善的接口, 比如可以创建各种节点&#xff0c;连接各种节点&#xff0c;遍历节点各种数据&#xff0c;遍历节点参数等等。 Houdin…

Spring中Bean的生命周期详解

目录 Bean的定义和作用Bean的生命周期概述Bean实例化阶段依赖注入阶段初始化阶段Bean的使用销毁阶段完整的Bean生命周期流程示例代码总结 Bean的定义和作用 在Spring框架中&#xff0c;Bean是指由Spring IoC容器管理的Java对象。Bean是构建Spring应用程序的基本单元&#xf…

word避免画质画质模糊方法

问题描述&#xff1a;   近期写文档时会高频率贴图&#xff0c;粘图过程中发现Word会自动压缩图片画质&#xff0c;而且压缩得很严重&#xff0c;下面是一幅图被压缩前后的画质对比 &#xff08;图片压缩前&#xff09; &#xff08;图片压缩后&#xff09; 解决方案&#x…

基于JSP的九宫格日志网站

你好呀&#xff0c;我是学长猫哥&#xff01;如果有需求可以文末加我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;JSP技术 工具&#xff1a;浏览器/服务器&#xff08;B/S&#xff09;结构 系统展示 首页 管理员功能模块 用户功能模块 摘要 本…

GPT-4o VS GPT-3.5 完胜

前言&#xff1a; 最近&#xff0c;GPT-4o已经限时免费开放了&#xff0c;试了一下&#xff0c;然后&#xff0c;说我的时间到了&#xff0c;然后&#xff0c;有给我转到3.5&#xff0c;正好遇到一个问题做一下对吧&#xff0c;感觉4O完胜啊。3.5还是很好胡诌&#xff0c;也就…

[Algorithm][动态规划][子序列问题][最长定差子序列][最长的斐波那契子序列的长度]详细讲解

目录 1.最长定差子序列1.题目链接2.算法原理详解3.代码实现 2.最长的斐波那契子序列的长度1.题目链接2.算法原理详解3.代码实现 1.最长定差子序列 1.题目链接 最长定差子序列 2.算法原理详解 思路&#xff1a; 确定状态表示 -> dp[i]的含义 以i位置元素为结尾的所有子序列…

Python知识点3---条件判断语句

提前说一点&#xff1a;如果你是专注于Python开发&#xff0c;那么本系列知识点只是带你入个门再详细的开发点就要去看其他资料了&#xff0c;而如果你和作者一样只是操作其他技术的Python API那就足够了。 Python的条件判断语句和其他的语言有些不一样&#xff0c;它只有if语…

【从加载数据库驱动包,理解java SPI】

SPI&#xff08;Service Provider Interface&#xff09; 从1.6引入&#xff0c;基于ClassLoader 来加载并发现服务的机制 对于msyql驱动 引入依赖 <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><v…

11.2 选择排序

目录 11.2 选择排序 11.2.1 算法特性 11.2 选择排序 选择排序&#xff08;selection sort&#xff09;的工作原理非常简单&#xff1a;开启一个循环&#xff0c;每轮从未排序区间选择最小的元素&#xff0c;将其放到已排序区间的末尾。 设数组的长度为 &#x1d45b;…

华东师范大学研究团队《Ecology Letters 》揭示植物如何改变其物候以响应全球变化

自工业革命以来&#xff0c;人类活动导致多种环境因子同时发生变化&#xff0c;包括气候变暖、降水模式改变、氮沉降增加和大气CO2升高。这些变化预计会影响植物生命周期事件的季节时序—植物物候&#xff08;Nature Reviews Earth & Environment | 傅伯杰院士团队发文阐述…

[C][栈帧]详细讲解

目录 1.栈帧1.进程地址空间2.栈帧说明 2.认识相关寄存器3.认识相关汇编命令4.过程理解5.栈帧总结6.补充 1.栈帧 1.进程地址空间 .进程地址空间 2.栈帧说明 调用函数&#xff0c;形成栈帧函数返回&#xff0c;释放栈帧局部变量是存放在栈区上的栈区内存的使用习惯是&#xff…

BPTT算法详解:深入探究循环神经网络(RNN)中的梯度计算【原理理解】

引言 在深度学习领域中&#xff0c;我们经常处理的是独立同分布&#xff08;i.i.d&#xff09;的数据&#xff0c;比如图像分类、文本生成等任务&#xff0c;其中每个样本之间相互独立。然而&#xff0c;在现实生活中&#xff0c;许多数据具有时序结构&#xff0c;例如语言模型…

什么是PLAB?

接上文PLAB---》 可以看到和TLAB很像&#xff0c;PLAB即 Promotion Local Allocation Buffers。用在年轻代对象晋升到老年代时。 在多线程并行执行YGC时&#xff0c;可能有很多对象需要晋升到老年代&#xff0c;此时老年代的指针就"热"起来了&#xff0c;于是搞了个…

Google Cloudbuild yaml file 中 entrypoint 和 args 的写法

编写cloudbuild.yaml 时有几个关键参数 entrypoint 和 args 的基本介绍 id: 显示在 cloud build logs 里的item 名字 name: docker 镜像名字 - 下面的命令会在这个镜像的1个容器instance 内执行 entrypoint: 执行的命令入口 &#xff0c; 只能有1个对象 args&#xff1a; 命名…

函数的创建和调用

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 提到函数&#xff0c;大家会想到数学函数吧&#xff0c;函数是数学最重要的一个模块&#xff0c;贯穿整个数学学习过程。在Python中&#xff0c;函数…