卡巴斯基实验室高级安全研究员Ido Naor和以色列安全研究员Amihai Neiderman在卡巴斯位于墨西哥坎昆举行的安全分析师峰会期间,就加油站的安全问题展开了全面分析。他们的研究表明,攻击者可以改变汽油价格,窃取记录在控制器上的信用卡信息,获取车牌号码,造成油料泄露,调整温度监控器等等。

当攻击者获得root权限时,他们可以做很多任何想做的事。因为密码安全性较低,可以通过互联网远程连接这些加油站的控制器。

此次事件的主角是Orpak 公司的 SiteOmat,该软件专门为运行在嵌入式 Linux 设备或标准 PC 之上而设计,能够提供“完整且安全的现场自动化、管理分配、支付终端、前院设备与燃料箱控制功能,从而全面监督并记录一切交易活动。”

这些安全漏洞还允许黑客在目标企业的网络内横向移动,访问支付系统、窃取财务数据并获取客户信息(例如车牌号以及司机身份数据)。

在测试中,Neiderman和Naor能够在一台加油机上将每升燃气的价格从6.54ILS(以色列新锡克尔)远程修改为6.66ILS。Neiderman写了一个脚本来自动修改价格,并可以通过使用手机来触发。

图片来源:http://www.sohu.com/a/220834929_100066938 黑客世界

图片来源:http://www.sohu.com/a/220834929_100066938 黑客世界

对漏洞的分析:

首先下载文中所提到的用户手册。虽然公司已经声明他们已经撤回官网的手册,但是利用Google搜索还是能够找到。通过查看手册,我们能够知道默认用户名(Admin)+登录密码(Admin),如下图:

并且由于目前有大量加油站系统暴露在互联网上,所以我们通过shodan可以查看到许多有用的信息,如下图:

当前暴露在互联网上的设备,统计如下:

以下部分操作请勿模仿。

下面的登录界面是直接Google到的。通过输入正确的用户名密码可以登录进去。管理员登录界面,如图:

登入后的系统,如图:

下图是用户手册上的截图,这个截图是该公司提供的用户登录进系统的界面。用户手册提供了软件详细的使用流程:

具体分析本次暴露出的几个漏洞:

1、硬编码凭证:硬编码是将可变变量用一个固定值来代替的方法。用这种方法编译后,如果以后需要更改此变量就非常困难了。该系统存在的问题是嵌入在SiteOmat源代码中的后门,带有硬编码的用户名和密码。这将允许远程黑客绕过系统的前端密码保护,并访问任何Orpak加油站,无论加油站所有者是否更改了默认密码。后门提供了对SiteOmat网页管理界面的全面管理访问,包括修改燃油价格和其他设置的权限。SiteOmat实际上并不需要管理权限来修改燃油价格,任何有权限访问系统的人都可以在没有授权的情况下对燃油价格进行修改。总结:导致该漏洞的原因是不严谨的编码和控制代理管理机制的访问不完善。

2、缓冲区溢出漏洞:可取得系统特殊权限,进行非法操作。尽管系统跟踪日志会记录价格的变化,但实验人员发现的缓冲区溢出漏洞使得攻击者能够控制系统并删除所有日志。

3、持久性XSS:攻击行为伴随着攻击数据一直存在,同时向浏览器传送一个cookie,(即使是使用了session验证的方法,还是需要客户端支持cookie), cookie会保存会话连接中的数据,Session ID作为会话标识,浏览器的后续请求就会基于后续请求,攻击者可以提供一个攻击链接,用户点击该链接时,向攻击者自己的服务器发送一条保存有session id 的信息,这样就窃取到用户的session id,得到用户的登录权限了。将攻击行为存入数据库,攻击者在会话有效期内即可获得admin的用户权限,并且由于攻击数据已经在数据库,所以不删除数据库里的记录,还是会有可能受到攻击。

4、不安全通信:SiteOmat以非加密格式存储用户信息,如用户名和密码,并使用未签名和未加密的固件,这意味着攻击者可以使用受感染的SiteOmat软件来覆盖合法版本。最终wireshark证实系统采用明文传输,未加密。

5、SQL注入

6、代码注入

7、远程代码执行等

此次攻击所利用到的漏洞列出如下:

硬编码凭证(CNNVD-201709-1067、CVE-2017-14728)、

持久性XSS(CNNVD-201709-1192、CVE-2017-14850)、

SQL注入(CNNVD-201709-1191、CVE-2017-14851)、

不安全通信(CNNVD-201709-1190、CVE-2017-14852)、

代码注入(CNNVD-201709-1189、CVE-2017-14853)、

远程代码执行(CNNVD-201709-1188、CVE-2017-14854)等。

SiteOmat的更多相关文章

随机推荐

  1. Swift中添加标记(MARK)和警告(TODO FIXME)

    //MARK: - 注释说明 //FIXME: - 表示此处有bug 或者要优化 //TODO:  - 一般用于写到哪了 做个标记,让后回来继续 开启警告: 参考博客: http://blog.csd ...

  2. iOS-导航栏全透明效果, 只保留左右两个按钮以及NavigationController返回几级页面

    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageWithColor:[UIColor clearCo ...

  3. Ubuntu 14.04安装vim8

    本文介绍两种方法安装 VIM8.1 方法一:GitHub下载源码手动安装 1.查看系统是否有安装vim:如果有,先删除 dpkg -l | grep vim 2.从git上下载 git clone h ...

  4. windows下编译配置libnet-1.2-rc3

    1.下载winpcap(一个底层驱动,可以嗅探.过滤网卡数据包,发包).exe安装包,傻瓜一步式安装 2.下载WpdPack_4_1_2,这个是winpcap的开发者包,解压之后只需要配置相关路径. ...

  5. beego conf配置文件

    1. 多个配置文件通过include引入 自定义配置文件mysql.conf 在app.conf 中引入mysql.conf include "mysql.conf"

  6. Java代码是怎么运行的

    前言.... 作为一名 Java 程序员,你应该知道,Java 代码有很多种不同的运行方式.比如说可以在开发工具中运行,可以双击执行 jar 文件运行,也可以在命令行中运行,甚至可以在网页中运行.当然 ...

  7. axios设置请求头内容

    axios设置请求头中的Authorization 和 cookie 信息: GET请求 axios.get(urlString, { headers: { 'Authorization': 'Bea ...

  8. html中'disabled'与'readonly'的区别

    html中'disabled'与'readonly'的区别 此随笔增量编辑 disabled 在提交表单的时候 值不会带入表单中, 而readonly则可以将值带入表单中.

  9. 【AtCoder】AGC010

    AGC010 A - Addition 如果所有数加起来是偶数那么一定可以,否则不行 #include <bits/stdc++.h> #define fi first #define s ...

  10. 【LOJ】#3051. 「十二省联考 2019」皮配

    LOJ#3051. 「十二省联考 2019」皮配 当时我在考场上觉得这题很不可做... 当然,出了考场后再做,我还是没发现学校和城市是可以分开的,导致我还是不会 事实上,若一个城市投靠了某个阵营,学校 ...