您的位置 » 首页 » 渗透测试 » 安全隐患:利用$_SERVER和$_SESSION变量制造各类后门

安全隐患:利用$_SERVER和$_SESSION变量制造各类后门

发表于4年前 | 作者: seay | 分类: 渗透测试 | 孵化于:2012年12月21日 | 文章热度:8,425 次 全屏阅读

显示不全请点击全屏阅读

首先来看php官方手册对于$_SERVER[‘PATH_INFO’]的注解:

该值为客户端提交的任意路径信息,取值为在实际脚本名称之后并且在查询字符串之前,例如假设当前url为http://www.xxoo.com/php/path_info.php/some/stuff?foo=bar,那么$_SERVER[‘PATH_INFO’]取值为/some/stuff
接下来再看如下这段代码:test.php
<?php 
session_start(); 
var_dump($_SESSION[‘test’]); 
echo'<br />’; 
$_SESSION[‘test’]=$_SERVER[‘PATH_INFO’]; var_dump($_SESSION[‘test’]); 
?> 
<img src=”notice”/> 访问url:http://localhost/test.php/a
返回页面:
Notice: A session had already been started – ignoring session_start() in D:\Apacheroot\test\test.php on line 2 Notice: Undefined index: test in D:\Apacheroot\test\test.php on line 3 NULL 
string(2) “/b” 
刷新后返回:
Notice: A session had already been started – ignoring session_start() in D:\Apacheroot\test\test.php on line 2 string(7) “/notice” 
string(2) “/b” 
 
发现什么奇怪的地方吗?
刷新后var_dump($_SESSION[‘test’])返回的是/notice,和img标签的地址一样,为什么会这样呢?
原因就在于<img src=”notice”/>浏览器访问加载了/test.php/notice,这时触发了test.php,导致$_SERVER[‘PATH_INFO’]变量改变,也就导致session变量改变,所以每当刷新页面,$_SESSION[‘test’]输出的都是notice。
 
那么这样会导致什么安全隐患呢?
img标签中的地址任意内容都可以输出到网页中去,并在session内有效,也就是形成了天然的(反射+存储+dom型)XSS/CSRF,因为绝大多数安全防护类软件只扫描webshell,一句话木马等内容,并不扫描js脚本内容,所以可以免杀,其他危害还可以随环境而定

Tags:

如果您喜欢我的博客,欢迎点击图片定订阅到邮箱填写您的邮件地址,订阅我们的精彩内容: 也可以点击链接【订阅到鲜果】

如果我的想法或工具帮助到了你,也可微信扫下方二维码打赏本人一杯咖啡


来自 Seay互联网安全博客
本文地址:http://www.cnseay.com/1913/
文章版权说明请看置顶文章,尊重作者,转载请以链接形式标明原文地址

马上分享给你的朋友吧~

已经有1个筒子留下了脚印...

  • rose橙子 说:
    1楼
    2013 年 2 月 21 日 上午 11:39 回复

    求cnseay牛再稍微深入的讲解下,我这没有报错,php的display_error是开的,两次结果显示倒是不一样。XSS那个我懂了,但怎么制造后门(webshell)呢?

发表评论

你的大名(必填)

你的邮箱(必填)

评论内容(必填)