美文网首页
About Session

About Session

作者: Aluvion | 来源:发表于2018-09-27 21:21 被阅读0次

    总结一下Session


    众所周知,HTTP是一种无状态的协议,所以就需要一种机制来保存客户端的一些信息,这个时候session就派上用场了

    session可以做到的事情有很多,比如最常见的记录登录状态,也可以当作客户个人数据库来使用

    但是某些特定情况下,session也会导致一些安全问题


    PHP

    php session储存在服务端

    php一般与nginx、apache一起使用,这种时候日志文件一般是root用户/adm(或者其他)用户组,www-data权限无法包含的,但是session却是www-data用户,也就没有权限上的问题

    php session一般保存在/var/lib/php/sessions目录下,以sess_跟sessionid拼接的方式命名,可以通过php.ini配置文件或者phpinfo进行查看

    session包含

    如果网站存在可利用的文件包含点,且同时session中的内容可控(比如登陆之后的用户名),攻击者就可以通过包含session的方式来get shell

    session upload

    例题:http://web.jarvisoj.com:32784/

    在php的默认配置下(这里我自行关掉了cleanup,为了方便查看上传session upload的结果)

    upload_progress.enabled是打开的(哪怕在php.ini中是用;注释掉的,想要关掉就要修改php.ini,去掉注释,并将On改成Off)

    在这种情况下,就算网站中session不可控,攻击者可以通过上传session的方式来控制session

    PS:不用session_start也行

    参考资料:https://secure.php.net/manual/en/session.upload-progress.php

    如果cleanup为On,那就需要使用条件竞争了


    Python - Flask

    Flask web框架的session储存在客户端

    当然是经过加密的,加密的密钥的是Flask app运行的时候使用的secret_key,所以如果我们能获取到这个密钥,就能任意伪造session

    脚本如下,从cookie中可以取得伪造的session

    相关文章

      网友评论

          本文标题:About Session

          本文链接:https://www.haomeiwen.com/subject/tedyoftx.html