专栏名称: 伯乐在线
关注职业资讯;学习各类职业感悟、心得和经验分享,扩大职业视野;体会求职、工作和创业的历程 - 就在JobBole.com 伯乐在线
目录
相关文章推荐
程序员小灰  ·  跌爆了。。。 ·  3 天前  
程序员的那些事  ·  董事长十几刀刺死 ... ·  2 天前  
OSC开源社区  ·  30个小确幸(程序员版) ·  4 天前  
51好读  ›  专栏  ›  伯乐在线

我见过的那些愚蠢的安全漏洞

伯乐在线  · 公众号  · 程序员  · 2019-09-29 21:58

正文

(给 伯乐在线 加星标,看经典文章

编译:伯乐在线/飞哥的咖啡

【导读】:知名安全技术博主 Tony Hunt 吐槽了一些正规公司、正规网站的安全漏洞:HTTP + cookie 里明文存放用户名密码;输入用户名与生日就能重设密码;密保问题;邮箱绑定个人信息等等。

我的朋友 Lars Klint 发过这条推:「你的密码并不是独一无二的」

(附图中的提示为:密码已经被 XXX 使用。请换一个。)


我顺手把它转发了出去,因为我知道还有比这更疯狂的事情。Twitter 用户没有把它当作一个在 Reddit 上流行的笑话,而是带着恐惧和指责评论它。事实上,这完全是可能的。呵呵,我看到过一些非常愚蠢的安全问题,它不仅让我相信这篇 tweet 的真实性,并且认为这非常有可能发生。你不信?来,朋友,帮我拿着啤酒,我来给你说道说道…

记住我

假设现在你想做一个“记住我”功能,就是在方框里打勾,然后下次回到网站时,已经登录的那种。这是 Black 和 Decker 的做法:

是的,这是 cookie 中 Base64 编码版本的密码,每次请求时的发送其实都不安全,而且由于它没有被标记为“安全的”,整个发送过程都很自由,容易被获取。

觉得这很糟糕?试试我在这一篇文章中提到的 Aussie Farmers Direct 的做法:

看吧,这是安全的,但它仍然是一个 cookie 中的密码,并且由于它不是 HttpOnly,在网站上仍然会有 XSS 攻击的风险。那对此他们是如何回应的?这就引出了下一个话题…

企业的反应

回到 2013 年,我做了一件尽职的事情,让 Aussie Farmers 知道了上述风险。我还建议,他们不应该通过邮件发送密码(这是我最讨厌的事情之一),之后我收到了一封来自自称是“市场部经理”的人的回信:

到目前为止,我司还没有发生过,因为给新用户通过电子邮件发送密码,而引起的安全问题,而且据我所知,我本人网上注册的 90% 网站,也遵循着一样的流程。

这让我想起了国际石油和天然气公司(Oil and Gas International)的这条评论,是它在我的新 HTTPS 课程文章中给出的回复。现在当登录表单没有被安全加载时,Firefox 开始警告用户,而这让他们变得暴躁:

你方对于不安全的密码和/或登录的公告,会自动出现在本司(Oil and Gas International)的登录页面上,但并未得到我方的许可,请立即移除它。我方有自己的安全系统,并且超过 15 年来从未被攻破。你发出的公告引起了订阅者的关注,并对本司的业务造成了不良影响。

他们的网站,呃,在那之后不久就没法用了(SQL 注入风险可能没有帮到他们)。但网站现在又能用了,就是不清楚,是不是他们已经把时钟往前重置了整整 15 年。

(译注:SQL Injection,即 SQL 注入,就是通过把 SQL 命令插入到 Web 表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的 SQL 命令。)

虽然我们谈论的是无关紧要的安全意见,但英国天然气公司(British Gas)过去也遇到了一些困难:

(内容:@BritishGasHelp 不允许粘贴对于密码管理不是一个有效的举措,完全没有必要,而且很危险!

@passy 如果我们允许用户粘贴,我们将失去安全证书,这会让我们置身在暴力破解的危险中,不管怎样,谢谢你的提醒~ Steve)

当我们身处世界的一角时,很难忽视 Twitter 上像乐购(Tesco)这种大企业偶尔精神错乱的例子 :

(@troyhunt 请不要担心,您的密码正被安全地存储,它只在密码提醒邮件中显示,供您进行粘贴操作)

但是,你会说“嘿,安全密码重置很难!”不尽然,看看这个…

密码重置

一切是这样开始的:

(内容:@BetfairHelpdesk 那些使用用户名和生日登录的人,是不是应该都应该改改他们的密码?)

你原本可能会想:“哦,你的用户名是电子邮件地址,然后 Betfair 给你发了一封电子邮件,而你通过其中包含的特殊链接就能重置密码”,但现在你知道了,这种想法太想当然了。出乎意料的是,Betfair 实际上并没有相信 Paul 的说法,所以我做了个视频来解释一切。

【视频】:https://youtu.be/YjBBmfovL08

这是听上去的样子:如果你知道某人的电子邮件地址和生日,你就可以任意重置他的密码。但是,在双方交流的过程中,一定是哪里出错了,导致 Betfair 板起脸来,“好心地”提醒 Paul,如果他把电子邮件地址和生日告诉其他人,就违反了他们的条款。

(内容:@BetfairHelpdesk 你似乎是在回避问题:只需要用户名和生日就能更改密码,是这样的吗?

@psawers 是的,但是如果你告诉了别人这个信息,就违反了我们的条款)

你知道他们真正需要的是什么吗?安全问题…

安全问题

我在这儿举个例子:

(内容:这是我见过的最糟糕的安全问题)

什么?这个太一般了?那么试试这个:

我刚刚上的一个网站,它有个这样的安全问题:你祖母家的狗叫什么?







请到「今天看啥」查看全文