代码审计--变量覆盖

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

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配对了



相关文章
|
7月前
|
开发框架 Java .NET
WAF攻防-权限控制&代码免杀&异或运算&变量覆盖&混淆加密&传参
WAF攻防-权限控制&代码免杀&异或运算&变量覆盖&混淆加密&传参
|
7月前
|
Shell PHP Windows
来自红队大佬的经验之谈---命令执行过滤绕过-Windows篇
感谢来自老流氓大佬的投稿,本次文章介绍的是在windows环境下,过滤的“点”和“空格”等符号,如何利用windowsit特性进行绕过
|
安全 PHP 数据安全/隐私保护
PHP审计-实战变量覆盖漏洞
PHP审计-实战变量覆盖漏洞
feof用法重点详解(易被误用判断文件结束!!!)
feof用法重点详解(易被误用判断文件结束!!!)
|
前端开发 安全 数据库
【每日渗透笔记】覆盖漏洞+修改隐藏数据实战尝试
【每日渗透笔记】覆盖漏洞+修改隐藏数据实战尝试
90 0
【每日渗透笔记】覆盖漏洞+修改隐藏数据实战尝试
|
安全 API Android开发
教你如何高效的检查APK中使用敏感权限的地方以及检查某系统方法被调用的地方
教你如何高效的检查APK中使用敏感权限的地方以及检查某系统方法被调用的地方
587 0
教你如何高效的检查APK中使用敏感权限的地方以及检查某系统方法被调用的地方
|
安全
非法文件的包含攻击是什么意思?底层原理是什么?
非法文件的包含攻击是什么意思?底层原理是什么?
331 0
|
安全 PHP
文件包含漏洞原理/利用方式/应对方案
原理 用户利用文件包含函数上传可执行脚本文件,造成信息泄露或任意命令执行
323 0
|
搜索推荐 SEO
网站内容从哪些方面检查?针对网站内容检查七大项目
网站优化工作中,影响网站排名的一个很重要的因素关于网站的内容。很多网站排名一直没有提升,大部分的原因有可能是网站的内容质量,搜索引擎认为没有价值性,也不会给予权重。针对网站的内容我们可以从这些方面去考虑。 网站内容从哪些方面检查?针对网站内容检查这七大项目:
294 0
|
安全 测试技术 Windows
警惕可执行文件:三类危险TXT类型文件
假如您收到的邮件附件中有一个看起来是这样的文件:QQ 放送.txt,您是不是认为它肯定是纯文本文件?我要告诉您,不一定!它的实际文件名可以是QQ 放送.txt{3050F4D8-98B5-11CF-BB82-00AA00BDCE0B}.{3050F4D8-98B5-11CF-BB82-00AA00BDCE0B}在注册表里是HTML文件关联的意思。
2760 0