首页 > 其他分享 >CVE2024-4577 成因梳理

CVE2024-4577 成因梳理

时间:2024-08-30 18:04:26浏览次数:4  
标签:cgi 编码 string CVE2024 漏洞 4577 query php 梳理

CVE-2012-1823

提到PHP-CGI有关的漏洞 就不得不提起CVE-2012-1823 该漏洞利用php-cgi将用户传入的cgi数据中的query_string部分的-后参数当做了 脚本的处理参数处理
攻击者可以利用-d参数修改配置项 实现远程命令执行的效果 也可以-i读出源码
当时这个漏洞被apache修复了 修复的方式也很简单 就是将-后的参数不作为脚本参数解析 那实际上php-cgi还是能识别参数并执行的

if((query_string = getenv("QUERY_STRING")) != NULL && strchr(query_string, '=') == NULL)
{
/* we've got query string that has no = - apache CGI will pass it to command line */ 
	unsigned char *p;
	decoded_query_string = strdup(query_string); 
	php_url_decode(decoded_query_string,strlen(decoded_query_string));
	
	for (p = decoded_query_string; *p && *p <= ' '; p++)
	{ 
		/* skip all leading spaces */ 
	} if(*p == '-') {
		skip_getopt = 1; // 就在这里 当检测到 - 后就会跳过解析
	} 
		free(decoded_query_string);
}

CVE2024-4577

作为一个新的漏洞 其被我们祖国的台湾的orange老师发现
简单的说 这个漏洞就是绕过了-符号
在中间件为Unicode但操作系统使用的为中文 日文 繁体 等中南亚国家文字编码时 需要编码适配
编码适配时 会匹配best-fit 匹配后会将超出限度的编码适配到可表示的编码
详见:
https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit936.txt
image
有这么一条编码适配 现在我们只要使用0xad替换-进行测试
这个漏洞常见于 xampp xampp是国外常用的中间件 其中间件编码默认为Unicode 当安装主机使用中文编码后会触发最佳适配
但是这个漏洞的前提是 apache使用php-cgi解析cgi数据 但是一般中间件不会再使用php-cgi 而是使用效率更好的 php-mod php-fpm来解析
但是xampp会把php-cgi放在默认的cgi目录下 我们可以直接通过目录访问php-cgi
但是默认配置中php-cgi是不允许直接访问的
cgi.force_redirect=1强制重定向选项 只接受重定向来的数据 对直接访问的数据不处理

但是 我们可以利用最新的漏洞 用-d选项把强制重定向给关闭了
image
如上图 添加选项并通过 phpinput伪协议 可以实现任意命令执行

标签:cgi,编码,string,CVE2024,漏洞,4577,query,php,梳理
From: https://www.cnblogs.com/fr09/p/18389240

相关文章

  • 人生核心模式的梳理思考 2024-08-30
    2024-08-30    我也是傲娇者剧本。我还有点疑惑,我并没有觉得自己比别人厉害比别人高,也是傲娇者。傲娇者核心是冷漠,冷漠的意思是自己的目标比感受更重要。这样的话我还真是。然后许老师帮梳理了我的模式逻辑。真是清晰透彻。1:我有一些目标,达不成目标我就觉得自己不够好。比......
  • 13.3 Java对象序列化梳理
    目录13.3Java对象序列化13.3.1 引入13.3.1 对象序列化与对象流1.Serializable接口2.ObjectInputStream类和ObjectOutputStream类13.3.2向ObjectOutputStream中写入对象13.3Java对象序列化13.3.1 引入应用场景:对象的寿命通常随着创建该对象程序的终止而终......
  • equals与hashCode关系梳理
    目录equals用法hashCode用法总结为什么一个类中需要两个比较方法为什么重写equals方法时必须同时重写hashCode方法?Reference这个并不是一个通用性编程问题,只属于在Java领域内专有问题。要做好心理准备,这是一个复杂类的问题,要解答这个问题,需要梳理清楚两个函数和其它类之间......
  • Ansible-playbook 应用梳理
    前面已经介绍过Ansible的安装配置及常见模块的使用--《Linux下使用Ansible处理批量操作》Palybook简介palybook是由一个或多个paly组成的列表,play的主要功能在于将事先归并为一组的主机装扮成事先通过ansible中的task定义好的角色。从根本上来讲,所谓task无非是调用ansible......
  • 华为流程框架梳理及实施
             获取全部108页完成PPT材料,见下图 ......
  • 电磁介质 知识梳理
    1.电介质\[\def\oiint{{\bigcirc}\kern-11.5pt{\int}\kern-6.5pt{\int}}\def\oiiint{{\bigcirc}\kern-12.3pt{\int}\kern-7pt{\int}\kern-7pt{\int}}\]1.1极化的微观机制在一类电介质中,当外电场不存在时,电介质分子的正负电荷中心是重合的,这类分子叫做无极分子;另外一类电介质......
  • Nginx: 体系化知识点梳理
    概述我们需要对Nginx要有体系化的一个认识对Nginx自身来说,它是作为一个中间件的,只要是中间件,它必然会涉及到前端和后端对于Nginx来说,它是需要协调整个前后端的一个组件那对于中间件来,我们要理解整个外部系统前端和后端是如何进行交互的我们一个用户请求过来以后,......
  • Nginx: 配置项之main段核心参数用法梳理
    概述我们了解下配置文件中的一个全局段,有哪些配置参数,包括后面的events字段,有哪些配置参数这里面也有一些核心参数,对于我们Nginx运行的性能也是有很重要的帮助我们现在首先关注整个main段的一个核心参数用法所谓main段,是指在nginx.conf配置文件中,除了有events......
  • 一次实战压测流程及问题梳理
    1、背景及目的在动手之前,先要想清楚我们期望从压测中获取的价值是什么。这次压测的背景,主要是为了应对旺季到来,避免旺季的大量流量和高并发造成服务不可用,提升稳定性。而在稳定性建设中,也会从事前、事中及事后来看,包含的维度包含风险识别、监控告警、应急流程及故障复盘等不同的......
  • [C语言]-基础知识点梳理-动态内存管理
    前言各位师傅大家好,我是qmx_07,今天给大家讲解动态内存管理的相关知识,下一章节更新文件管理部分的知识点为什么要进行动态内存分配intval=20;//在栈空间上开辟四个字节chararr[10]={0};//在栈空间上开辟10个字节的连续空间上述的开辟空间的⽅式有两个特点:空......