远程包含漏洞获取webshell小实验
前言
最近刚刚买了个小小的云服务器(哥们也是有服务器的人啦),可以更舒服的进行测试了,测试场景也更加真实,过段时间搭建一个博客,到时候就两边都发文章了。
ok,直接开始今天的远程包含漏洞(RFI)小实验
原理
远程包含漏洞往往都是用 http:// 伪协议完成,由于服务器的 php.ini 中开启了 allow_url_open = On 和 allow_url_include = On,并且在php后端代码中,有 include、require等包含函数,其中包含的文件我们可以控制,那么就会形成文件包含漏洞,这里主要讲文件包含漏洞中的远程包含漏洞(本地文件包含其实种类更多)
开始实验
靶机:我们要攻击的一台主机服务器(allow_url_open = On 和 allow_url_include = On,实验时修改 php.ini 即可)
中间攻击机:具有公网ip的主机
攻击机:本机
如上是实验环境,如果中间攻击机能直接连接靶机的话,其实也不需要攻击机(本机)
情况一:
后端对传入文件名不进行过滤,主机服务器后端代码基本上如下:
# 文件名为 include.php
<?php
// 远程文件包含测试文件
$file = $_GET['file'];
include($file);
?>
如上,我们需要准备一台有公网ip的主机(一般都是远程主机,我这里是云服务器),在云服务器中开启 http 服务,并在服务器中设置木马下载文件,在 url 中让目标主机ip(靶机)访问我们这台云服务器(中间攻击机)的木马下载文件,即可将木马植入靶机中,然后再在攻击机中打开蚁剑连接靶机,即可getshell
# 开启HTTP服务的方法:
1、使用中间件进行开启,比如apache
service apache2 start 开始监听,不过这个要配置过,不是很会
2、直接用python代码搭建一个简易的客户端,如下:监听8000端口
# 纯复制的代码,全是内置库,不是很懂,到时候再学
from http.server import SimpleHTTPRequestHandler
from http.server import CGIHTTPRequestHandler
from http