MAMP集成环境套件中的SQLiteManager漏洞

luochicun 漏洞 2018年12月18日发布
Favorite收藏

导语:MAMP这几个首字母代表苹果的OSX系统上的Macintosh、Apache、MySQL和PHP,顾名思义,你应该知道MAMP的强大功能啦!MAMP内含Apache服务器、PHP安装套件以及MySQL安装套件。另外,它附带有几个漏洞的SQLiteManager。

MAMP这几个首字母代表苹果的OSX系统上的Macintosh、Apache、MySQL和PHP,顾名思义,你应该知道MAMP的强大功能啦!MAMP内含Apache服务器、PHP安装套件以及MySQL安装套件。另外,它附带有几个漏洞的SQLiteManager。

本文就描述了当MAMP的用户访问恶意网站时,攻击者如何利用这些漏洞执行代码。

MAMP

MAMP是可以安装在Mac OS X上的网络堆栈,Web开发人员通常使用它来测试他们正在使用的Web应用程序。由于它安装了Apache Web服务器,它默认在端口8888上运行。还包括一些数据库管理程序,如phpMyAdmin和SQLiteManager。

SQLiteManager

SQLiteManager是一个像phpMyAdmin for SQLite数据库的工具,它可以创建新的数据库,将表添加到数据库并在其上运行SQL查询。它自2013年发布以来还没有更新过,并且包含一些已知的漏洞。

目录遍历

SQLiteManager可以创建新的数据库,SQLite数据库包含在单个文件中,创建数据库时可以提供新数据库的文件名。然后在directory /Applications/MAMP/db/sqlite中创建该文件。但是,通过将 ../添加到文件名,我们可以将数据库的一个目录放在更高的位置。我们也可以使用它来获取包含PHP代码的文件,通过提供像以下这样的文件名,我们可以在web根目录下放置一个script.php文件。

1498548980280283.jpg

然后,使用SQLiteManager,我们创建一个表,并添加一行包含我们的PHP代码。文件script.php将是一个有效的SQLite数据库文件,其中包含访问该文件时运行的PHP代码。

3.2.jpg

CSRF

虽然在localhost上运行的SQLiteManager无法被攻击者直接访问,但是,如果攻击者可以在浏览器中运行Javascript,则可以伪造请求。如果你访问了恶意网站,则攻击者可以在浏览器中执行与安装MAMP相同的计算机上的请求。这些请求可以访问在localhost上运行的SQLiteManager。这种通过受害者浏览器弹出请求的方法称为跨站点请求伪造或称为CSRF。

SQLiteManager没有任何CSRF保护,因此上述目录遍历也可以使用CSRF执行。我们可以使用Javascript发布POST请求来创建数据库并向其中添加数据,然后向生成的文件发出请求。这样可以在受害者访问恶意站点时,在已安装和启用MAMP的受害者设备上运行代码。

例如,以下Javascript会发出创建数据库的请求:

3.3.jpg

dbsel号码是我们刚刚创建的数据库对应的号码,虽然我们不知道具体的号码,但可以尝试0到50之间的所有数字。

当我们触发对文件的请求时,执行osascript命令将显示弹出窗口:

3.4.png

总结

如果受害者只是访问具有恶意Javascript的网站,通过组合CSRF和目录遍历,就可以触发远程代码执行。

通过禁用SQLiteManager可以立即解决这个问题, MAMP用户可以通过编辑/Applications/MAMP/conf/apache/httpd.conf来实现。除非有人专门负责SQLiteManager的维护,否则这些漏洞不太可能得到修复。 MAMP已经有了SQLite的替代管理员-phpLiteAdmin。

最通用的解决方案就是禁止向私有的RFC1918 IP地址发送公共网络的请求,我们的建议是,默认拒绝这样的请求,并创建一个新的CORS头以明确允许请求。

本文翻译自:https://www.itsec.nl如若转载,请注明原文地址: https://www.4hou.com/vulnerable/15209.html
点赞 5
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论