你见过的最糟糕的安全漏洞是什么?为了保护罪犯,限制细节可能是个好主意。
不管怎样,这里有一个关于如果你发现了安全漏洞该怎么办的问题,还有一个关于如果公司(似乎)没有回应该怎么办的问题。
你见过的最糟糕的安全漏洞是什么?为了保护罪犯,限制细节可能是个好主意。
不管怎样,这里有一个关于如果你发现了安全漏洞该怎么办的问题,还有一个关于如果公司(似乎)没有回应该怎么办的问题。
当前回答
几年前我移植的一款遗留应用使用了第三方回调系统来处理支付。问题是,回调脚本没有检查支付的金额是否等于订单的价格,因此可以使用Firebug编辑支付页面上“金额”字段的内容,以0.01英镑的价格购买网站上的任何产品。
其他回答
我见过缓冲区溢出,可以(理论上)通过传真输出。
有一个自动的文件路由过程,它将传真作为输入,对它们进行OCR并提取一些信息,然后在此基础上进行LDAP搜索,等等。 不知道这是不是“最糟糕的”,但肯定让我笑了。
我的银行曾经在我的借记卡上发现了一笔“可疑交易”。他们建议我取消它,买一个新的。
在等待新卡的时候,我需要取钱。于是我走进银行,把我的旧卡给了那位女士,并解释说:“这张卡最近被取消了,但我需要一些钱。你能从这个账户里取点钱吗?”
当我走出银行时,口袋里揣着现金,我意识到我刚刚用一张注销的卡从一个账户里取了钱,而没有被要求出示任何形式的身份证明。
信不信由你,我最近在一个网站上发现了这个:
eval($_GET['code']);
服务器甚至没有安全模式…
对我来说,最糟糕的,最可怕的,最危险的,犯罪的疏忽,但在彻底破坏整个系统的安全方面,奇怪的优雅总是来自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);
}
就盯着它看一分钟。想想你所能做的一切。女士们先生们,这是洛夫克拉夫特的杰作。
我曾经在一个名为ROL的本地互联网门户网站上发现了一个漏洞。RO(罗马尼亚在线-当时由PCNET拥有)。他们有一个免费的网络邮件系统。我想要一个特定的用户名(很容易猜到是哪个),但它已经被占用了。
出于好奇,我进入了“忘记密码”页面,输入了我想要的(但已被占用的)用户名。然后,在提交时,我看到了一个空白的安全问题。
哇……让我们看看他们是不是很差劲。我确保答案文本框为空,然后提交
“恭喜你,输入你的新密码”。
我输入了密码,劫持了账户。
可能发生在他们的…PHP脚本是他们比较从数据库(在答案-当然他们保持在明文)的空字符串提交我。让它们“相等”引导我进入下一步,重置密码。
是的,站不住脚的。