代码审计--变量覆盖

简介: 代码审计--变量覆盖

1.变量覆盖定义


变量覆盖指的是可以用我们的传参值替换程序原有的变量值


2.风险


变量覆盖漏洞有的时候可以直接让我们获取Webshell,拿到服务器的权限


3.寻找变量覆盖


经常导致变量覆盖漏洞场景有:

1. $$使用不当
2. extract()函数使用不当,
3. parse_str()函数使用不当
4. import_request_variables()使用不当,开启了全局变量注册等

3.1.经常引发变量覆盖漏洞的函数


extract()
parse_str()
import_request_variables()


3.1.1.extract()函数


3.1.1.1.作用


从数组中将变量导入到当前的符号表

将数组中的内容转化为变量


3.1.1.2.实例


$a = "1";
$my_array = array("a" => "Cat","b" => "Dog", "c" => "Horse");
extract($my_array);
echo "\$a = $a; \$b = $b; \$c = $c";
?>

运行结果:


$a = Cat; $b = Dog; $c = Horse


3.1.1.3.CTF举例


3.1.2.parse_str()


3.1.2.1.作用


将查询字符串解析到变量中


3.1.2.2.实例


<?php
parse_str("name=zkaq&&age=60");
echo $name."<br>";
echo $age;
?>

parse_str("name=Bill&age=60") 相当于完成了$name ='zkaq'和$age ='60'


3.1.2.3.


如果在parse_str中可以直接传参,也可以覆盖变量


3.1.3.$$


不仅仅是函数会导致变量覆盖,有些特殊符号的特殊搭配也会引起变量覆盖漏洞,比如$$


3.1.3.1.代码实例



$a = 1;
foreach(array('_COOKIE','_POST','_GET') as $_request) {
foreach($$_request as $_key=>$_value) 
{$$_key=addslashes($_value);}}
echo $a;
?>

4.本地测试


DuomiCMS


4.1.本地搭建环境


4.1.1.将源码放入WWW目录



4.1.2.安装



4.2.Seay代码审计系统

4.2.1.开启数据库监控



4.2.2.登录后台




4.2.3.更新数据库监控



4.2.4.规则管理



4.3.审计


4.3.1.添加一个匹配$$的规则


([^\$"]|$)\$\{?\$或者简单点\$\$



4.3.2.开始



4.3.3.发现一个存在变量覆盖的地方


duomiphp\common.php文件



4.3.4.定位函数



4.3.5.


get_magic_quotes_gpc()

判断是否开启魔术引号


4.3.6.变量覆盖需满足的条件


1.有传参

2.键名没有有cfg_和GLOBALS

3.COOKIE传参中没有$_k


同时满足会进入exit函数,那三条只要有一条不满足,就会产生变量覆盖漏洞




4.3.7.包含common.php文件的地方


admin目录下的login.php文件中包含了common.php文件

这个页面还调用了check.admin.php



4.3.8.check.admin.php


输出常量duomi_INC,exit(duomi_INC)

发现为常量duomi_INC的值为duomiphp,在该目录下找到check.admin.php文件

该文件为控制session的,可以通过common.php进行一个伪造session



4.3.8.1.session


Session与cookie功能效果相同。Session与Cookie的区别在于Session是记录在服务端的,而Cookie是记录在客户端的。


Cookie为什么有权限 -> 使用了session,访问网页,留一个空间,里面可以通过代码 例如session里有admin=1,可以判断为管理员


4.3.9.session的值


设置session值进行赋值来获得权限,groupid是权限的意思,全局搜索,发现groupid为1的时候,为管理员


4.4.本地测试攻击


4.4.1.退出admin账号



4.4.2.构造攻击


interface/comment.php?_SESSION[duomi_group_id]=1&_SESSION[duomi_admin_id]=1&_SESSION[duomi_admin_name]=admin



4.4.3.再次访问admin目录


自动登录上了,因为session已经和当前用户cookie配对了



相关文章
|
5月前
|
开发框架 Java .NET
WAF攻防-权限控制&代码免杀&异或运算&变量覆盖&混淆加密&传参
WAF攻防-权限控制&代码免杀&异或运算&变量覆盖&混淆加密&传参
|
11月前
|
编解码 监控
视频修复与增强应用举例
视频修复与增强应用举例
|
安全 druid Java
【紧急】Apache Log4j任意代码执行漏洞安全风险升级修复教程
近期一个 Apache Log4j 远程代码执行漏洞细节被公开,攻击者利用漏洞可以远程执行代码。经过分析,该组件存在Java JNDI注入漏洞,当程序将用户输入的数据进行日志,即可触发此漏洞,成功利用此漏洞可以在目标服务器上执行任意代码。
364 1
|
安全 PHP 数据安全/隐私保护
PHP审计-实战变量覆盖漏洞
PHP审计-实战变量覆盖漏洞
feof用法重点详解(易被误用判断文件结束!!!)
feof用法重点详解(易被误用判断文件结束!!!)
|
前端开发 安全 数据库
【每日渗透笔记】覆盖漏洞+修改隐藏数据实战尝试
【每日渗透笔记】覆盖漏洞+修改隐藏数据实战尝试
81 0
【每日渗透笔记】覆盖漏洞+修改隐藏数据实战尝试
|
数据库
【每日渗透笔记】参数值对应的接口,注入点测试尝试
【每日渗透笔记】参数值对应的接口,注入点测试尝试
106 0
【每日渗透笔记】参数值对应的接口,注入点测试尝试
|
安全 API Android开发
教你如何高效的检查APK中使用敏感权限的地方以及检查某系统方法被调用的地方
教你如何高效的检查APK中使用敏感权限的地方以及检查某系统方法被调用的地方
532 0
教你如何高效的检查APK中使用敏感权限的地方以及检查某系统方法被调用的地方
|
搜索推荐 SEO
网站内容从哪些方面检查?针对网站内容检查七大项目
网站优化工作中,影响网站排名的一个很重要的因素关于网站的内容。很多网站排名一直没有提升,大部分的原因有可能是网站的内容质量,搜索引擎认为没有价值性,也不会给予权重。针对网站的内容我们可以从这些方面去考虑。 网站内容从哪些方面检查?针对网站内容检查这七大项目:
279 0
|
安全 PHP 数据库
网站漏洞检测 php变量覆盖漏洞的检测与分析
临近9月底,seacms官方升级海洋cms系统到9.95版本,我们SINE安全在对其源码进行网站漏洞检测的时候发现问题,可导致全局变量被覆盖,后台可以存在越权漏洞并绕过后台安全检测直接登录管理员账号。
1956 0
下一篇
无影云桌面