MAMP集成环境套件中的SQLiteManager漏洞 - 嘶吼 RoarTalk – 网络安全行业综合服务平台,4hou.com

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

luochicun 漏洞 2018-12-18 11:00:23
161067
收藏

导语: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头以明确允许请求。

  • 分享至
取消

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

扫码支持

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

发表评论

 
本站4hou.com,所使用的字体和图片文字等素材部分来源于原作者或互联网共享平台。如使用任何字体和图片文字有侵犯其版权所有方的,嘶吼将配合联系原作者核实,并做出删除处理。
©2022 北京嘶吼文化传媒有限公司 京ICP备16063439号-1 本站由 提供云计算服务