logo

中文|English|客服热线:4008107766

售后服务
4008107766
当前位置:首页 > 新闻中心 > 企业新闻
企业新闻

API威胁防护实践之网御Web应用安全防护系统

时间:2018-06-25

随着 Web 2.0 时代的到来,由于 JSON 数据格式简单,容易开发。开发者更喜欢使用 JSON 格式来编写 API,Web API 也呈现爆发性的增长。特别是近几年来,随着社交媒体和在线服务的发展,服务的提供者更喜欢对外提供开放的 Web API 供开发者调用。开发者通过网络调用 Web API 实现登录认证、消息推送、订单支付等功能,API 之间的相互调用极大的提高了开发效率,开发者可以在短时间内完成应用的设计与开发。只要服务提供者对外公开了 API,开发者就可以很简单的将服务集成进自己的应用,直接的享用该服务,不同的服务提供者集合在一起谋求共同发展。
 

Web API 是指使用 HTTP 协议进行网络调用的API(Application Programming Interface),是一个应用的外部接口。对于一个应用程序,人们通常不关注内部结构实现细节,只关心外部功能的使用。那么调用应用程序完成某个功能的规范方法即可称之为程序的 API。
 
Web API 安全隐患

由于 Web API的广泛普及与使用,与传统的 Web 安全问题一样,也存在敏感信息被恶意获取,用户权限被恶意使用等问题。除了天气预报、地理位置等这类公共服务信息的提供,几乎所有的 API 服务都存在用户认证、权限控制等,以便于服务提供商进行管理和收费。


近年来随着移动应用、云端应用的普及,Web 站点与 Web API 配套开发的情形越来越多,API  安全问题也是与日俱增。假如 Web  API 缺陷被恶意利用,用户隐私被公开或者盗用,那么服务提供者将会失去信用、失去用户,可能导致服务提供者破产倒闭,永远无法再次赢得用户的信任。


例如Instagram 在2017年由于 API 存在 bug,不少认证用户都发现自己的个人资料(包括邮箱地址、电话号码等)可轻易被他人获取。事情发生后,Instagram 虽然并未对漏洞细节做过多解释,只是表示漏洞已经修复。Instagram 对所有的注册用户发了电子邮件,提醒他们提防此次攻击,并小心可能会出现的钓鱼攻击,还有那些通过社工手段(邮件,短信,电话等方式)所带来的攻击。

▪ 安全隐患一:

客户端与服务器之间的监听与嗅探


Web API 和普通的 Web 站点一样,通过 HTTP 协议在互联网上进行数据传输,由于HTTP协议本身并未有任何加密的设计,因此不能保证通信过程中不被监听。越来越多的公共Wi-Fi被黑客盯上,通常黑客设法和受害用户连接在同一局域网内,只要打开嗅探监听工具,受害者在网络中的传输过的敏感信息将被黑客获取。如果被窃取的信息中直接含有个人信息和密码,黑客可能通过这个信息直接登录受害人的用户,进一步可能造成信息泄露或财产损失。另外一种,黑客也可能劫持受害者用户的会话,服务器将无法区分受害者还是黑客,黑客可以进行受害者权限范围内的一切操作。


Web API 在通信时使用了 HTTPS 协议通信,将极大增强会话的安全性。那么是不是只要使用了HTTPS协议通信就能保证会话不被劫持,敏感信息不被获取呢?答案是否定的。
2014年4月爆发的Heartbleed安全漏洞,导致攻击者可能获取到服务器上保存的明文信息。另外,使用 HTTPS加密通信时,也有可能存在中间人攻击,因此需要保证使用有效的SSL证书进行加密
认证。


▪ 安全隐患二:

使用浏览器访问API时产生的安全意外


Web API 是专门为程序间相互调用而设计的,如果意外的使用浏览器来访问 Web API 则也可能存在安全问题。


XSS攻击


XSS攻击将用户的非法输入的JavaScript脚本在响应页面的HTML中执行。攻击者可能利用XSS漏洞劫持会话、盗取Cookie、篡改页面等操作。在Web API 返回 JSON 数据时,如果Content-Type 设置不合理便会造成 XSS 漏洞攻击。


例如,假设有以下JSON数据

{“data”:”<script>alert(666);</script>”}
当服务器返回该 JSON 数据时,将响应头中的Content-Type设置为test/html 或者设置为Content-Type: text/plain(IE下可以执行)时,该 JSON 数据被解释为 HTML 代码,浏览器直接执行了其中的JavaScript代码。

CSRF攻击

Web API 防护CSRF 攻击的方法和常规的 Web 网站并没有什么不同。通常需要禁止通过GET方法修改服务端的数据,而是采用 POST、PUT、DELETE等方法进行标准化操作。即使设置了不允许GET方式修改服务器数据,CSRF依然可以通过Form表单使用POST方法发起攻击,而且不受同源策略的影响。


▪ 安全隐患三:

业务层面的恶意访问


篡改ID非法获取用户敏感信息


篡改请求参数获取敏感信息,攻击者可以通过修改客户端发送到服务器的参数,企图获取权限范围之外的敏感信息。例如使用以下形式的


URL:
https://api.example.com/v1/user/123?info=email


从形式上来看,URL中的123可能为用户ID,假如提交该URL请求可以获取到ID为123用户的email信息,那么攻击者通过修改用户ID就能获取到其他用户的email信息。


下面具体分析一下这个问题,一般的有些Web API 设计友好,通常在URL里面使用user关键字或者在参数里面使用email关键字来表明业务的一些相关信息。设计者初衷是为了开发者更加简单明了的使用API来实现程序调用,但是也给攻击者带来可乘之机。攻击者通过分析URL的形式特征并结合具体的业务对关键字进行篡改,企图非法获取敏感信息。


参数异常输入导致未授权操作


API的设计者在设计之初是为了方便的使用API进行程序间的调用,有时考虑不到太多的异常输入造成的安全隐患。例如知名的WordPress网站系统曾经存在REST API 由于异常输入造成权限绕过,攻击者可以通过API篡改网站页面内容。


WordPress 4.7以上的版本,WordPress REST API提供了一组易于使用的HTTP端点,用户可以以简单的JSON格式访问网站的数据,包括用户,帖子,分类等。检索或更新数据与发送HTTP请求一样简单。API 提供了对用户、文章、分类等不同功能的控制,也可以通过 API 检索或修改文章。在WorePress 4.7.0和4.7.1版本中存在漏洞,由于权限控制失效导致内容注入或修改,攻击者通过修改id为一个异常值就可以完成网站内容的篡改,而不需要任何认证信息。


Wordpress 提供的部分 API 功能:


查看文章列表
GET /index.php/wp-json/wp/v2/posts


检索文章
GET /index.php/wp-json/wp/v2/posts/1


修改文章
POST /index.php/wp-json/wp/v2/posts/1?id=1
Content-Type: application/json
{"title":"test"}


提交以上修改文章的请求,服务器返回401 未认证。


如果稍微修改以上的URL内容,例如修改为POST /index.php/wp-json/wp/v2/posts/1?id=1abc,即将id参数的值由1修改为1abc,再次尝试提交。服务器返回200 OK,WordPress网站的第一篇文章标题被修改为test,攻击成功。


WAF检测与防护


Web API和普通的应用相似都是通过HTTP协议对外服务,普通Web应用中存在的漏洞和缺陷,在Web API 中同样也会存在。网御星云WAF产品有专门API防护模块,通过该防护模块与WAF功能相结合可对Web API的问题进行检测与防护,Web API防护模块如下:
 

 

 


网御WAF连续三年以上通过OWASP 《Web应用防火墙标准》认证。在2017年7月发布的《OWASP TOP 10》版中网御WAF产品能够较好的对OWASP TOP 10 2017安全风险进行安全加固。


网御WAF产品适应从小型企业到大型数据中心等各种规模和客户业务模型下的网络环境,并广泛应用于政府、公安、检察、法院、金融、运营商、能源、大企业、烟草、税务等行业领域。

关于我们
公司简介
合作伙伴
核心技术
团队风采
推荐型号
IPS特征库升级服务
防火墙
入侵检测系统
网御WEB防火墙Leadsec-7GXWAF-ZF
服务与下载
支持与服务
在线升级
联系我们
二维码