写点什么

物联网渗透测试(二):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:001348

评论 1 条评论

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

基于TOGAF和WAF的企业级架构

俞凡

架构

Linux文件的目录结构解析

芯动大师

Nautilus Chain 与 Coin98 生态达成合作,加速 Zebec 生态亚洲战略进程

鳄鱼视界

Kubernetes多租户实践

俞凡

架构 Kubernetes 云原生

Aescripts StyleX for Mac激活版(AI高级视频风格化工具)

iMac小白

Aescripts StyleX下载 Aescripts StyleX插件

多年没有遇到如此流畅的面试了

HoneyMoose

vm虚拟机:VMware Fusion Pro 13 for mac

展初云

虚拟机 Mac软件 VM虚拟机

What's new in Arana v0.2.0

apache/dubbo-go

MySQL开发

如何一键私有化部署 Laf ?

米开朗基杨

体育直播观看平台开发成品源码”解决方案,提升用户的使用消费体验

软件开发-梦幻运营部

Nautilus Chain 与 Coin98 生态达成合作,加速 Zebec 生态亚洲战略进

威廉META

Nik Collection 6 for Mac(PS滤镜插件套装) v6.1.0中文激活版

iMac小白

PS滤镜Nik Collection Nik Collection下载 Nik Collection插件

Project Office X for Mac项目管理软件

展初云

Mac 项目管理软件 Mac软件

Sublime Text 4 for Mac代码编辑器

展初云

软件 Mac 代码编辑器

阿尔比特质押 ARBT 代币挖矿系统开发(源码搭建)成熟技术

l8l259l3365

简化

agnostic

软件工程

Python 循环

小万哥

Python 程序员 软件 后端 开发

BOE(京东方)首个智慧医养示范社区启航 树立医养融合新标杆

科技热闻

反敏捷宣言

俞凡

敏捷

DaVinci Resolve Studio 18补丁中文包

胖墩儿不胖y

视频处理 Mac软件 视频编辑处理工具

揭开 Amazon Bedrock 的神秘面纱 | 基础篇

亚马逊云科技 (Amazon Web Services)

sdk 生成式人工智能 Amazon VPC

文件夹图标修改器 Folder Factory最新中文版

胖墩儿不胖y

Mac软件 文件夹图标修改工具

2023-10-21:用go语言,一共有三个服务A、B、C,网络延时分别为a、b、c 并且一定有:1 <= a <= b <= c <= 10^9 但是具体的延时数字丢失了,只有单次调用的时间 一次调

福大大架构师每日一题

福大大架构师每日一题

如何发现更多比特币大户钱包地址?以bitget 钱包为例

石头财经

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