一次全局变量造成的RCE

简介: 一次全局变量造成的RCE

一次全局变量造成的RCE


之前和一位师傅聊天,他给我了一个rce

找他要了份源码进行审计

到手的那一刻我是懵逼的,如下:

1.exec中写死了,不可控

     2.cmd写死了,并且没有找到传参的地方

  3.popen执行的cmd,在本文件中是写死的两个不可控的

那么是如何rce的?

  我注意到了popen执行的cmd,虽然是写死的,但是在11和12行中的if else语句中,只有else if,并没有else,那么type假设不是1或2配合着全局变量即可造成rce

那么全局在哪呢?第二行include了一个json文件如下:

我们把这3,4行拎出来单独debug

如下:

下面均为cmd.php中的代码

开始debug,打上断点,访问

http://localhost/index.php?cmd=whoami

我们可以看到global中的get参数是我们的命令,也就是cmd

可以看到这里的cmd并没有被强行改变,依旧是whoami

进入到popen语句

最后在while语句中输出

成功RCE

当然,因为收的参数是request,所以post也可以造成RCE

当然除了这个,这套源码还有很多很多的rce

我们可以看到这里popen执行了cmd,而cmd中有start参数

我们在当前文件并没有找到start赋值

所以直接传参即可

qq.php?action=file&start=|echo '<?php phpinfo();?>' > 2.php||

成功RCE

后面我看了一下,漏洞点太多了,就不一一赘述了,没有什么技术含量,当是休闲之余放松了

目录
相关文章
|
3月前
|
安全 PHP
文件包含漏洞(一)代码解读
文件包含漏洞(一)代码解读
|
3月前
|
安全 前端开发 Linux
文件包含漏洞
文件包含漏洞
|
6月前
|
监控 安全 网络安全
初探rce中的无参数rce
无参数RCE虽然不常见,但其隐蔽性和潜在的破坏性使得它成为一种特别危险的安全威胁。防御这类攻击要求开发者和系统管理员具备深刻的安全意识和综合的安全策略。通过持续的安全培训、审计以及运用行业最佳实践,可以有效降低这类风险。安全是一个持续的过程,而不是一次性任务,面对日益复杂的安全威胁,持续的努力和关注是保障数字资产安全的关键。
72 1
|
关系型数据库 PHP
fileinclude(通过cookie赋值的文件包含)
fileinclude(通过cookie赋值的文件包含)
87 0
|
安全 小程序 PHP
|
安全 Windows
4.4 x64dbg 绕过反调试保护机制
在Windows平台下,应用程序为了保护自己不被调试器调试会通过各种方法限制进程调试自身,通常此类反调试技术会限制我们对其进行软件逆向与漏洞分析,我们以第一种`IsDebuggerPresent`反调试为例,该函数用于检查当前程序是否在调试器的环境下运行。函数返回一个布尔值,如果当前程序正在被调试,则返回True,否则返回False。函数通过检查特定的内存地址来判断是否有调试器在运行。具体来说,该函数检查了`PEB(进程环境块)`数据结构中的`_PEB_LDR_DATA`字段,该字段标识当前程序是否处于调试状态。如果该字段的值为1,则表示当前程序正在被调试,否则表示当前程序没有被调试。
341 0
4.4 x64dbg 绕过反调试保护机制
使用注释来阻止程序执行
使用注释来阻止程序执行
83 0
|
安全 PHP
ThinkPHP 2.x 任意代码执行漏洞
ThinkPHP 2.x 任意代码执行漏洞
317 0
ThinkPHP 2.x 任意代码执行漏洞
|
机器学习/深度学习 存储 安全
【网络安全】文件包含漏洞--使用session进行文件包含
文件包含漏洞--使用session进行文件包含
333 0
【网络安全】文件包含漏洞--使用session进行文件包含