Estoy haciendo un pentest y obtuve este código:
(function() {
var subdomain = (function() {
var query = /[?&]css=([^&#]*)/i.exec(window.location.search);
if(query) {
return query[1];
}
var URL = window.location.host.split('.');
if (URL.length > 1) {
return URL[0];
}
})();
if (subdomain) {
var link = document.createElement('link');
link.rel = "stylesheet";
link.href = "/" + subdomain + ".css";
document.getElementsByTagName('head')[0].appendChild(link);
}
})();
Agrega un archivo CSS al encabezado de cambio de marca.
La URL de destino se ve así:
http://some.company.com/p1=test&css=custom
Aquí hemos controlado el parámetro subdomain
que es igual a query
o URL[0]
.
query
es el resultado de /[?&]css=([^&#]*)/i.exec(window.location.search);
que es igual a custom
en este caso.
Si query
no está disponible en la URL, entonces URL[0]
es igual a some
aquí, no puedo pensar en hacer nada útil usando URL[0]
porque, para controlar su valor, tengo que cambiar some
a otra cosa que cambia completamente la URL y apunta a alguna otra página irrelevante.
De todos modos, la URL final de CSS sería "/custom.css" o "/some.css" si el parámetro CSS
no está disponible.
Intenté algunas cargas útiles para explotar esto, pero todas fallaron.
¿Alguna idea de si este código es vulnerable y cómo puede ser explotado?