问题标签 [session-hijacking]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
39 浏览

java - 我看到不属于我的 webapp 的 JSessionId

我在自己的 VPS 和静态 IP 上运行一个网站。该网站是一个基于 Java/Spring(MVC,Security) 的应用程序,在 tomcat 7 容器中运行。

当我进入 tomcat 管理器页面时,我看到超过 300 个处于活动状态的会话,并且对我来说看起来都不正常。所有会话都具有 on 属性:

对我的站点的正常会话与上述属性的值不同

  • 我的网站会话是否被机器人入侵?

  • 外人怎么可能在我自己的 tomcat 容器上创建会话?

我只是想知道在这种情况下我会遇到什么,这样我才能妥善处理它。感谢您的帮助。

0 投票
1 回答
744 浏览

ruby-on-rails - Rails 4.2.4 (Devise / Warden)、Phusion Passenger 5.0.24 中的无意会话劫持

背景详情

我们最近遇到了一个问题,其中用户 A 可能无意中劫持了用户 B 的会话,用户 B 试图在(几乎)与用户 A 相同的时间访问控制器生成的下载。

我们仍然不能 100% 确定发生这种情况所需的所有条件,但我们可以在生产和暂存环境中可靠地重现该问题。这些环境的重要细节如下。

环境细节

应用服务器:Phusion Passenger 5.0.21 或 5.0.24(意味着我们尝试了两个版本并且都重现了问题)

框架:Rails 4.2.4

语言:Ruby 2.2.3

操作系统:CentOS 6

有趣的是,我们无法使用Phusion Passenger 4.0.53重现此问题。

重现劫持的步骤

这似乎太简单了,不可能是真的,但这就是所有必要的。

  1. 用户A登录系统
  2. 用户B登录系统
  3. 用户 A 和 B 都(几乎)同时快速单击同一个下载按钮

这就是某人的会话被无意劫持所需要的一切。(关于 A 或 B 的会话是否被劫持,这似乎是轮盘赌,尽管它可能不像看起来那样随机。)

我们知道用户的会话被劫持了,因为我们可以看到当前会话的用户的名字和姓氏显示在页面上。

每次,一个用户“变成”另一个用户。

如果用户访问角色不同,这也意味着您现在可能拥有不同级别的访问权限。例如,如果这是他们无意劫持的会话,某人可能会突然成为管理员....

需要代码

最初似乎 Phusion Passenger 是导致此问题的唯一原因,因为当我们切换回版本 4 时,此问题不再出现。

但是在一些代码更改之后,我们确定控制器代码中的一个方法似乎导致了这个问题的发生。

这是一个示例控制器方法,它将在 Phusion Passenger 5.0.21 或 5.0.24 上产生此问题:

看来我们对 Cache-Control 的修改可能很好地解决了这个问题。

也许我们不应该修改它,但我们希望有人能深入了解缓存控制参数如何能够让我们突然陷入不同的会话。

为了对此进行测试,您必须有一个映射到 Controller#sample_method 的路由,并且您必须有一个可用于单击下载此文件的按钮。

我意识到我们正在指定我们想要一个 CSV 而不是返回 CSV,但在这种情况下我用 proc 替换了我们的实际 CSV,因为我们的 CSV 是在一个单独的类中生成的。

上面列出的环境中的上述代码将重现该问题。

其他依赖

我们正在使用Devise gem进行用户身份验证。如果您要设置一个测试应用程序来尝试重现此问题,则需要设计和两个帐户设置。

顺便说一句,您还需要两个人在两台不同的计算机上进行测试。你们都需要同时登录系统并尝试同时多次单击该按钮。

我意识到这个问题似乎牵强附会,但它确实在我们的环境中表现出来。它需要特定版本的 Phusion Passenger、一组特定的标头和一个渲染块才能发生,但它确实发生了。(具体代码列在所需代码部分。)

修复

好消息是,有办法用代码解决这个问题。我们能够在 format.csv 块中使用 #send_data 方法。

而不是其他代码块,我们只是按照以下方式做一些事情:

这是更干净的代码和更好的代码。但是我们仍然担心存在某种更大的问题——无论是在乘客中,还是在我们的代码本身中。

想法?

也许社区中的专家可以解释这样的无意会话劫持是如何可能的。

似乎会话 cookie 没有正确地来回发送。(我们的会话没有使用数据库。)

尽管我们对这个特定的问题实例进行了修复,但我们不确定是否可能存在其他潜在问题(可能是在乘客中?)导致这个问题首先出现。

这似乎是一个非常奇怪的问题。

另一方面,也许只是我们对标题所做的事情是一个坏主意。

感谢您的见解!

0 投票
2 回答
202 浏览

nsis - 在 Windows 上劫持 NSIS 的下载文件

有一个我知道它包含 NSIS 的文件,以及使用 NSIS 中的 ExecWait 等 NSIS 函数下载文件然后执行的逻辑,

问题是 :

我正在尝试替换 NSIS 从 web 下载的文件,以便我可以做一些测试,首先我更改了主机并使用 web.py 制作了一个 http 服务器,所以原始 url 被劫持到我自己的服务器上,我放置了一个重定向下载文件链接,在服务器上我看到 200,但在客户端我使用一些工具找出它返回 400。(我直接在浏览器中打印 url,下载劫持文件效果很好)我不知道出了什么问题。

web.py 代码

记录 4 文件下载

所以我想知道

  1. 什么可能导致 400 代码的问题,即使在我的 python webpy 服务器中它显示 200?(对不起,我不熟悉http)

  2. 任何熟悉 NSIS 的人,还有其他解决方案我可以劫持吗?我试过用 R3 钩子,但似乎失败了,因为我不知道用 API 来钩子。

  3. 过去我听说 Fiddler 可以帮助我完成任务,但是 Fiddler 中没有显示流量,也许 NSi 下载 Fiddler 无法捕获?使用 HttpAnalyze 我可以看到流量(登录),但我不能做我想做的事,所以有没有其他工具可以满足我的需求(也许用什么时候 xxurl 制定一个规则,然后用 myurl 替换它)?

0 投票
2 回答
624 浏览

ruby - 在 Windows 10 - 64 位中安装 Beef 时出现 TheRubyRacer 错误

我正在尝试在 WINdows 10 - 64 位 PC 中安装 Beef。我按照以下链接中提供的说明进行操作:

https://github.com/beefproject/beef/blob/master/INSTALL.txt

但我不断收到此错误:

安装 ruby​​racer (0.11.4) 时出错,Bundler 无法继续。gem install therubyracer -v '0.11.3' 在捆绑之前确保成功。

我深入研究了一下,发现安装的 therubyracer 版本是0.11.0beta1 x86-mingw32,而安装程序正在搜索版本 0.11.3

在上面提供的链接中,第 38 行提到了以下几行:

最后,编辑beef 的gem lock 文件,将所需的ruby racer 版本替换为从上面链接下载的版本。

但是当我这样做时,我得到了这个错误:

您的锁定文件不可读。运行rm Gemfile.lock然后bundle install生成一个新的锁文件。

谁能帮我解决这个问题?

0 投票
2 回答
731 浏览

ios - Objective-C - 如何在应用程序终止时防止会话 ID 重用?

我的主要问题是如何检测最终用户在后台(暂停)时的应用程序终止,以便能够向服务器发送注销请求?

我们在服务器中已经有一个超时间隔来终止会话,但假设间隔是 5 分钟,所以这意味着会话将在用户终止应用程序后 5 分钟内保持活动状态,并且任何人都可以嗅探数据并重用它.

笔记:

  • 我们使用 HTTPS 连接和 SSL 证书锁定。

  • 我们还实现了一个心跳网络服务,客户端应用程序每隔固定时间间隔调用一次,以告诉服务器在此时间间隔内保持会话处于活动状态,如果此网络服务未调用特定会话,则服务器将终止此会话。

0 投票
1 回答
465 浏览

python - 如何防止 Odoo 8 中的会话劫持?

我正在 Odoo 8 上为我的公司构建产品。我想知道如何防止我的应用程序被会话劫持。我为此采取了一些步骤:

  1. 成功登录和注销后更改会话 ID。

  2. 也使用 ssl 来加密客户端和服务器之间的数据。

但是我公司的安全团队没有签署我的产品,因为他们说我们可以复制登录的人的 cookie 并将其粘贴到其他浏览器中,并且可以轻松访问该帐户,但根据我的说法,如果机器是身体受损。我不知道我现在该怎么办。

对此的任何帮助都是不言而喻的。

0 投票
0 回答
44 浏览

cookies - 使用桌面应用程序劫持会话

是否可以创建一个可以读取特定浏览器选项卡或特定域的会话 cookie 的 Windows 应用程序,并通过将 cookie 发送给在浏览器中输入它的恶意用户来使用例如会话劫持?

在我阅读时,cookie 存储在本地文件中。如果是这样,那么有可能吗?或者我在这里错过了什么?

感谢圣战

0 投票
1 回答
501 浏览

php - PHP 身份验证安全性

我为我的 web 项目构建了一个基本的 php 身份验证系统。我只想问它是否安全,因为我只是担心会话劫持和 sql 注入问题。代码如下。

用户表单字段包含用于电子邮件的 user_email 字段名称和用于密码的密码字段名称

PHP user validation code

用于检查特定页面的用户授权我将以下用于检查用户是否登录的代码放在页面顶部

我知道防止 sql 注入攻击使用 sql 准备好的语句,但我不知道如何防止会话劫持。现在我只想知道上面的代码是否安全。提前致谢

0 投票
2 回答
631 浏览

session - 如何防止来自 asp.net Web 应用程序中的 burp 套件等工具的会话劫持?

我如何防止在 asp.net Web 应用程序中从 burp 套件之类的工具中劫持会话?我尝试在 global.asax 文件中检查 ipAdress 和 Web 浏览器详细信息以进行身份​​验证,但无法找到解决方案。

0 投票
1 回答
30 浏览

php - 向服务器提供会话 ID 会导致会话固定

考虑下面的代码:

当我在浏览器上调用它时 http://localhost/user_login.php?PHPSESSID=1234

当我按重新加载几次时,我看到我的计数器在增加,但是当我输入

http://localhost/user_login.php?PHPSESSID=5678

并重新加载几次,我看到它再次从 0 开始计数。

当我将计数器留在与第一个 url 不同的数字上然后返回第一个 url 时,我看到数字又变回来了!!看来我已经创建了两个不同的会话,我什至可以通过这种方式创建更多!有什么方法可以防止发生吗?