九漏洞挖掘与代码审计变量覆盖漏洞

Posted 玛卡巴卡巴巴亚卡

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了九漏洞挖掘与代码审计变量覆盖漏洞相关的知识,希望对你有一定的参考价值。

一、变量覆盖

用我们的传参值替换程序原有的变量值。

1、常见场景

(1)$$使用不当

(2)extract()函数使用不当

(3)parse_str()函数使用不当

(4)import_request_variables()使用不当

2、函数解析

(1)extract()

将数组中变量导入当前符号表中。把数组中键和值分开,键是变量名,值是变量值。

(2)parse_str()

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

 

(3)$$

$a =1;

$b =2;

echo $$a;

输出的结果是2.

常见的$$利用存在变量覆盖的代码:

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

 遍历cookie,post,get,传入request中,利用$$_request把键值分离,最后把值用魔术引号处理,赋予$$_key

二、代码审计

找到可以利用变量覆盖的代码段

追踪函数_RunMagicQuetes,发现这是一个调用魔术引号的函数

但我们不知道哪里会执行foreach,可以在代码段中添加die(phpinfo());来定位

我们发现在duomi首页刷新就可以出现phpinfo,说明common.php在网站首页就被调用

再在foreach代码段实验,再次刷新,还是出现phpinfo页面,说明首页就会调用foreach。

也可以使用burp的爬虫功能,查看返回包中有没有phpinfo,来定位哪里被调用

找到login.php中的用户登录成功界面,在用户登录成功后,会用keepuser来保持用户连接

定位keepuser函数发现这里设定了session,session里有userid,groupid,username。权限是由session决定,通过这里我们可以设定session。

查找groupid,发现1为系统管理员,2为网站编辑员。当我们$_SESSION['groupid']=1时,就相当于获得系统管理员权限

session调用必须使用session_start(),于是我们在全局搜索,找到在gbook.php中,有调用我们之前找到的存在变量覆盖的文件名common.php

我们在gbook.php传参session,发现并不能成功登陆后台,于是我们查看一下我们此时的sessioin值

我们此时还需要正确的session格式,我们在check.admin.php中添加die(var_dump($_SESSION))输出session格式

 

array(5) { ["duomi_ckstr"]=> string(4) "ghkg" ["duomi_ckstr_last"]=> string(0) "" ["duomi_admin_id"]=> string(1) "1" ["duomi_group_id"]=> string(1) "1" ["duomi_admin_name"]=> string(5) "admin" }

 

正确session格式:

["duomi_ckstr"]=> string(4) "ghkg" ["duomi_ckstr_last"]=> string(0) "" ["duomi_admin_id"]=> string(1) "1" ["duomi_group_id"]=> string(1) "1" ["duomi_admin_name"]=> string(5) "admin"

修改后url传参:

http://127.0.0.1/duomi/upload/interface/gbook.php?_SESSION[duomi_group_id]=1&_SESSION[duomi_admin_id]=1&_SESSION[duomi_admin_name]=admin

发现成功登陆后台

把穿擦那种duomi_admin_name删除后也可达到同样的效果,说明传参只有duomi_group_id和duomi_admin_id决定

三、靶场

在url中传参interface/gbook.php?_SESSION[duomi_group_id]=1&_SESSION[duomi_admin_id]=1就可以成功登陆后台,找到flag

以上是关于九漏洞挖掘与代码审计变量覆盖漏洞的主要内容,如果未能解决你的问题,请参考以下文章

九漏洞挖掘与代码审计命令执行漏洞原理

九漏洞挖掘与代码审计本地包含与远程包含

代码审计变量覆盖漏洞详解

代码审计常见场景之CSRF与变量覆盖

PHP4-漏洞挖掘思路

通过代码审计找出网站中的XSS漏洞实战