【NepCTF2022】原来你也玩智能家居 WriteUP + 出题思路

by Yunoon

前言

题目的灵感是来自于Yunoon这边自己为了方便显示器信号的频繁切换,不想一直摁显示器的切换按钮而来。
正巧家里还有小爱音响pro、智能网关这类,就想着组个智能家居,顺便把这些设备全都接入到一个平台上,目前比较友好的就是home assistant了。

Home Assistant 是一款用于家庭自动化的免费开源软件,旨在成为智能家居设备的中央控制系统,专注于本地控制和隐私。可以使用 Android 和 iOS 配套应用程序通过基于 Web 的用户界面访问它,或者通过支持的虚拟助手(如 Google Assistant、Amazon Alexa 甚至斯坦福大学的“Genie”(以前称为“Almond”))通过语音命令访问它开放虚拟助理实验室 (OVAL.) ----翻译自维基百科

这样可以将这些设备都接入到苹果生态中啦(懒狗、deadline都是核心生产力)。
在搭建好后,就购买了可以控制红外收发的设备(ESP8266+收发模块),以及HDMI切换器(支持红外控制)。

通过将ESP8266刷入激活了红外模块的tasmota系统

TASMOTA是具有快速设置和更新的完全本地控制。
使用 MQTT、Web UI、HTTP 或串行进行控制。
使用计时器、规则或脚本实现自动化。
与家庭自动化解决方案集成。
令人难以置信的可扩展性和灵活性。

通过tasmota的控制台可以接收到HDMI红外遥控的NUC数据,将获取的数据存储下来。

在将tasmota添加至home assistant中,在home assistant的configuration.yaml中编写一个开关模块(将获取到的NUC数据放在请求接口中),该模块将调用mqtt的订阅,实现利用mqtt+tasmota控制HDMI控制器。

并且在home assistant中添加HomeKit就可以将红外开关放人HomeKit中了~

题目描述

Yunoon最近沉迷于homeassistant,但他忘记了显示器切换的红外信号数据了,你能帮帮他么。

tips:因为Yunoon比较懒,所有的配置都是默认的。

一个被docker环境难倒的废人呜呜呜

URL:http://222.187.239.143:10013

直播间URL:https://b23.tv/bn0pPAR

别扫别的端口了,求求惹。

不用爆破密码我直接给:admin/admin

共享环境,请不要更改密码。

考点

弱密码(X)/mqtt订阅通配符/homeassistant/tasmota

出题步骤

  1. 弱密码登录(已经省略啦
  2. 通过查看设备,发现tasmota设备位于局域网中,无法访问。
  3. 可以通过tips了解到,tasmota的mqtt监听默认主题cmnd
  4. 利用在mqtt主题中获取到的cmnd加上通配符,即可监听所有的tasmota的mqtt数据。
  5. 再次点击切换,即可获取到data数据,即flag。

解题步骤

  1. 使用题目描述中的admin/admin进入

  2. 首页就可以发现有显示器切换的按钮。

  3. 但问题的点就是在如何获取到其中的信号(data数据),没有玩过home assistant的小伙伴可能就是一脸懵*,但这里就是一个考察大家如何通过已知的信息进行更多信息收集的能力,比如home assistant是什么,开启的服务。

  4. 进入后,发现开启了3个服务,分别为MQTT、Radio Browser、Tasmota

  5. 这里就可以考虑到题目描述中的默认配置,以及MQTT。

  6. Tasmota的MQTT默认订阅为cmnd/stat/tele

  7. 这里就可以利用MQTT的通配符特性来捕获cmnd下所有的数据,即cmnd/#

  8. 在MQTT的配置页面进行监听,再开启一个页面进入首页,点击屏幕切换,即可获取显示器切换的data。

    点击切换按钮

  9. 即可获取flag

解题步骤2.0

  1. 在原有基础上,可以下载MQTT服务的诊断文件,也可获得flag。

  2. 查看下载文件

后话

这个题目其实不算是漏洞考点(毕竟是Misc),主要就是在看看大家在遇到没有遇到过的环境时的临时应变以及信息收集的能力,塞入的真实环境也是节目效果,是要在拿到彩蛋后才能触发的真结局。

希望下一次的NepCTF能够给各位整点新活,我们下次再见!

关于彩蛋

再读下题目描述,和docker相关。
在这之前做出来都算哟。
后续会在平台关闭后再将彩蛋解题思路上线博客博客链接

本文链接:

https://yuno0n.top/index.php/archives/56/
1 + 6 =
快来做第一个评论的人吧~