写点什么

物联网渗透测试(二):IoT 中的 Web 应用

  • 2020-05-10
  • 本文字数:2667 字

    阅读完需:约 9 分钟

物联网渗透测试(二):IoT 中的 Web 应用

编者按:本文节选自华章网络空间安全技术丛书《物联网渗透测试》一书中的部分章节。

IoT 中的 Web 应用

网站,也称为 Web 应用,已经无须对其进行过多的介绍了。基本的 Web 应用程序通常最少由前端 HTML 页面、JavaScript 脚本、1 台后台 Web 服务器、1 台应用程序服务器和 1 套数据库组成。随着 Web 应用的发展,为了降低后端架构或设备的计算载荷,Web 应用程序开始更多地依赖 JavaScript 脚本等前端代码。但是运行在互联网中的 Web 应用同运行在嵌入式设备中的 Web 应用略有不同。


读者所熟悉的 Web 应用组件之间存在更多的依赖关系,因为常见的 Web 应用会将 Web 服务器、应用服务器、数据库服务器以及后台运行的微服务进行分离。其中服务器的分离是出于性能和可用性等方面的考虑。而通常嵌入式 Web 应用被设计为在自包含的环境中运行。从更深层次上来说,也就是对嵌入式 Web 应用的性能和可用性方面关注较少。


目前 IoT 领域中主要有两种不同的 Web 应用模型,分别是混合云模型与独立嵌入式服务器模型。混合云模型中包含了厂商或者供应商提供的基于软件即服务(Software as a Service,SaaS) 的 Web 应用,作用是同运行在嵌入式设备固件中的 Web 应用程序建立连接,然后,将数据从厂商的云服务器中同步到本地网络的嵌入式设备中。有些 IoT 设备则会直接使用 IoT 云服务提供商的 SDK,例如 AWS 提供的 IoT SDK 和 Azure 提供的 IoT SDK,并且将这些 SDK 编译进设备的 Web 应用程序栈中。为了确保符合机构的服务条款并且遵循所在区域的法律规范,混合云模型的识别非常重要。许多采用混合云模型的 IoT 公司经常以 OEM 的方式借助第三方软件开发公司或 ODM 来管理其 Web 应用。这些 ODM 的 Web 应用通常被贴牌为某款 OEM 产品,在没有设置通信流量代理的情况下,用户通常不会注意到这种情况。


IoT 设备的混合云模型如图 1 所示,其中 IoT 设备能够连接到互联网。该场景中,在厂商云平台与用户设备之间由设备接口提供 Web 服务,用户访问设备接口进行操作或者进行数据收集。



图 1 混合云 Web 应用模型


如前所述,嵌入式设备的 Web 应用在设备固件内部运行,以 lighttpd 或者 nginx 等程序作为嵌入式 Web 服务器,而不存在外部依赖。读者可能对这些独立嵌入式 Web 应用比较熟悉,在打印机、VoIP 电话和家庭路由器中都可以找到这些应用。通常情况下,用户输入直接发送到设备固件,如果未对用户输入进行验证或过滤,攻击者则可以向设备发起攻击尝试执行任意命令。在某些情况下,出于防止外部攻击或者便于管理的目的,嵌入式 Web 应用设计为仅在局域网(Local Area Network,LAN)环境中运行。这也是家用 IoT、工控设备和商用设备中的典型情况。通常将设备限定在局域网环境下是出于安全方面的考量,但从我们所了解的情况来看,这种方式难以有效地缓解攻击。这是因为,持有这种观点的设备厂商在现实中发现客户总是会有意无意地将设备连接到互联网上,从而给用户网络带来安全隐患。


图 2 展示了用户通过 Web 浏览器连接独立嵌入式 Web 应用的过程,其中该应用不依赖于外部系统。



图 2 本地嵌入式 Web 应用模型

Web 通信

浏览器、嵌入式服务器和 Web 应用服务器之间的通信通常要么借助简单对象访问协议(Simple Object Access Protocol,SOAP)/XML 等 Web 服务,要么借助基于 HTTP/HTTPS 符合 REST 规范的 API 来实现。SOAP 请求中通常包含 1 个 envelope 元素、1 个 xmlns:soap 命名空间、1 个 encodingStyle 属性,此外还包括其他元素,例如 SOAP 中的 body 元素。读者可以通过访问链接https://www.w3schools.com/xml/xml_soap.asp了解更多关于 SOAP 协议的内容。


下面展示了一个查询账户余额的 HTTP SOAP 请求示例:


POST http://example.com/soap/webservices HTTP/1.1User-Agent:Mozzilla/t.0 (Machintosh;Intel Mac OS X 10.12; rv:49.0)Gecko/20100101 Firefox/49.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: en-US,en;q=0.5Authorization: BasicYWRtaW46YWRtaW4=Content-Length: 821Content-Type: text/plain;charset=UTF-8DNT: 1Connection: keep-aliveHost: example.com
<soapenv:Envelopexmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"xmlns:v1="http://example.com/webservices/BillingAccountSummary/V1"> <soapenv:Header/> <soapenv:Body> <getAccountBalance> <messageHeader> <action>get</v1:action> <scopeObject>AccountBalance</v1:scopeObject> <revision>1.0</v1:revision><createdTimestamp>2017-01-13T09:15:01.469</v1:createdTimestamp> <sourceInterface>WEB</v1:sourceInterface> <messageIdentifier>00810187-101EDDA4</v1:messageIdentifier> <functionName>getAccountBalance</v1:functionName> </messageHeader><billingAccountIdentifier>1234566</v1:billingAccountIdentifier> </getAccountBalance> </soapenv:Body></soapenv:Envelope>
复制代码


REST 风格的 API 用到了多个 HTTP 方法,而这些方法的使用并不符合传统 Web 应用的用法,例如传统 Web 应用采用 PUT 方法更新资源,采用 DELETE 方法删除资源,而采用 REST 风格的请求则是通过 URL(对于敏感数据不推荐采用此方法进行处理),或者以 JSON 格式表示的 HTTP 协议报文等方式调用参数。


在电子邮件分发列表中添加邮件地址 test@example.com 的 REST 请求示例如下:


POST /rest/email/subscribe HTTP/1.0Host: example.comUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:49.0)Gecko/20100101 Firefox/49.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Content-Type: application/jsonContent-Length: 160Connection: close
{ "subscriberId":"12345", "emailAdress":"test@example.com", "confirmed":"Y"}
复制代码


可以采用中间人代理来查看基于 SOAP 协议或符合 REST 风格的请求报文。常用的 Web 代理工具包括 Burp Suite 与 OWASP ZAP,借助这些工具可以查看从浏览器和移动应用发送到 Web 应用后端的所有请求。我们将在第 4 章中详细介绍如何配置代理来查看应用流量。


对于 IoT 设备而言,常常采用 Web 应用对其设备进行控制,因此,无论是从网络内部还是网络外部来看,Web 应用都是发起攻击的常见途径。在第 4 章中,我们将会了解如何识别 IoT 设备中 Web 应用的缺陷与漏洞。


图书简介https://item.jd.com/12623610.html



相关阅读


物联网渗透测试(一):简介


2020-05-10 10:001485

评论 1 条评论

发布
用户头像
可以寻求合作吗?
2023-03-26 16:35 · 菲律宾
回复
没有更多了
发现更多内容

通过源码分析RocketMQ主从复制原理

京东科技开发者

Java 源码分析 RocketMQ 端口 企业号 3 月 PK 榜

架构训练营第10期模块8作业

Geek_4db2d5

关于 App Store 苹果商店价格的那些事(历上最全版)

37手游iOS技术运营团队

apple In App Purchase App Store Connect API app store iTunes Store

热点面试题:箭头函数与普通函数的区别?

Immerse

JavaScript 箭头函数 前端面试题 #热点问题 普通函数

Zepoch节点持有人数大突破,Nautilus Chain 或有海量空投

西柚子

数据库自治平台 KAP 监控告警架构及实例演示

KaiwuDB

数据库· KaiwuDB 数据库自治

软件测试/测试开发 | 被测系统架构与数据流分析

测试人

软件测试 自动化测试 测试开发

数字先锋| 云端来养牛,致富有“犇”头

天翼云开发者社区

软件测试/测试开发 | 被测项目需求你理解到位了么?

测试人

软件测试 自动化测试 测试开发

无服务器Serverless总结

天翼云开发者社区

2023年了,做SEO还有必要吗?

京东科技开发者

搜索引擎 SEO 搜索算法 SEO优化 企业号 3 月 PK 榜

NFTScan 与 BNB Chain 达成战略合作,成为BNBChain Kickstart 官方数据服务提供商

NFT Research

NFT 数据基础设施

软件测试/测试开发 | 软件项目管理与跨部门沟通协作

测试人

软件测试 自动化测试 测试开发

湖北文旅虚拟数字代言人“胡贝儿”首秀,一点资讯助力地方文旅元宇宙落地

科技热闻

阿里开源自研高性能核心搜索引擎 Havenask

阿里技术

搜索引擎 AI·OS实践

ChatGPT “眼”中的开源数据库

墨天轮

数据库 ShardingSphere 开源数据库 Tapdata ChatGPT

深入浅出玩转监控宝|网站监控之管理网站监控任务

云智慧AIOps社区

安全 监控宝 云智慧 监控软件 网站监控

容器化部署和传统部署的四个区别详细讲解-行云管家

行云管家

容器 容器化部署

SREWorks数智运维平台开源一周年 | 回顾与展望

阿里云大数据AI技术

大数据 开源 运维 企业号 3 月 PK 榜

安全可信| 天翼云全栈云原生安全防护平台入选工信部“2022年网络安全技术应用试点示范项目”!

天翼云开发者社区

中国电信天翼云喜获2022中国电子学会科技进步奖一等奖!三等奖!

天翼云开发者社区

采编式AIGC视频生产流程编排实践

百度Geek说

服务编排 AIGC 企业号 3 月 PK 榜 引擎架构

高校技术导师云集 OpenHarmony技术峰会“高校技术俱乐部分论坛”举办

极客天地

XView 架构升级之路

京东科技开发者

架构 框架 企业号 3 月 PK 榜 xview

带你认识3个J.U.C组件扩展

华为云开发者联盟

开发 华为云 华为云开发者联盟 企业号 3 月 PK 榜

OpenHarmony 3.2 Beta Audio——音频渲染

OpenHarmony开发者

OpenHarmony

量化合约系统开发程序技术(源码搭建)合约量化开发逻辑方案

I8O28578624

由浅入深,揭秘企业级OLAP数据引擎ByteHouse

字节跳动数据平台

Clickhouse 数据引擎 企业号 2 月 PK 榜

PostgreSQL:启动与停止

天翼云开发者社区

玩转GaussDB 中的SET操作符

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 3 月 PK 榜

物联网渗透测试(二):IoT 中的 Web 应用_安全_亚伦·古兹曼,阿迪蒂亚·古普塔_InfoQ精选文章