LFI攻击

# LFI攻击

LFI, Local File Include, 直译为本地文件包含。文件包含漏洞是代码注入攻击(Remote File Inclusion)的一种。

代码注入攻击

对网络用户端的攻击

注入一段网络用户端 (浏览器等) 能控制的脚本或代码,并让服务器端执行。

对应用程序客户端的攻击

例如 Javascript,属于跨站脚本攻击(XSSarrow-up-right)。

更多介绍详见博客arrow-up-right

实例 Slider Revolution

在2014年,滑块插件 Slider Revolution 存在严重漏洞,该漏洞允许黑客从服务器的wordpress里下载和上传文件。

漏洞插件源码arrow-up-right, 漏洞利用版本为4.2.0以下。

1. 下载文件

由于用户输入过滤器(user input filters)未能正确处理通过action 的请求“revslider_show_image”传递给“admin-ajax.php”的“img”参数值,导致黑客通过浏览器下载wordpress的有关文件,如:

下载的任何文件名均为admin-ajax.php,这里实则下载的是wp-config.php,打开:

获得的是服务器数据库的database名称,管理员login和password,若该服务器的数据库接口暴露在外网,则可以直接访问。

2. 上传文件

分析漏洞

通过制作http请求访问以上传文件。参考于博客arrow-up-right(找超久的),接下来了解一下漏洞所在处:

通过向admin-ajax.phpaction发送POST请求,请求参数为?action=...... get_captions_css,相当于:

‌ 于是在插件源码中被执行的函数是 onAjaxAction(),位于revslider_admin.php。getPostGetVar() 接收POST或GET的参数

其中触发了该函数的case语句get_captions_css

最后,返回的是captions.css的文本内容:

若请求参数为?action=......update_captions_css,相当于:

其中触发了该函数的case语句update_captions_css:

Enter a caption for this image (optional)

其中函数updateCaptionsContentData(), 位于inc_php/revslider_operations.class.php

‌ 其中writeFile()是UniteFunctionsRev类的函数该类位于inc_php/functions.class.phpinc_php/framework/functions.class.php

终于找到了漏洞点,函数fwrite()和没有进行任何处理的参数$str

3. 实战

理一下思路,post请求中的data = 一段html恶意代码data 被函数onAjaxAction()接收并放入$data里,接着执行该函数的case语句update_captions_css,把$data传到函数updateCaptionsContentData(), 此时$data相当于$content, 把$content传到函数writeFile(),此时$content相当于$str, 然后把$str传到函数fwrite()中, 执行完毕。

还有一点很重要的是站点服务器others组写入权限应该对captions.css起效才行:

攻击的源码的链接这里查看arrow-up-right

执行之后,相当于把captions.css文件内容改为<h1>Bonjour!</h1>, 在浏览器输入

就可以看到结果.

最后更新于