【问题标题】:I think my PHP app is being session hijacked?我认为我的 PHP 应用程序被会话劫持?
【发布时间】:2010-04-18 18:27:40
【问题描述】:

我有一个 php 站点,允许注册用户登录(使用有效密码)并根据他们的 UserID 设置会话。但是我很确定这是被劫持了,我在我的服务器上找到了我没有放在那里的“新”文件。我的网站清除了 SQL 注入和 XSS 的所有用户输入,但这一直在发生。有没有人知道如何解决这个问题?

【问题讨论】:

  • 与会话劫持相比,它更有可能是代码中的漏洞,但除非您能提供更多细节,否则无法确定。
  • your 脚本中是否有任何代码明显(很明显,如“是的,当然可以”)将数据写入文件系统?它是一个根服务器,您可以或多或少地做任何您想做的事情(例如安装额外的软件+补丁,设置文件和目录的读/写权限等等)?
  • 我不知道这是否是一个红鲱鱼,但我在 Firefox 中查看我的网站时在 JS 控制台中收到以下内容“可能易受 CVE-2009-3555 攻击”
  • 你能贴出部分 search.php 和 7.php.jpg 吗?
  • 你和 1&1 通话了吗?这不太可能,但也可能是对他们的闯入,即在你根本无法影响的水平上。无论如何,他们可能能够帮助找出这是如何发生的,这是目前最重要的事情(当然,除了关闭服务器和/或更改任何和所有密码。)

标签: php session xss session-hijacking


【解决方案1】:

会话 cookie 劫持不应允许攻击者在您的服务器上创建新文件。它所能做的就是访问经过身份验证的用户的会话。这取决于您的代码和/或允许将任意文件上传到站点的 webroot 的服务器配置。

要检查远程入侵命中,请获取可疑文件(searches.php、7.php.jpg)等的文件创建时间...,然后梳理您的服务器日志以查看当时发生的情况。如果您将会话 ID 与命中的其余部分一起记录,您可以轻松查看会话是否被劫持,因为它会在会话的生命周期内从两个或多个不同的 IP 使用。如果原始用户从一个 ISP 登录,然后突然跳转到完全不同的 ISP,则尤其明显。

当然,您的会话是如何实现的?饼干? PHP trans_sid(在隐藏的表单字段和查询字符串中传递会话)? trans_sid 尤其容易受到劫持,因为仅仅分享指向您网站的链接的行为也会传输会话 ID,并且您网站上的任何外部链接都会在 HTTP 引用中显示会话 ID。

【讨论】:

    【解决方案2】:

    PHP 专家提出的解决方案是在每次提交表单时使用唯一的键/令牌,have a look at the idea here at net-tutes

    Don't forget have a look at the PHP Security Guide.。它涵盖的主题包括 XSS、表单欺骗、SQL 注入、会话劫持、会话固定等。

    请记住,在查询中始终使用正确的数据类型,例如在数字之前使用 intintval 函数,在字符串值之前使用 mysql_real_escape_string 函数。示例:

    $my_num = (int) $_POST['some_number'];
    $my_string = mysql_real_escape_string($_POST['some_string']);
    

    You may also use the prepend statements for your queries.

    保护 PHP 应用程序的热门项目:

    【讨论】:

      【解决方案3】:

      我会说你的“cookie”很容易猜到。

      有些网站,当用户登录时,只创建一个cookie,验证码只检查cookie是否存在。

      现在,如果我注册并登录到您的网站,然后打开您的 cookie 并注意到您只是存储了我的用户 ID,那么我可以将该值操作到其他一些用户 ID,瞧!

      你明白了。

      【讨论】:

        猜你喜欢
        • 2011-09-22
        • 2011-03-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-09
        • 2011-07-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多