He encontrado dos vulnerabilidades en el sitio de mi universidad y quiero informarlas pero no sé si estas son vulnerabilidades "realmente":
- RFI dentro del archivo SWF.
Ejemplo: https://www.site.com/opis.swf?sTitle=Vulnerable&sDesc=Again vulnerable&sPrice=Vulnerable&sCoverFront=http://www.neurosciencemarketing.com/blog/wp-content/photos/smiley1.jpg&sCoverBack=http://www.neurosciencemarketing.com/blog/wp-content/photos/smiley1.jpg&sBuyLink=http://www.google.com&sPath=http://www.neurosciencemarketing.com/blog/wp-content/photos/smiley1.jpg
Como puede ver, sTitle y sDesc son valores de texto, sCoverFront y sCoverBack son .jpg, sBuyLink es url de redirección (Mi idea es XSS vector: data: text / html, alert (document.cookie)) y sPath parece ser url para m4u video. Selección del applet swf:
Ejemplo: http://site.com/static/Covers.htm?b=http://www.stringfunction.com/img/url-encode-url-decode.jpg&f=http://www.stringfunction.com/img/url-encode-url-decode.jpg
Y aquí está el código para la configuración de la fuente:
<body onload="resizeToCovers()"><div id="resizer"></div>
<table cellspacing="0" cellpadding="0"><tr><td><img src="" id="frontBoxCover" /></td><td><img src="" id="backBoxCover" /></td></tr></table>
<script type="text/javascript">
var boxFront;
var boxBack;
boxFront = document.getElementById("frontBoxCover");
boxBack = document.getElementById("backBoxCover");
var qs = new Querystring();
var newF = qs.get('f','');
boxFront.src = newF;
var newB = qs.get('b', '');
if(newB == ''){
boxBack.style.displayFormat = "none";
}
boxBack.src = newB;
</script>
Y para Querystring:
/* Client-side access to querystring name=value pairs
Version 1.2.3
22 Jun 2005
Adam Vandenberg
*/
function Querystring(qs) { // optionally pass a querystring to parse
this.params = new Object()
this.get=Querystring_get
if (qs == null)
qs=location.search.substring(1,location.search.length)
if (qs.length == 0) return;
// Turn <plus> back to <space>
// See: http://www.w3.org/TR/REC-html40/interact/forms.html#h-17.13.4.1
qs = qs.replace(/\+/g, ' ')
var args = qs.split('&') // parse out name/value pairs separated via &
// split out each name=value pair
for (var i=0;i<args.length;i++) {
var value;
var pair = args[i].split('=')
var name = unescape(pair[0])
if (pair.length == 2)
value = unescape(pair[1])
else
value = name
this.params[name] = value
}
}
function Querystring_get(key, default_) {
// This silly looking line changes UNDEFINED to NULL
if (default_ == null) default_ = null;
var value=this.params[key]
if (value==null) value=default_;
return value;
}
¿Hay alguna vulnerabilidad en estos, vale la pena informarlos? Gracias.