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

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


当前回答

我被告知,我们总机部门的哔哔系统有一个可以用来发送消息的web前端,尽管它很丑,而且不太友好,所以我想看看我们是否可以在我们的内部网主站上使用一个表单,并通过我们的服务器将值提交给他们。

使用User和Admin角色访问系统有一个简单的用户名/密码表单,因此我查看了一下如何实现处理安全性。我发现存储了以下两个cookie:

Username: [username I had used]
Admin: False

为了确保它像我想象的那样糟糕,我打开Firefox,给它url,创建2个cookie,我的用户名和管理员:真,瞧,我有管理员权限。为了验证它,我创建了一个新用户,没有任何问题。更糟糕的是,在本地使用用户名意味着日志将显示我的操作来自任何我想要给它的人。

通过不公开来实现安全是行不通的,但当你把人们需要的一切都放在银盘上时,它就不那么管用了。

其他回答

我曾经忘记删除“管理员登录页面”。该页面只是绕过LDAP登录并获得所有权限。它可以对客户的银行账户做任何事情。我非常非常担心。幸运的是,没有人知道URL。

太可怕了,我告诉我所有的朋友取消账户!


我在一家很受欢迎的赌场网站工作。flash前端不仅仅是一个不起眼的终端。他们有一个视觉错误,不正确地管理头像图像。在我和我的朋友解决这个问题的时候,我们发现了一个完全不同的缺陷。

我们观察了从客户端到服务器的流量,发现它是base64编码的。 考虑到它会有所帮助,构建了一个简单的python终端脚本,可以利用它。我们发现客户端会向服务器发送命令和逻辑信息。

几分钟之内,我就能简单地输入我有多少筹码,谁赢了,我有什么手牌,简单地用纯文本写出来!


另一个主要缺陷-用户密码被加密,管理员密码没有使用与以前相同的漏洞,我获得了数据库信息,找到管理员登录并接管了系统。

在密码数据输入元素中没有控制逻辑操作符(OR)。通过使用它,每个人都可以很容易地通过其他的条件。对于,select查询将像这样:

select *
from TheTable
where UserName=@id And Password=@pass OR 1=1

你知道你一直读到一家大公司如何让他们的客户的个人身份被盗吗?(事实上,据我所知,这种情况在我身上发生过两次——一次是在我的健康保险公司,一次是在我的人寿保险公司)这通常是由于窃取了数据库备份磁带,这些磁带是未加密的,读取了存储在其中的未加密的个人信息。

对我来说,最糟糕的,最可怕的,最危险的,犯罪的疏忽,但在彻底破坏整个系统的安全方面,奇怪的优雅总是来自the Daily WTF:

客户端PHP

function saveform()
{
  var firstName = escapeSql(mainForm.elements.txtFirstName.value);
  var lastName = escapeSql(mainForm.elements.txtLastName.value);
  /* ... */
  var offerCode = escapeSql(mainForm.elements.txtOfferCode.value);

  var code =
  '  $cn = mssql_connect($DB_SERVER, $DB_USERNAME, $DB_PASSWORD)           ' +
  '          or die("ERROR: Cannot Connect to $DB_SERVER");                ' +
  '  $db = mssql_select_db($DB_NAME, $cn);                                 ' +
  '                                                                        ' +
  '  if (mssql_query("SELECT 1 FROM APPS WHERE SSN=\''+ssn+'\'", $cn)) ' +
  '  { $ins = false; }                                                     ' +
  '  else                                                                  ' +
  '  { $ins = true; }                                                      ' +
  '                                                                        ' +
  '  if ($ins) {                                                           ' +
  '    $sql = "INSERT INTO APPS (FIRSTNM, LASTNM, ..., OFFERCD) VALUES ("; ' +
  '    $sql+= "\''+firstName+'\',";                                        ' +
  '    $sql+= "\''+lastName+'\',";                                         ' +
  '    $sql+= "\''+offerCode+'\')";                                        ' +
  '                                                                        ' +
  '  /* ... */                                                             ' +
  '                                                                        ' +
  '  mssql_query($sql, $cn);                                               ' +
  '  mssql_close($cn);                                                     ';

  execPhp(code);
}

就盯着它看一分钟。想想你所能做的一切。女士们先生们,这是洛夫克拉夫特的杰作。