• 原创文章 挖洞姿势
  • 分享一个略水但挺有意思的漏洞挖掘过程:ESP8266 wifi killer固件zhangguanzhang汉化版web ui界面wifi名字存在xss注入

一、漏洞简介

了解无线安全的同学应该都知道基于ESP8266的wifi killer固件,可以用来辅助无线渗透测试,其自带了一个web管理界面,其中有一个wifi ap列表,就是这个列表存在xss注入。

ESP8266大概长这个样子,我买的是可以用micro usb线连接电脑的,那个xss漏洞就在这玩意儿里面:

此漏洞仅存在于wifi killer张馆长汉化版,审计过官方原版的代码发现是没有此漏洞的,影响范围较小,并且难以利用,故公开。

二、挖洞过程

买了个ESP8266,让店家给刷好wifi killer固件邮过来的,午休的时候在办公室想体验一下,刚拿出手机查看wifi列表注意到有个wifi名字类似于下面这种的:

root <img />

具体名字我记不得了,大概就是这种模式,我觉得挺有意思的,估计这是哪位巨佬在测试wifi名注入吗?

然后我就想到wifi killer的web界面上也有一个wifi ap列表,于是便想试试那个列表是不是能够被注入,当我在wifi killer的管理界面上切换到wifi ap列表的时候,我发现这个热点的wifi名字只显示出了前面的root?

虽然我反应比较迟钝,但是也马上意识到了wifi名字这里有一个xss注入漏洞,接下来就是慢慢去测试payload确认一下到底能不能搞。

最开始的时候使用

<script>alert(/xss/)</script>

这种形式去测试的,但是却并没有生效,于是就去看了它前端的代码,发现是在js中拼接wifi名字然后通过innerHTML设置的到页面上的:

通过这种方式设置的script并不会被加载执行,但是可以通过设置一个img标签触发其error来绕过执行js,payload如下:

<img src=x onerror='alert(/!/)'>

用手机开个热点,热点的名字用上面这个payload:

然后再在wifi killer的管理界面刷新wifi列表,成功使用wifi名字触发了弹窗:

但是wifi的名字,也就是SSID,协议规定了它不能超过32位,这就很尴尬,几乎没有利用空间,最简单的payload就快占满了...

请教了303大佬有没有什么好的利用方案:

成吧,好歹也算是个利用方式,这样当我发现我的wifi列表中出现wifi killer默认的热点名字zhangguanzhang的时候,我就启动一个payload热点,不图别的,我就是吓吓他....毕竟我也做不了别的,啊哈哈哈哈

三、官方原版是如何做的呢

后来我还去看了原版的wifi killer的这部分逻辑:
https://github.com/SpacehuhnTech/esp8266_deauther/blob/v2/web_interface/js/scan.js
它的源代码里是有转义的:

跟进去看一下转义:

人家对尖括号进行了转义。

四、总结

以后凡是用户输入回显在页面的字段都试一试,审计一下相关代码,万一有注入呢...
如果不是办公室那个奇怪的热点名字提醒了我,我可能就与这个鸡肋的xss擦肩而过了...感谢那位不知道名字的好心人!

    CC11001100 SSID 除了XSS,还出现过命令注入和DOS,iPhone SSID 还出过两次问题 。

    1. 连接名为 ”%p%s%s%s%s%n“ 的WiFi后,会使手机无线连接功能作废。用户需要通过还原网络设置才能恢复WiFi功能。
    2. 连接名为 "%SecretClub%power“的WiFi,那么这部iPhone之后可能无法再正常使用WiFi功能。想要彻底恢复正常,只能抹掉手机所有数据,然后重新激活iPhone才可以。

      饭饭 tql! 刚买了个二手iPhone6当测试机准备学iOS安全,老司机多带带俺 😄

      7 天 后
      说点什么吧...