利用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文件也清了。


转载于:https://www.cnblogs.com/xiaosan/archive/2011/06/03/2070243.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值