你见过的最糟糕的安全漏洞是什么?为了保护罪犯,限制细节可能是个好主意。

不管怎样,这里有一个关于如果你发现了安全漏洞该怎么办的问题,还有一个关于如果公司(似乎)没有回应该怎么办的问题。


当前回答

瑞典的一家在线dvd租赁店在查询字符串中发送了纯sql语句。

如果你在菜单框中选择了“Comedy”类别,它会将“select * from movies where category=2”作为查询字符串发送给movielist-frame,然后执行sql语句并显示所有符合条件的电影。

在您的订单中添加电影时也是如此。

只要将查询更改为“从电影中删除*”和“从订单中删除*”,该公司就会大获成功。

其他回答

几年前,一位朋友给了我一把他发现的旧斧头,希望我告诉他这是一件古老的人工制品。所以,我在谷歌上搜索了一些可能有助于识别的网站,得到了一个链接到英国中部某处的博物馆网站。

只不过它把我放到的那个页面给了我整个网站的完全管理员权限。作为一个负责任的人,我更改了账户所有者的名字,这样他们就知道我不是在胡说八道,并给他们发了一封电子邮件,建议他们在更恶毒的人发现之前,把让我进入的漏洞堵上。

不用说,我收到了网站所有者的一封非常感谢的电子邮件,开发人员向他保证,错误已经被发现并修复了。尽管你不得不怀疑一个如此粗心大意的人的能力。

public class AuthenticationServlet extends HttpServlet
{
    private String userName;
    private String password;

    protected doPost(HttpServletRequest req, HttpServletResponse resp)
           throws ServletException, IOException
    {
        userName = request.getParameter("userName");
        password = request.getParameter("password");
        authenticateUser(userName,password);
        ......
    }
}

显然,正如有人在自动化负载测试中发现的那样,单例和缺乏同步会导致安全问题。

社会工程:

<Cthon98> hey, if you type in your pw, it will show as stars
<Cthon98> ********* see!
<AzureDiamond> hunter2
<AzureDiamond> doesnt look like stars to me
<Cthon98> <AzureDiamond> *******
<Cthon98> thats what I see
<AzureDiamond> oh, really?
<Cthon98> Absolutely
<AzureDiamond> you can go hunter2 my hunter2-ing hunter2
<AzureDiamond> haha, does that look funny to you?
<Cthon98> lol, yes. See, when YOU type hunter2, it shows to us as *******
<AzureDiamond> thats neat, I didnt know IRC did that
<Cthon98> yep, no matter how many times you type hunter2, it will show to us as *******
<AzureDiamond> awesome!
<AzureDiamond> wait, how do you know my pw?
<Cthon98> er, I just copy pasted YOUR ******'s and it appears to YOU as hunter2 cause its your pw
<AzureDiamond> oh, ok.

从bash.org

我所见过的最糟糕的漏洞是web应用程序中的一个漏洞,即提供空用户名和密码将以管理员身份登录。

我不知道这是不是最糟糕的,因为我见过一些非常糟糕的,但是:

几年前,我工作的地方引进了一个叫做FOCUS的系统。不知道它还在不在。它非常适合做报告,我们开发并教了大约一千两个非It人员如何生成他们自己的报告。非常方便。他们可以做基本的报告,一些人可以做中等难度的工作,IT可以帮助处理较难的工作。

所有用于报告的数据都被定期复制到FOCUS自己格式的影子数据库中。对于更敏感的数据,我们设置安全选项,加密数据。一切都很好。

So, one day my boss calls me in, and we've lost the password to one of the sensitive databases. It's going to be hard to reproduce the data in this case, so he asks me to see if I can break the security. I had no experience as a hacker, so it took me about 5 or 6 hours to hand him the password. I started by creating some test files, and encrypting them with different passwords. I found that changing one character in the password would change two bytes in the encrypted file, specifically, the high nybble of one byte, and the low nybble of another byte. Hmmmm, says I. Sure enough, they stored the password somewhere in the first 80 bytes of the encrypted, but obfuscated the password by splitting the bytes into nybbles, and storing them in predictable places.

不久之后,我们就编写了一个REXX脚本,该脚本在VM/CMS系统下运行,可以告诉我们任何加密数据库的密码。

那是很久以前的事了——在90年代初,我相信他们已经解决了这个问题。嗯,非常确定。