苏州图书馆wifi认证
苏州图书馆wifi认证之旅
上个月月底去苏州图书馆自习(看HLE vs T1),难受的是流量在来苏州的路上用的已经差不多了,而苏州图书馆wifi的portal认证验证码却无法收到。想着以后可能经常会来这里自习,还是尝试破解一下吧。
绕过portal认证
抱着试试看的心态,先试了理工科大学生必经之路之用53端口绕过校园网认证。没想到在连接上图书馆的公共wifi后,用dig命令发现53端口竟然是开放的。
这种方案原理很简单,wifi可以转发dns请求,我们只需要一台服务器,把全部的请求伪装成dns请求发给服务器,服务器解包后请求正常网站,再把回应打包成dns回应回复给我们,我们再拆包就可以了。dns2tcp的方案网上有很多实现,这里因为博主不想用服务器的原因就没有使用这种方案。
F12大法
在poral认证页面,除了手机验证码认证外,没有其他选项了。一般的公共wifi都会照顾一些特殊群体,开放一些特殊认证,例如访客认证、注册用户认证等等。这些认证可能因为鉴权不严格让我们钻空子。
F12打开控制台,在大致看了一下前端代码后,果然不出所料。除了手机号认证外,还有微信认证、邮箱认证、快速认证等等。
function pcweixin_auth() {
var userMac = $("#userMac").val();
var ssid = $("#ssid").val();
var userip = $("#userip").val();
var port = imc_portal_function_readByodServerHttpPort();
var ip;
// æ ¹æ®å®¢æ·ç«¯ipæ¯v4è¿æ¯v6æ¥è¯¢å¯¹åºå½¢å¼ç微信æå¡å¨å°å
var ipVersion = imc_portal_function_getClientIPVersion();
if (ipVersion == IP_VERSION_V4) {
ip = imc_portal_function_readWeixinAddress();
} else if (ipVersion == IP_VERSION_V6) {
ip = "[" + imc_portal_function_readWeixinAddressIPv6() + "]";
}
var authUrl = "http://" + ip + ":" + port + "/weixin/wifiCode.jsp?ssid=" + ssid + "&userip=" + userip + "&usermac=" + userMac;
window.location.replace(authUrl);
}
function weixin_auth() {
if (!imc_portal_function_ifQuickAuth()) {
var r = f_preLoginForInputPanel();
if (!r) {
return false;
}
}
var showWechat = true;
var data;
$.ajax({
url: "/portal/pws?t=wechatAuth",
type: "POST",
cache: false,
async: false,
dataType: "text",
data: $("#form1").serializeArray(),
beforeSend: function() {
i_p_f_pageLoading("start");
},
success: function(json) {
data = json;
},
error: function(x, y, z) {
},
complete: function() {
i_p_f_pageLoading("complete");
if (data == null) {
alert($("#id_text_networkerror").val());
return false;
} else {
var json = eval("(" + i_p_f_base64DecodeAndUrlDecode(data) + ")");
if (json.resultCode != 0) {
alert($("#id_text_phone_invalid").val());
showWechat = false;
}
}
}
});
if (!showWechat) {
return false;
}
var phone = $("#id_userName").val();
var userMac = $("#userMac").val();
var ssid = $("#ssid").val();
var userip = $("#userip").val();
var port = imc_portal_function_readByodServerHttpPort();
var ip;
// æ ¹æ®å®¢æ·ç«¯ipæ¯v4è¿æ¯v6æ¥è¯¢å¯¹åºå½¢å¼ç微信æå¡å¨å°å
var ipVersion = imc_portal_function_getClientIPVersion();
if (ipVersion == IP_VERSION_V4) {
ip = imc_portal_function_readWeixinAddress();
} else if (ipVersion == IP_VERSION_V6) {
ip = "[" + imc_portal_function_readWeixinAddressIPv6() + "]";
}
var authUrl = "http://" + ip + ":" + port + "/weixin/wifi2.jsp?phone=" + phone + "&ac%2Dip=10%2E100%2E63%2E1&ssid=http%3A%2F%2F1%2E1%2E1%2E1&user%2Dipaddress=NECSE%2DWIFI&uaddress=10%2E100%2E68%2E127&umac=d0c637a6ecf3";
window.open(authUrl);
}直接在控制台中调用这两个函数后,发现imc_portal_function_readWeixinAddress函数返回的是null,微信认证还没有接入。顺着imc_portal_function_readWeixinAddress发现了访客的注册地址。
function imc_portal_function_readWeixinAddress() {
return 'null';
}
function imc_portal_function_readWeixinAddressIPv6() {
return 'null';
}
function imc_portal_function_readHttpPortIMC() {
return 'null';
}
function imc_portal_function_getClientIPVersion() {
return 4;
}
function imc_portal_function_goForgotPwd() {
window.location.href = "http://10.211.183.232:9066/ssvui/selfservice/mail/forgetPassword.html?sourcePage=portal&nasRedirectUrl=" + window.location.href;
}
function imc_portal_function_goModify() {
return "/portal/page/modifyPwdAlone.jsp" + window.location.search;
}
function imc_portal_function_guestRegister() {
window.location.href = "http://10.211.183.232:9066/ssvui/selfservice/preregister/guestPreregister.html?fromPortalService=true&nasRedirectUrl=" + window.location.href;
}
function imc_portal_function_inodeDownload() {
window.location.href = "http://10.211.183.232:9066/ssvui/selfservice/preregister/clientDown.html";
}非常幸运,访客认证的地址http://10.211.183.232:9066/ssvui/selfservice/preregister/guestPreregister.html可以访问,并且注册没有进行检测。随便填了一个信息就可以注册使用wifi了。
访客wifi告知仅一天有效期且仅限一台设备。当天发现手机和电脑可以同时使用。隔了两天又去了图书馆,居然没失效诶,还能继续用。
其实这个后台渗透进去非常容易,因为可以上网了就没有往下继续进行了。
下策(未实践)
- 通过arp中间人攻击,截获其他设备的数据包,把其他人的认证信息拿到自己用。
- 直接问其他人,让我用用你的。(黑客的最佳实践)