你见过的最糟糕的安全漏洞是什么?为了保护罪犯,限制细节可能是个好主意。
不管怎样,这里有一个关于如果你发现了安全漏洞该怎么办的问题,还有一个关于如果公司(似乎)没有回应该怎么办的问题。
你见过的最糟糕的安全漏洞是什么?为了保护罪犯,限制细节可能是个好主意。
不管怎样,这里有一个关于如果你发现了安全漏洞该怎么办的问题,还有一个关于如果公司(似乎)没有回应该怎么办的问题。
当前回答
我希望你能发现这里的问题。(事实上,大错特错):
String emailBody = "";
for (int i = 0; i < subscribers.Count; i++)
{
emailBody += "Hello " + subscribers[i].FirstName + ",";
emailBody += "this is a reminder with your account information: \n\n:";
emailBody += "Your username: " + subscribers[i].Username + "\n";
emailBody += "Your password: " + subscribers[i].Password + "\n";
emailBody += "Have a great day!";
emailDispatcher.Send(subscribers[i].EmailAddress, emailBody);
}
最后一个接受者是最幸福的;)
其他回答
这里可能有一点轶事故事(但因为这是我发现的最糟糕的安全漏洞)…
有一家公司向许多公司/组织(不幸的是包括我们)出售定制CMS(用于网站)。他们使用了相当多的(主要是“LGPL”)他们自己没有制作的组件。很多客户(包括政府)。
正确处理了访问网站不同部分(以及CMS管理系统)的身份验证。 他们在CMS中使用了FCKEditor实例(允许非html保存的用户编辑网页)。 他们还使用FCKEditor的“上传连接器”脚本,允许用户添加文档,图像等。到现场。这个脚本的url是硬编码在一个公开可见的javascript包含中。 他们无法对带有上传脚本的url进行身份验证。
结果:在他们建立的每个网站上,用户都可以(不需要输入任何凭据)修改/删除/更改/上传网站上的每一个文档/文件和/或图像。
我们一发现这个漏洞就立即报告了,所以它可能不会导致直接损害(但很容易)。
我的第一份工作是在IT安全部门实习。我的任务是自动化对不同用户帐户的网络和应用程序访问,因为每个用户都转移到不同的部门/角色。也就是说,我可以使用一些基本的工具,比如查询分析器,以及一些数据库,但其他的就不多了。该公司通常会把所有东西都锁起来,所以总是有重置和授予的权限。
在这份工作中,所有的兼职人员都被要求使用一个小的VB胖客户端应用程序来跟踪工作时间,在一周结束时,一个按钮可以显示登录的用户一周工作了多少小时,以及他们这一周将获得多少报酬。
出于纯粹的无聊,有一天我偶然发现了小时间跟踪应用程序驻留在网络上的目录,并注意到在该目录中除了EXE之外只有一个其他文件,一个settings.ini文件。
果不其然,打开文件后,连接字符串在明亮的闪光纯文本;用户、密码、数据库名、服务器等等。
在这一点上,我认为这不是真正的信息,但在启动查询分析器,并进入ini设置后,我进入了主生产数据库,其中有任何人都需要给自己加薪的每一块数据。对引导的完全读写权限。
最后,我向老板展示了一份关于谁赚多少钱的问题,他平静地让我把它转发给人力资源总监。
让我告诉你,在我的生活中,我从来没有收到过这么快的,亲自回复任何其他邮件的邮件。
第二天我开始工作,时间跟踪应用程序有一个更新,唉,没有更多的settings.ini文件。
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);
......
}
}
显然,正如有人在自动化负载测试中发现的那样,单例和缺乏同步会导致安全问题。
我曾经做过一份工作,其中有一个用Java代码编写的安全层,用于检查用户是否有权编辑DB表列。这是函数的样子:
public boolean canEdit(User user, DBColumn column) {
if(true) {
return true;
} else {
return false;
}
}
社会工程:
<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