HackTheBox - Medium - Linux - Awkward

Awkward

Awkward 是一款中等难度的机器,它突出显示了不会导致 RCE 的代码注入漏洞,而是 SSRF、LFI 和任意文件写入/追加漏洞。此外,该框还涉及通过不良的密码做法(例如密码重用)以及以纯文本形式存储密码来绕过身份验证。


外部信息收集

端口扫描

循例nmap

file

Web枚举

file

Vhost枚举

ffuf

file

从主站的开发者工具中能找到router.js,里面有几个路由

file

/hr

file

http请求里有个token,常规把guest改admin,然后刷新页面

file

跳转到了dashboard

file

现在我们继续看services下的/api端点

file

通过staff-details,我们能够获得user和密码hash

file

hashcat爆出一个,是christopher.jones的

file

把token重置为guest,然后到/hr登录

file

SSRF

store-status参数是一个url,盲猜SSRF, 直接给一个url发现没成功

通过常规@符逃逸就成功了

file

前面的store子域是需要登录的,密码重用没成功

通过SSRF扫内网的http服务

生成数字字典

file

ffuf

file

file

3002披露了那几个api的后端源码

file

Foothold

值得注意的是all-leave,这里user虽然被黑名单严格检测,但依然有可乘之机, 这将通过jwt来让它妥协

file

这里的jwt是签名的,通过jhon爆破得到密钥

file

生成jwt poc

import jwtkey = "123beany123"
algorithm = "HS256"
payload = {"username": "/' /etc/passwd '"}token = jwt.encode(payload, key, algorithm=algorithm)
print(token)

file

两个用户,读/home/bean/.bashrc

file

读backup_home.sh

#!/bin/bash
mkdir /home/bean/Documents/backup_tmp
cd /home/bean
tar --exclude='.npm' --exclude='.cache' --exclude='.vscode' -czvf /home/bean/Documents/backup_tmp/bean_backup.tar.gz .
date > /home/bean/Documents/backup_tmp/time.txt
cd /home/bean/Documents/backup_tmp
tar -czvf /home/bean/Documents/backup/bean_backup_final.tar.gz .
rm -r /home/bean/Documents/backup_tmp

从浏览器下.tar.gz,解压之后得到

file

在xpad中能看到bean的明文凭据

file

通过这个明文密码,我们可以登bean的ssh

file

本地权限提升

现在,我们能够通过admin:bean的凭据 登录store子域

file

同时,pspy也发现了root似乎在读leave_requests.csv后发送了一封邮件,我看到bean.hill时我想应该可以修改leave_requests.csv将username改为恶意命令来达到劫持这条命令的效果

2024/01/05 23:40:01 CMD: UID=0     PID=4834   | tail -1 /var/www/private/leave_requests.csv 
2024/01/05 23:40:01 CMD: UID=0     PID=4836   | /bin/bash /root/scripts/notify.sh 
2024/01/05 23:40:01 CMD: UID=0     PID=4841   | trivial-rewrite -n rewrite -t unix -u -c 
2024/01/05 23:40:01 CMD: UID=0     PID=4840   | mail -s Leave Request: bean.hill christine

然鹅/var/www/private/leave_requests.csv无权读写

在store查看时,我发现了一些txt,并且去读取了它们,这些似乎是一些http参数

file

grep

file

在cart_actions.php中,值得关注的是这些代码

//check for valid hat valley store item
function checkValidItem($filename) {if(file_exists($filename)) {$first_line = file($filename)[0];if(strpos($first_line, "***Hat Valley") !== FALSE) {return true;
...
//add to cart
if ($_SERVER['REQUEST_METHOD'] === 'POST' && $_POST['action'] === 'add_item' && $_POST['item'] && $_POST['user']) {$item_id = $_POST['item'];$user_id = $_POST['user'];$bad_chars = array(";","&","|",">","<","*","?","`","$","(",")","{","}","[","]","!","#"); //no hacking allowed!!foreach($bad_chars as $bad) {if(strpos($item_id, $bad) !== FALSE) {echo "Bad character detected!";exit;}}foreach($bad_chars as $bad) {if(strpos($user_id, $bad) !== FALSE) {echo "Bad character detected!";exit;}}if(checkValidItem("{$STORE_HOME}product-details/{$item_id}.txt")) {if(!file_exists("{$STORE_HOME}cart/{$user_id}")) {system("echo '***Hat Valley Cart***' > {$STORE_HOME}cart/{$user_id}");}system("head -2 {$STORE_HOME}product-details/{$item_id}.txt | tail -1 >> {$STORE_HOME}cart/{$user_id}");echo "Item added successfully!";}

虽然我们依然无法直接rce,但是product-details/和cart/两个目录我们都有777权限,private/ www-data组应该有权限

在product-details/下创建一个新的4.txt,在第二行写入恶意命令

file

去到cart/创建软连接

file

创建cmd.sh

file

请求cart_actions.php

file

不出意外它会到来,除非手慢了

file

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

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

相关文章

Mybatis缓存实现方式

文章目录 装饰器模式Cache 接口及核心实现Cache 接口装饰器1. BlockingCache2. FifoCache3. LruCache4. SoftCache5. WeakCache 小结 缓存是优化数据库性能的常用手段之一&#xff0c;我们在实践中经常使用的是 Memcached、Redis 等外部缓存组件&#xff0c;很多持久化框架提供…

【物联网】手把手完整实现STM32+ESP8266+MQTT+阿里云+APP应用——第3节-云产品流转配置

&#x1f31f;博主领域&#xff1a;嵌入式领域&人工智能&软件开发 本节目标&#xff1a;本节目标是进行云产品流转配置为后面实际的手机APP的接入做铺垫。云产品流转配置的目的是为了后面能够让后面实际做出来的手机APP可以控制STM32/MCU&#xff0c;STM32/MCU可以将数…

【自学笔记】01Java基础-07面向对象基础-01封装

记录学习Java基础中有关面向对象编程的基础知识&#xff0c;包括面向对象思想&#xff0c;构造方法&#xff0c;封装思想&#xff0c;JavaBean。 1 面向对象概述 1.1 什么是面向对象编程 严谨来说&#xff1a;   面向对象编程&#xff08;Object-Oriented Programming&…

《深入理解Java虚拟机(第三版)》读书笔记:虚拟机类加载机制、虚拟机字节码执行引擎、编译与优化

下文是阅读《深入理解Java虚拟机&#xff08;第3版&#xff09;》这本书的读书笔记&#xff0c;如有侵权&#xff0c;请联系删除。 文章目录 第6章 类文件结构第7章 虚拟机类加载机制7.2 类加载的时机7.3 类加载的过程7.4 类加载器7.5 Java模块化系统 第8章 虚拟机字节码执…

手动创建idea SpringBoot 项目

步骤一&#xff1a; 步骤二&#xff1a; 选择Spring initializer -> Project SDK 选择自己的JDK版本 ->Next 步骤三&#xff1a; Maven POM ->Next 步骤四&#xff1a; 根据JDK版本选择Spring Boot版本 11版本及以上JDK建议选用3.2版本&#xff0c;JDK为11版本…

大数据 - 大数据入门第一篇 | 关于大数据你了解多少?

&#x1f436;1.1 概述 大数据&#xff08;BigData):指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合&#xff0c;是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。 大数据主要解决、海量数据的采…

torch.meshgrid和np.meshgrid的区别

numpy中meshgrid&#xff1a; 把数组a当作一行&#xff0c;再根据数组b的长度扩充行。 把数组b当作一列&#xff0c;再根据数组a的长度扩充列。 torch中meshgrid&#xff1a; 把数组a当作一列&#xff0c;再根据数组b的长度扩充列。 把数组b当作一行&#xff0c;再根据数组a的…

最优化理论期末复习笔记 Part 2

数学基础线性代数 从行的角度从列的角度行列式的几何解释向量范数和矩阵范数 向量范数矩阵范数的更强的性质的意义 几种向量范数诱导的矩阵范数 1 范数诱导的矩阵范数无穷范数诱导的矩阵范数2 范数诱导的矩阵范数 各种范数之间的等价性向量与矩阵序列的收敛性 函数的可微性与展…

Camtasia2024录屏软件简单实用的4K录制视频软件

Camtasia是一款功能强大的屏幕录制软件&#xff0c;适用于Windows和Mac操作系统。它具有简单的操作界面和丰富的编辑功能&#xff0c;coco玛奇朵可以让你轻松录制和编辑屏幕视频。Camtasia还支持添加文字、图像、动画等元素&#xff0c;同时提供了丰富的特效和滤镜功能&#xf…

RK3568 学习笔记 : ubuntu 20.04 下 Linux-SDK 镜像烧写

前言 开发板&#xff1a;【正点原子】ATK-DLRK3568 开发板&#xff0c;编译完 Linux-SDK 后&#xff0c;生成了相关的镜像文件&#xff0c;本篇记录一下 镜像烧写&#xff0c;当前编译环境在 VMware 虚拟机中&#xff0c;虚拟机系统是 ubuntu 20.04 此次烧写还算顺利&#xff…

redisson作为分布式锁的底层实现

1. redisson如何实现尝试获取锁的逻辑 如何实现在一段的时间内不断的尝试获取锁 其实就是搞了个while循环&#xff0c;不断的去尝试获取锁资源。但是因为latch的存在会在给定的时间内处于休眠状态。这个事件&#xff0c;监听的是解锁动作&#xff0c;如果解锁动作发生。会调用…

202402读书笔记|《当你老了》——灰蒙曙光比爱情温柔,清晨露珠比希望更可爱

202402读书笔记|《当你老了》——灰蒙曙光比爱情温柔&#xff0c;清晨露珠比希望更可爱 《当你老了》作者叶芝&#xff0c;断断续续碎片时间读完的一本书&#xff0c;不是很惊艳&#xff0c;但值得一读。就因为很喜欢当你老了&#xff0c;所以拾起的这本书。读完知道了原来叶芝…

VR与数字孪生:共同构筑未来的虚拟世界

随着科技的不断发展&#xff0c;数字孪生和VR已经成为当今热门的科技话题。作为山海鲸可视化软件的开发者&#xff0c;我们对这两者都有深入的了解。在此&#xff0c;我们将详细探讨数字孪生与VR的区别和联系。 首先&#xff0c;数字孪生&#xff08;Digital Twin&#xff09;…

QT上位机开发(网络程序界面开发)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 传统的上位机对接方式还是以232、485、can为主&#xff0c;随着网络的发展&#xff0c;越来越多的设备都是以网络进行通信的。毕竟相比较之前&…

C++ 之LeetCode刷题记录(七)

&#x1f604;&#x1f60a;&#x1f606;&#x1f603;&#x1f604;&#x1f60a;&#x1f606;&#x1f603; 开始cpp刷题之旅&#xff0c;多学多练&#xff0c;尽力而为。 先易后难&#xff0c;先刷简单的。 28. 找出字符串中第一个匹配项的下标 给你两个字符串 haystac…

windows安装RabbitMQ

1、下载 下载地址&#xff1a;https://www.rabbitmq.com/ 因为RabbitMQ是基于Erlang语言开发的&#xff0c;所以我们要先安装Erlang环境。 2、安装erlang 双击otp_win64_20.2.exe&#xff0c;点击next 选择安装路径 3、配置erlang环境变量 新建系统变量名为&#xff1a;ERLA…

ssrf之dict协议和file协议

1.dict协议 dict是什么协议呢&#xff1f; 定义&#xff1a;词典网络协议&#xff0c;在RFC 2009中进行描述。它的目标是超越Webster protocol&#xff0c;并允许客户端在使 用过程中访问更多字典。Dict服务器和客户机使用TCP端口2628。 官方介绍&#xff1a;http://dict.o…

基于帝国主义竞争算法优化的Elman神经网络数据预测 - 附代码

基于帝国主义竞争算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于帝国主义竞争算法优化的Elman神经网络数据预测 - 附代码1.Elman 神经网络结构2.Elman 神经用络学习过程3.电力负荷预测概述3.1 模型建立 4.基于帝国主义竞争优化的Elman网络5.测试结果6.参考文献7.Matl…

【电路笔记】-电感器

电感器 文章目录 电感器1、概述2、电感器的时间常数3、电感器示例1 电感器是一种由线圈组成的无源电气元件&#xff0c;其设计目的是利用电流通过线圈而产生的磁力和电力之间的关系。 1、概述 在本中&#xff0c;我们将看到电感器是一种电子元件&#xff0c;用于将电感引入到电…

2023年高级软考系统架构师考题参考

对于一些有实践经验的同学来说&#xff0c;感觉不难&#xff0c;但是落笔到纸面上&#xff0c;就差强人意了&#xff0c;平时这方面要多练习&#xff0c;所想所思要落到纸面上&#xff0c;或者表达清晰让别人听懂&#xff0c;不仅是工作中的一个基本素质&#xff0c;也是个非常…