利用SESSION检测SESSION验证的WEBSHELL

SESSION和COOKIE不同,COOKIE是存放在客户端的文件,而SESSION是存放在服务器上,同时也增强了安全性。如果一个
WEBSHELL的验证方式是SESSION,我们可以通过它检测出服务器的木马。
我的环境是IIS+PHP,在PHP.ini中,有这么个选项,session.gc_maxlifetime = 1440,也就是SESSION默
认到期的时间是24小时,如果客户端没做出反应,24小时后session文件就删除了,即使在客户端关闭了浏览器,它的session文件依然存在于
服务器上,php.ini中设置存放路径是session.save_path = "C:\Windows\Temp",默认在系统目录的temp文
件夹下,在这个目录里存放了session文件。由于session验证是将它存在服务器上,如果太多了也会对性能有一定影响,所以session验证
一般是用于网站的后台管理,通过源码确定一些session名,如果temp目录下出现未知的session名,就可以通过它检测是否为
webshell了。

这是某个php webshell的验证代码:
session_start();
$pass = "123";
if(isset($_POST["pass"])){
 if($pass  == $_POST["pass"]){
  $_SESSION["webshell"]=$pass;
 }

}

上面代码,如果pass等于123了,就通过验证。session名是webshell,值为提交的密码。打开c:\windows\temp目录,按
创建时间排列文件,就可以看到最后多出的那个session文件了,文件名类似于
sess_140eec21d9f2b239aa5d9904ebbe6bd9,sess_后面是串MD5值,用记事本打开刚才创建的,内容类是:
webshell|s:3:"123";
第一个是session名,最后是密码。

该方法有很大局限性,1、一些webshell用的cookie验证(部分存在cookie欺骗漏洞),2、必须熟悉服务器上程序的session名,
而且可能出现webshell与其他程序的session相同,3、太麻烦了,4、session文件保存时间有限。所以这个方法只作为一种技巧,不知
在实际中是否有用。

PS:以后大家清理记录时记得把session文件也清了。


posted @ 2011-06-03 02:19  sdfsadfasfsd2012  阅读(3046)  评论(0编辑  收藏  举报






郊外景色

小桥流水人家

牵手

风车

采花姑娘

农村乐趣

在希望的田野上

丝袜和秀腿

张曼玉