你见过的最糟糕的安全漏洞是什么?为了保护罪犯,限制细节可能是个好主意。
不管怎样,这里有一个关于如果你发现了安全漏洞该怎么办的问题,还有一个关于如果公司(似乎)没有回应该怎么办的问题。
你见过的最糟糕的安全漏洞是什么?为了保护罪犯,限制细节可能是个好主意。
不管怎样,这里有一个关于如果你发现了安全漏洞该怎么办的问题,还有一个关于如果公司(似乎)没有回应该怎么办的问题。
我的任务是发现一个用于报告的ODBC DSN,其中密码与用户匹配,并且用户属于数据库服务器管理组。
因此,任何具有此ODBC DSN的PC都可以使用任何ODBC兼容工具通过报表用户读取/更改所有数据(甚至更糟)。不需要授权,而且身份验证非常弱。
我在一家公立医院工作,这个软件几乎安装在该州每家政府医院的每一台电脑上,数据库服务器包含各种敏感的医疗数据(完整的患者详细信息、实验室测试结果等)。
最糟糕的是,我们悄无声息地报告了安全漏洞,然后正式报告,但在我继续在那里工作的2年里,它仍然没有修复,那已经是5年前的事了。
当我13岁的时候,我的学校为学生开设了一个社交网络。不幸的是,我发现了一个安全漏洞,可以将URI更改为另一个用户id,如“?”userID=123”,并为该用户登录。显然,我告诉了我的朋友们,最后学校的社交网络充满了色情。
不过我不推荐。
不过这还不是我见过的最严重的安全漏洞。但这至少是我自己发现的最糟糕的情况:
一个非常成功的在线有声读物商店在成功认证后使用cookie存储当前用户的身份信息。但你可以很容易地在cookie中更改用户ID,并访问其他账户并在这些账户上购物。
我最后工作的公司的FTP用户名和密码与他们的域名相同。他们不太在意反复警告。
不用说,网站没过多久就倒闭了。没有在线备份,所以他们不得不重建整个系统。但这并没有结束。这次事件后的新安全密码是一样的…加上123。
Right at the start of the .com era, I was working for a large retailer overseas. We watched with great interest as our competitors launched an online store months before us. Of course, we went to try it out... and quickly realized that our shopping carts were getting mixed up. After playing with the query string a bit, we realized we could hijack each other's sessions. With good timing, you could change the delivery address but leave the payment method alone... all that after having filled the cart with your favorite items.
这里可能有一点轶事故事(但因为这是我发现的最糟糕的安全漏洞)…
有一家公司向许多公司/组织(不幸的是包括我们)出售定制CMS(用于网站)。他们使用了相当多的(主要是“LGPL”)他们自己没有制作的组件。很多客户(包括政府)。
正确处理了访问网站不同部分(以及CMS管理系统)的身份验证。 他们在CMS中使用了FCKEditor实例(允许非html保存的用户编辑网页)。 他们还使用FCKEditor的“上传连接器”脚本,允许用户添加文档,图像等。到现场。这个脚本的url是硬编码在一个公开可见的javascript包含中。 他们无法对带有上传脚本的url进行身份验证。
结果:在他们建立的每个网站上,用户都可以(不需要输入任何凭据)修改/删除/更改/上传网站上的每一个文档/文件和/或图像。
我们一发现这个漏洞就立即报告了,所以它可能不会导致直接损害(但很容易)。
这是我在微软早期的真实故事。
直到有一天你醒来,看到ZDNet.com上的头条是“在'Blah'中发现了有史以来最严重的ie安全漏洞”,你才知道什么是恐惧,而'Blah'是你六个月前自己写的代码。
在开始工作后,我立即检查了更改日志,发现另一个团队中的某人——我们信任的对产品进行更改的人——签出了我的代码,毫无理由地更改了一堆安全注册表项设置,重新签入,并且从未得到代码审查或告诉任何人。直到今天,我还不知道他到底在做什么;此后不久,他就离开了公司。(自愿的。)
(更新:对评论中提出的问题进行了一些回应:
首先,请注意,我选择采取宽容的立场,即安全密钥的更改是无意的,是基于粗心或不熟悉,而不是恶意的。我没有这样或那样的证据,我相信把错误归咎于人的易犯错误是明智的。
其次,我们现在的签到系统比12年前强大得多。例如,如果签入系统不将更改列表通过电子邮件发送给相关方,现在就不可能签入代码。特别是,在开发周期后期所做的更改有很多“流程”,这确保了所做的更改是正确的,以确保产品的稳定性和安全性。)
Anyway, the bug was that an object which was NOT safe to be used from Internet Explorer had been accidentally released as being marked "safe for scripting". The object was capable of writing binary files -- OLE Automation type libraries, in fact -- to arbitrary disk locations. This meant that an attacker could craft a type library that contained certain strings of hostile code, save it to a path that was a known executable location, give it the extension of something that would cause a script to run, and hope that somehow the user would accidentally run the code. I do not know of any successful "real world" attacks that used this vulnerability, but it was possible to craft a working exploit with it.
让我告诉你,我们很快就为这款游戏发布了补丁。
我在JScript中造成并随后修复了更多的安全漏洞,但它们都没有得到应有的宣传。
作为一个以应用程序安全顾问为生的人,有很多常见的问题让你通过一些东西来管理网站。但真正酷的是你可以买到价值一百万美元的袜子。
这是我的一个朋友的工作,但它的真实情况是,某个现在非常流行的在线图书(和其他所有东西)商店的商品价格被存储在HTML本身作为一个隐藏字段。在早期,这个漏洞困扰了许多在线商店,他们刚刚开始了解网络。几乎没有安全意识,谁会下载HTML,编辑隐藏字段,然后重新提交订单呢?
当然,我们把价格改为0,并订购了100万双袜子。你也可以改变价格为负,但这样做使他们的后端计费软件缓冲区溢出结束交易的一部分。
如果我可以选择另一个,那就是web应用程序中的路径规范化问题。能够执行foo.com?file=../../../ etc/passwd真是太棒了
我的目标是我曾经的客户。我无法登录,所以我打了客服电话。他们只问了我的用户名,没有问任何安全问题,也没有试图验证我的身份。然后,他们没有将密码重置发送到他们存档的电子邮件地址,而是问我该发送到哪个电子邮件地址。我给了他们一个不同于我文件上的地址,并重新设置了密码。
所以本质上,黑客只需要我的用户名,他就可以访问我的账户。这是一家至少90%的美国人都听说过的大银行。这件事发生在大约两年前。我不知道这是一个缺乏训练的客户服务代表还是这是标准程序。
最大的安全漏洞是web开发人员在设计开放密码字段的注册表单时。密码字段显示您键入的内容,而不是将其清空。这样,当你在公共计算机上注册表单时,就可以看到你在密码字段中输入了什么。许多网站确实有这样的注册表单。
我相信很少有低安全性的网站,用户的密码和登录信息可以很容易地被管理员访问。
瑞典的一家在线dvd租赁店在查询字符串中发送了纯sql语句。
如果你在菜单框中选择了“Comedy”类别,它会将“select * from movies where category=2”作为查询字符串发送给movielist-frame,然后执行sql语句并显示所有符合条件的电影。
在您的订单中添加电影时也是如此。
只要将查询更改为“从电影中删除*”和“从订单中删除*”,该公司就会大获成功。
旧的IBM System 36哑终端有一个开始录制宏的键盘组合。因此,当终端未登录时,您可以开始录制宏并将其留在该位置。下次有人登录时,击键将被记录在宏中,当记录最多允许的键时,记录将自动结束。稍后回来并重放宏以自动登录。
我在The Daily WTF上看到过这个。
<script language="javascript">
<!--//
/*This Script allows people to enter by using a form that asks for a
UserID and Password*/
function pasuser(form) {
if (form.id.value=="buyers") {
if (form.pass.value=="gov1996") {
location="http://officers.federalsuppliers.com/agents.html"
} else {
alert("Invalid Password")
}
} else {
alert("Invalid UserID")
}
}
//-->
</script>
恕我直言,没有什么比这更好的了。
我将分享一个我创造的。种。
多年、多年、多年以前,我工作的公司需要在他们的ASP网站上建立索引。所以我去设置索引服务器,排除了一些管理目录,一切都很好。
然而,我不知道有人给了一个销售人员ftp访问网络服务器,这样他就可以在家工作,这是拨号的日子,这是他交换文件的最简单的方式....他开始上传东西,包括详细说明我们服务....标记的文档当人们搜索“成本”时,索引服务器就会索引并开始提供服务。
记住,孩子们,白名单不是黑名单。
从早期的在线商店来看:
在购物车的数量栏输入.1即可获得9折优惠。软件正确地将总成本计算为.1 * cost,人工包装订单只是忽略了包装数量前面的奇数“.”:)
我希望你能发现这里的问题。(事实上,大错特错):
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);
}
最后一个接受者是最幸福的;)
我继承了一个客户项目来照看:一个ASP。网项目 (构建于1.1),其中50%是编译DLL(没有编译DLL) 源代码)和50%的JIT编译后代码。
整个网站应该只对会员开放——除了 原来的开发人员已经建立了一个后门:只需提交 用空白的用户名和密码登录表单,你就会 找到自己作为一个秘密的超级管理员登录:做 什么都看,什么都看。
您猜对了:所有的身份验证代码都被隐藏了 在预编译的DLL中。最糟糕的是当我 被告知“它不在bug列表中,那么客户端呢? 不会付钱,所以离开它”。我照做了,现在还在直播 今天。
一个在线文档管理器怎么样,它允许设置你能记住的所有安全权限……
直到你进入下载页面……download.aspx吗?documentId = 12345
是的,documentId是数据库ID(自动递增),您可以循环每个数字,任何人都可以获得所有公司文档。
当这个问题被提醒时,项目经理的回答是:好的,谢谢。但之前没有人注意到这一点,所以就让它保持现状吧。
在没有加密的数据库中存储信用卡信息(整个信息:号码+有效期+密码)。此外,该数据库被用作一种CRM,因此许多销售人员可以使用不安全的密码访问它。(自从我3年前离开公司后,他们就没换过名字。)
我不知道这是不是最糟糕的,因为我见过一些非常糟糕的,但是:
几年前,我工作的地方引进了一个叫做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年代初,我相信他们已经解决了这个问题。嗯,非常确定。
严格地说,这不是一个安全漏洞,更多的是一个“功能”,许多新手服务器管理员当时并不知道/关心。
在1999-2001年间,我玩Frontpage玩得很开心,解锁了安装在公共网站上的Frontpage服务器扩展。
当你安装了Frontpage后,你会在ie浏览器中看到这个很好用的“编辑Frontpage”按钮。
当访问一个网站,例如www.foo.com,如果你点击“编辑在Frontpage”按钮在Internet Explorer和服务器管理员没有正确地完成他们的工作,然后Frontpage愉快地打开虚拟目录的完整目录结构,并允许你阅读/编辑内容。
从一个人的乐队到更大的公共组织,这种方法在许多网站上都有效。
当我发现一个开放的服务器时,我总是给“网站管理员”发一封电子邮件,有一次我从一家在线零售商那里得到了一张50英镑的礼券,因为我提醒了他们这一点。
真是令人震惊。
免责声明-我需要指出的是,Frontpage是在标准构建PC上,我是在那些天,不是我自己的选择!
在一所不知名的大学,他们所有的动作查询都是通过URL传递的,而不是通过表单发布的。
这个东西一直在工作,直到谷歌Bot出现,运行了他们所有的url并删除了他们的数据库。
2007年,一家相当大的机构的国防部网站出现了错误配置,导致IIS web服务器提供原始代码,主页中有硬编码的用户名/密码和数据库服务器信息。幸运的是,它很快就被抓住了,但我确实目睹了它,这非常令人震惊。不用说,他们的网站被网络工程师关闭了,直到开发人员修复了糟糕的代码。
我曾在一家销售点公司工作。他们的软件 很多披萨店都用过。
由客户决定是否更改默认密码。 默认信息在用户手册和手册中打印 这样的。:)
几个在披萨店工作的孩子 我猜他们没有更改根密码(Unix/Linux 基于系统)。然后他们去买他和他的 朋友免费送披萨到他家近一个月 在披萨店注意到之前一年。这让我发笑 每次我想到那份工作。:)
曾经在一个网站的URL上注意到这一点。
http://www.somewebsite.com/mypage.asp?param1=x¶m2=y&admin=0
将最后一个参数更改为admin=1给了我admin权限。如果你要盲目相信用户输入,至少不要让人知道你在这么做!
中国的过滤软件——绿坝的官方网站将服务器mod_status信息公开供公众娱乐。
好奇的人:
http://www.lssw365.net/server-status
出于某种原因,你可能想在加载后不久按下停止按钮,否则它只是说由于某种原因连接重置…
将用户名列表以明文形式发送给浏览器以供JavaScript自动补全,还可以通过使用唯一的用户id调整URL查询字符串来查看用户数据,这可以从自动补全功能中收集到。
有一次我有……创造性的差异……在我帮助建立的一个社区网站上,另一个编码器添加了一个新的PHP文件,该文件列出了审批队列中的文件,该文件还具有删除每个文件的链接。
不幸的是,这个脚本使用了整个通过模糊实现安全的概念。
不知何故,一个网络爬虫发现了这个页面,并跟踪了所有的删除链接。
不用说,修改元数据或删除文件的脚本现在需要登录。
附注:我与此无关,甚至不知道这个脚本的存在,直到当时的一位工作人员告诉我发生了什么。实际上,我现在又在为这个网站工作了,部分原因是为了确保这样的事情不会再发生。
最不可原谅的安全漏洞,不幸的是,一个非常常见和容易找到的漏洞,是谷歌黑客。举个例子:
http://www.google.com/search?q=inurl%3Aselect+inurl%3A%2520+inurl%3Afrom+inurl%3Awhere
令人惊讶的是,互联网上有多少页面,特别是政府网站,通过查询字符串传递SQL查询。这是最糟糕的SQL注入形式,查找易受攻击的站点毫不费力。
经过一些小的调整,我已经能够找到未受保护的phpMyAdmin安装,未受保护的MySQL安装,查询包含用户名和密码的字符串,等等。
几年前,一所学校托管了一个学习平台网站,可以上传。php文件到网站上,然后再执行,所以他们给了你整个网站的完全访问权限。还没有被其他学生发现,我认为这个错误仍然存在。
几年前,一位朋友给了我一把他发现的旧斧头,希望我告诉他这是一件古老的人工制品。所以,我在谷歌上搜索了一些可能有助于识别的网站,得到了一个链接到英国中部某处的博物馆网站。
只不过它把我放到的那个页面给了我整个网站的完全管理员权限。作为一个负责任的人,我更改了账户所有者的名字,这样他们就知道我不是在胡说八道,并给他们发了一封电子邮件,建议他们在更恶毒的人发现之前,把让我进入的漏洞堵上。
不用说,我收到了网站所有者的一封非常感谢的电子邮件,开发人员向他保证,错误已经被发现并修复了。尽管你不得不怀疑一个如此粗心大意的人的能力。
令人惊讶的是没有人提到社会工程,但我从这篇文章中得到了乐趣。
总结:恶意用户可以买几十个u盘,在里面装上自动运行的病毒或木马,然后在深夜把这些u盘撒在公司的停车场里。第二天,每个人都来上班,被闪闪发光的、糖果形状的、不可抗拒的硬件绊倒,并对自己说:“哦,哇,免费的闪存盘,我想知道里面有什么!”——20分钟后,整个公司的网络都被冲洗掉了。
对我来说,情况并没有那么糟糕,因为数据并不是那么敏感:
我得到了一个Excel文件,里面满是要更新的宏,每个表都是锁定的,宏部分有密码保护。我拿到了密码,但我想我还是试着破解一下吧。
我找到了一个程序,可以在大约十分钟内完成,其中大部分时间可能只是下载时间。这个神奇的产品是什么,能如此快速和轻松地突破Excel安全?OpenOffice.Org。
我不确定Office 2007是否在这一点上有所改进,但让我感到害怕的是,许多非技术人员可能正在使用Excel来操作敏感信息,并认为它是安全的。然而,这些类型的人可能甚至不知道它提供的“安全”功能。
我认为超级用户访问的空白用户名/密码字段是迄今为止最糟糕的。但我亲眼看到的是
if (password.equals(requestpassword) || username.equals(requestusername))
{
login = true;
}
太糟糕了,一个操作员就有这么大的不同。
我在浏览一个购物网站,当我输入我的电子邮件地址时,我注意到地址输入页面的URL只有“?nOrderID=301”。
下车。我把数字改成99,你猜怎么着?我得到了一位住在本德的女士的名字,地址和电话号码。
几周前我确实给网站管理员发过邮件,他听起来不太高兴,但这个问题仍然没有解决……
有一段时间,该公司的整个员工信息列表(从地址到社会安全号到工资的所有信息)都存储在密码保护的Access数据库中。
使用您最喜欢的搜索引擎,查找如何恢复访问数据库的密码。是的。
拖拽到这里,你就会得到密码。字典中五个字母组成的单词。
我们有一个旧的计算机集群,在我工作的一个实验室里没有运行。几个本科生认为,让它运行起来会很有趣,这样他们就可以学习一点并行计算了。他们让它运行起来,结果证明它非常有用。
One day I came in and was checking out the stats...It was running at 100%. Now this was a 24 node cluster and there were only 3 of us that ever used it so it was a little strange that it was running at this load. I started playing with it, trying to figure out what was loading it...turned out someone had gained access and was using it as their own little porn server and spammer. I asked the undergrads what kind of security they put on it, they looked at me and said "Security? We didn't think it would need any."
我给它加了个密码,就这样。把它用作色情服务器的人原来是一个本科生的朋友。
我投票给Ken Thompson的UNIX“后门”。
这里有一个链接,有人可以从中了解更多信息: 汤普森木马编译器
我之所以认为这是最糟糕的,是因为在那个时候,法官们认为,在这种事情上取得进展的最好方法是公开讨论。
这一切只是教会了一群脚本小子一个新的非常强大的技巧。
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);
......
}
}
显然,正如有人在自动化负载测试中发现的那样,单例和缺乏同步会导致安全问题。
有一次我在一家公司工作,我不得不和别人分享 通过加密的信息。他们给我提供了一个GPG 密钥对-它们的公钥和私钥而不是 只是共享公钥和高度 保密。
我不得不向他们解释这个过程是错误的 意识到他们这样做已经很长时间了。
我所见过的最糟糕的安全漏洞是,人们在firefox账户上不使用主密码,即使他们让它保存了所有的密码。这意味着任何能拿到你账户文件的人都能窃取你所有的密码。使用主密码。
我听说,当你以电子方式提交申报表时,Turbo Tax曾经以纯文本文件发送你的SSN。这似乎不是个好主意。
我还知道一家公司将信用卡信息存储在桌面上的纯文本CSV文件中。然后通过FTP发送到支付网关....
我所见过的最糟糕的安全漏洞实际上是由你们公司编写的,导致谷歌机器人删除了我的整个数据库。
当我第一次学习经典ASP时,我编写了自己的基本博客应用程序。包含所有管理脚本的目录在IIS上受到NTLM的保护。有一天,我移动到一个新的服务器,忘记重新保护IIS中的目录(哎呀)。
博客主页有一个指向主管理界面的链接,主管理界面为每条记录都有一个DELETE link(没有确认)。
有一天,我发现数据库中的每一条记录都被删除了(数百条个人记录)。我以为是某个读者闯入了网站,恶意删除了所有的记录。
我从日志中发现:谷歌机器人爬了站点,跟踪管理链接,然后继续跟踪所有的DELETE链接,从而删除数据库中的每一条记录。我觉得我当之无愧的年度傻瓜奖被谷歌机器人无意中损害了。
谢天谢地,我有备份。
在我以前工作的店里有个不错的。通往非公共区域的门有小键盘,所以你必须输入pin码才能进入。然而,你只需按#,门就会打开,这是我们喜欢的事实,因为按#比按6位pin码容易得多。
微软鲍勃 (来源:Dan's 20th Century Abandonware)
如果您第三次输入密码错误,系统将询问您是否忘记密码。
http://img132.yfrog.com/img132/8397/msbob10asignin15.gif
但是,你可以输入任何新密码,它会替换原来的密码,而不是像继续提示输入正确的密码,直到输入正确的密码,或者在多次尝试错误后锁定你!任何人都可以用任何密码“保护”的Microsoft Bob帐户这样做。
不需要事先进行身份验证。 他的意思是,用户1只需要三次输入密码错误,然后第四次输入新密码就可以更改自己的密码,而不必使用“更改密码”。
这也意味着User1可以修改User2, User3…以完全相同的方式。任何用户都可以更改其他用户的密码,只要输入三次错误密码,然后在出现提示时输入新密码,然后他们就可以访问该帐户。
http://img132.yfrog.com/img132/9851/msbob10asignin16.gif
在PHP中,这是在第一个包含文件:
extract($_GET);
extract($_POST);
它允许覆盖未被_GET或_POST调用的变量。
我的一个朋友曾经知道一个站点将SQL查询作为GET参数传递。你知道有些人会拿这个开玩笑。
我的第一份工作是在IT安全部门实习。我的任务是自动化对不同用户帐户的网络和应用程序访问,因为每个用户都转移到不同的部门/角色。也就是说,我可以使用一些基本的工具,比如查询分析器,以及一些数据库,但其他的就不多了。该公司通常会把所有东西都锁起来,所以总是有重置和授予的权限。
在这份工作中,所有的兼职人员都被要求使用一个小的VB胖客户端应用程序来跟踪工作时间,在一周结束时,一个按钮可以显示登录的用户一周工作了多少小时,以及他们这一周将获得多少报酬。
出于纯粹的无聊,有一天我偶然发现了小时间跟踪应用程序驻留在网络上的目录,并注意到在该目录中除了EXE之外只有一个其他文件,一个settings.ini文件。
果不其然,打开文件后,连接字符串在明亮的闪光纯文本;用户、密码、数据库名、服务器等等。
在这一点上,我认为这不是真正的信息,但在启动查询分析器,并进入ini设置后,我进入了主生产数据库,其中有任何人都需要给自己加薪的每一块数据。对引导的完全读写权限。
最后,我向老板展示了一份关于谁赚多少钱的问题,他平静地让我把它转发给人力资源总监。
让我告诉你,在我的生活中,我从来没有收到过这么快的,亲自回复任何其他邮件的邮件。
第二天我开始工作,时间跟踪应用程序有一个更新,唉,没有更多的settings.ini文件。
我个人发现的最糟糕的情况是,在一所大学,所有系统(包括教授办公室)都使用运行X的机器。一台服务器托管了所有这些X会话……
有趣的是,您可以启动一个新的X应用程序(时钟是最受欢迎的,但任何X应用程序都可以工作),并选择显示它的终端。有了一个快速的脚本,你就可以在校园里每个实验室/办公室的每台电脑上启动它……
当然,真正暴露这个安全漏洞的应用程序是一个虚假的shell登录,其中的输入被记录到一个文件中。
它运行了一周,获得了数百名学生和教授的用户名和密码,并产生了一对非常不高兴的管理员。
在签名代码中:
System.setSecurityManager(null);
(你可以通过谷歌代码搜索。)从进程中运行的所有代码中删除所有Java安全限制。可能没有想清楚。
"select * from LoginMaster where UserId='" + txtUserId.Text + "'
and Password='" + txtPassword.Text + "';"
我曾在一个经营直销业务的生产网站上看到过这种情况。上面的Sql语句非常非常容易受到Sql注入的攻击。
我还将在这里列出HACME银行。根据网站Hacme银行是:
Hacme Bank™ is designed to teach application developers, programmers, architects and security professionals how to create secure software. Hacme Bank simulates a "real-world" web services-enabled online banking application, which was built with a number of known and common vulnerabilities. This allows users to attempt real exploits against a web application and thus learn the specifics of the issue and how best to fix it. The web services exposed by Hacme Bank are used by our other testing applications including Hacme Books and Hacme Travel.
我最好朋友的弟弟刚刚完成学业。几天前他向周围的人宣称他是一个“网站管理员”和“网络开发人员”。我告诉他,他的网站不好,不安全。 “砍他们”他回答。 10分钟后,我把他的4个网站的全部源代码发给了他:) 他在做类似< ?包括$ _GET['公司');? >”
你越厚脸皮,就越容易受到攻击:)
在一些Unix机器(当然是所有的SunOS)上,您可以将setuid shell脚本链接到一个名为“-i”的文件。 shell脚本将文件名解释为它的第一个参数,并运行"sh -i" =一个交互式shell,并获得setuid文件所有者的许可。
因为大多数setuid shell脚本都是以根用户身份运行的,以便允许您执行一些需要根用户权限的操作,比如弹出CD或加载磁带。这意味着在20世纪90年代,在大多数大学的Unix机器上获得管理是很简单的。
作为对所有读者的提醒,无论是否知情:我刚刚从一个专业那里买了一本800页的2008年版权的关于这个主题的书——在序言中,作者做了一个“嘿,等一下……”,在序言中详细指出,不止一个拥有丰富证书和现场经验的安全专业人士,嗯哼,被赋予了意义,……因为他们看到了一些看起来相对新手的入侵。
如果把它当作看似无害的,那么由于未经授权的活动,就会引发正式诉讼。作为一个专业人士,他们中的一些人被毁了。
我注意到的最后一次入侵涉及一家主要的银行服务,该服务已经存在了很长时间,以至于市民很少听到他们的品牌名称。整个商店的所有数据都是未加密的——但是,对于不知情的人来说,奇怪的是,这家银行实体已经成为了一个“清算所”(我不知道统计数据,但它超过了一半),为不止一个零售品牌的信贷提供商处理信用卡交易。
入侵者只是在空投处放置了一个(装置)。(这是电信公司从世界各地进入的线路)没有花哨或复杂的交通监控工具,只有基本的。我建议每个人都监控今年2月以来的所有信用活动:所获得的是与当前活跃和有效信用账户上的有效名称相匹配的有效cc#。
空前的。
像往常一样,它是一个没有安全专业知识的人从管理权威的位置上运行一个商店。工程术语是“失效模式分析”……
社会工程:
<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
Select * from user where user_id = '*userId*' and access_level = 0 or access_level = 1;
如果查询返回任何行,则它们被允许进入系统。围绕着“access_level = 0或access_level = 1”的括号将实现他们的意图。相反,只要有access_level为1的用户,任何人都可以进入。
两个系统之间的“统一登录”——这暴露了密码为免费文本.........在url中!!
这是一个“离岸”的政府项目。幸运的是,它很早就被注意到了。可怕的是开发人员并没有看到这么多的问题-真的让你怀疑。
这是很久以前的事了……但DEC的VAX系统过去是随账户一起发货的:
系统登录: 密码:经理
而且 登录:字段 服务密码:
大多数系统管理员都知道SYSTEM帐户,并且大多数(但不是全部)会更改它。然而,并不是所有人都知道FIELD帐户也有SYSTEM特权。
我的一家公用事业公司在他们的信用卡表单中没有使用自动完成="off"。
当然,他们不会存储你的信用卡信息(一件好事),但想象一下当我支付第二个月的账单时,我有多害怕,我的浏览器竟然为我填写整个信用卡号码……
当我第一次加入我现在工作的公司时,我的老板正在查看一个潜在新客户的现有电子商务网站。这是在IIS和电子商务的相当早期,我们可以说,安全性不那么严格。
长话短说,他改变了一个URL(只是出于好奇),并意识到目录浏览并没有关闭,所以你可以把URL末尾的页面名称剪掉,然后看到web服务器上的所有文件。
最后我们浏览了一个文件夹,里面有一个Access数据库,我们下载了这个数据库。它是整个电子商务客户/订单数据库,充满了数千个未加密的信用卡号码。
“网络编程安全101”风格的最大错误是招聘机构的搜索页面提供了“下一页”链接,这只是获取更多工作列表的SQL语句。您可以轻松地将此URL更改为任何其他SQL语句,包括“drop table X”。如果你这么做了,他们的整个网站都会完蛋。
login.jsp?type=user&redirct=/home.jsp&userid=12345&username=username&password=mypassword
这发生在一个非常大的网站上。当我看到这个的时候,我惊呆了。
我不想承认这一点。但是有一天,当我没有存储库的管理密码时,我发现了如何破解VSS 2005(讨厌的部分是不得不使用VSS:D)
如果您创建了一个具有管理权限的本地计算机帐户,该帐户与VSS帐户具有相同的名称,并登录,VSS会提示:
"Hey great .. you are logged on to the computer with an account name that
I recognize as being the same as one of my accounts,
and your account has admin privileges on the computer ..
so I am going to bypass *my* security and give you admin
privileges to all of VSS!!!!"
那次黑客攻击是我在谷歌上看到的第一个链接,当时我试图破解VSS密码
当然,它不会提供您所缺少的VSS密码
整个经典ASP购物车“Comersus”。整个事情是意大利面条代码的混乱,所有的SQL语句都是成熟的SQL注入,因为没有做任何过滤。可悲的是,我不幸地处理了近两年的“申请”,这绝对是一场噩梦!
在我以前的学校,他们把用户密码以明文形式存储在cookie中。
这本身就很可怕,但更糟糕的是,他们把它们储存在饼干里供*.大学。当然,现在所有学生和员工的页面都在university.edu.au/~user这样的网站上。
<?php
var_dump($_COOKIE); // oops.
1-800 dominos will give unlisted address's related to any target phone number. When prompted if you are calling about the phone number you called from select no. The system will prompt you for a new phone number, the system will then read back to you the name and address that's associated to this phone number. Enter in your target's phone number and you now have their name and address. This is pretty common with automated ordering systems and if dominos has fixed this there are literally hundreds more.
有许多网站使用代理文件来传送图像或其他文件。没有检查路径的有效性。
So.
getfile.php ?文件 =../../../../ 等/ passwd
or
Getfile.php ?file=../index.php(包含所有密码的纯文本)
令人惊讶的是,还有很多网站仍然存在这个缺陷。getfile.php只需要谷歌,你就可以轻松地打开盒子了。
一些朋友在大学里是同班同学。他们发现教授把所有的作业答案都贴出来了,甚至包括那些还没有交作业、还没有打分、甚至还没有布置的作业。教授只是把它们的链接或解决方案嵌入到课程网页中,并将它们注释在HTML注释中,直到作业被收集和评分。
在我尝试的一个免费网络主机上,用“忘记密码”的方法将密码发送给你时出现了一个逻辑错误——如果你没有输入电子邮件地址(辅助电子邮件是可选的),它会将主地址的密码通过电子邮件发送给每个没有提供辅助电子邮件的用户。
一天,我和其他数百人收到一封电子邮件,里面有数百个用户名和密码,密码都是明文。
XSS是我喜欢在网站上找到的东西。
下面是我的发现日志的链接:
所有:http://xssed.com/archive/author=Dr.Optix
只有特色菜:http://xssed.com/archive/special=1/author=Dr.Optix/
祝你浏览愉快!
在这里根据记忆来解释,但它很接近……
<form action="secretpage.html" id="authentication"
onsubmit="return document.forms.authentication.password.value == 's3cr3t'">
Enter password: <input type="password" name="password"><br>
<input type="submit" name="Login" >
</form>
我认识的一个家伙用这个来保护他网站的“私人区域”。起初,他不愿意相信我,甚至他的浏览器都有这个不可靠的“查看源代码”功能。
想到这一点,我所见过的最糟糕的安全漏洞是当管理电子门锁的人说“你是什么意思,锁不知道公共假日”?
是的,每个周一到周五都是公共假日,因为门系统已经安装好了,我看到前门在08:00-17:30没有锁。
一个使用faces和managedbean的应用程序。用于编辑已经登录的用户的bean与自注册表单使用的bean相同,其中两个隐藏字段是唯一的区别。的意思吗?如果你得到了某人的证件号码(相当于美国的社会安全号),你就可以修改他们的密码。
我曾经做过一份工作,其中有一个用Java代码编写的安全层,用于检查用户是否有权编辑DB表列。这是函数的样子:
public boolean canEdit(User user, DBColumn column) {
if(true) {
return true;
} else {
return false;
}
}
我以前的学校有学生的密码和他们的用户名一样,加上很容易得到他们的用户名(一个数字,例如123233),然后你可以点击添加列,找到学生的名字和姓氏,以及他们的用户名。因此,很容易在他们的账户中随机放入垃圾,让他们认为“机器里有鬼”。
几年前我移植的一款遗留应用使用了第三方回调系统来处理支付。问题是,回调脚本没有检查支付的金额是否等于订单的价格,因此可以使用Firebug编辑支付页面上“金额”字段的内容,以0.01英镑的价格购买网站上的任何产品。
我所见过的最严重的安全漏洞是在MS SQL Server的早期版本中,7.0或2000版本,记不清了。
当安装此版本的SQL Server时,安装程序默认会给“sa”帐户一个空密码!!(sa帐户是SQL管理员帐户,它可以在服务器上做任何事情)
这基本上让任何人都可以访问没有防火墙保护的SQL服务器。
但还有更糟的。
当时,安装了许多SQL服务器以在“本地系统”身份验证下运行服务,这使SQL server进程对系统有无限的控制。
既然你可以在SQL server中创建COM对象,你就可以完全访问运行SQL server的计算机了。
很多网站都是这样被黑客攻击的。
不是技术上的安全漏洞,但仍然是一个安全漏洞:
我的银行卡最近被自动取款机吃了,我花了几个星期才把它拿回来。当它最终到达银行时,银行的一位女士打电话给我,问我是想自己取卡还是让他们邮寄给我。她还告诉我,如果他们要寄给我,他们会关闭它,直到我打电话给他们确认它安全抵达我家。
我收到了这张卡,并附上了一封简短的信,上面有确切的联系方式,其中包括一张便条,说我需要打电话重新启用这张卡。我只是打电话给他们,给了他们我的名字和账号,这两个都印在卡上,他们重新启用了卡。
基本上,如果有人抢了那封信,他们就会有信用卡和银行号码,以及所有需要的信息,让银行相信实际上是我打来的。所以那里的安全系统不太好。
最近,我被要求对一家公司的网站进行代码审查,希望我的雇主把这个网站作为一个维护项目。
我没花多长时间就发现了网站根目录下的纯文本文件,其中包含大约6000个客户的信用卡详细信息,包括账单名称、地址和CVV代码。它的名字甚至都没有想象力!
这是该网站最糟糕的问题,但它也充满了SQL注入问题。
我们礼貌地指出了这些问题,网站所有者将其退回到原始开发人员那里寻求解释。
不是最坏的,但也足以造成一些真正的损害。你会惊讶于这一点被忽视的频率有多高。特别是当人们使用这些流行的框架时,
yourwebapp.com/items/edit.php?id=4
yourwebapp.com/items/delete.php?id=4
不确定项的所有者是请求页面的人。 也就是说,你可以登录你的账户,然后在整个应用程序中编辑或删除任何人的项目。
一个简单的检查可以防止很多损坏。
$item = // find your item by the $_GET[ 'id' ];
if( $_SESSION[ 'user_id' ] != $item[ 'user_id' ] ){
// kick em out they dont belong...
}
我有Joe X以前的家庭地址,需要知道他在同一城市的新地址,但没有办法联系到他。我估计他每天都会收到一堆邮购目录,所以我随意拨打了See’s Candies的800电话(与维多利亚的秘密、瑞士殖民地或任何其他大型邮寄公司不同):
我:“嗨,我是Joe x。我想我已经在你的邮件列表中出现过两次了,我的旧地址和新地址都有。你的电脑显示我的地址是[旧地址]还是[假地址]?”
接线员:“不,我们给你看[新地址]。”
In the 1970's Stanford had IBM 2741 hardcopy terminals spread around campus networked to an IBM 360/67. Account passwords were three characters. During logon, the password prompt would overprint a three-position blob of about nine random uppercase characters, so the subsequently-typed password would supposedly be masked by the blob. However, everyone typed their passwords in lowercase, which were trivial to discern against the uppercase background blob. That meant you could usually walk up to any terminal, peruse the hardcopy typically left behind by the previous user, and easily logon with their account and password.
我记得申请大学的通用应用程序网站有这个“安全”功能,它宣布将在一定时间后注销你。但是,他们使用了一个警告框,如果你没有真正回应,就会暂停倒计时,使你的会话无限期。
我曾经打电话给一个BBS,它在首页上有一个“Drop To DOS”选项。菜单上没有列出来,但我打错了,无意中找到了。
然后我可以远程访问这家伙的DOS命令行。
不是最糟糕的,但很好笑的一个是Android操作系统重启的bug。当用户使用G1手机时,他们可以在手机的任何地方输入“重启”(比如:短信或电子邮件),手机就会重新启动。
if( $session['role'] = "admin" ) //grant admin rights
只要少一个字符(“=”而不是“==”),就可以向登录的任何人授予管理权限。你是有罪的。
我曾见过法国一家高端国防承包商的高管使用Skype进行非常机密的会谈 (声明一下,Skype使用的是很久以前被破解的RC4加密算法)。
我想他们的无知可以被原谅,因为他们也使用Windows和MS-Word (为了记录,MS-Word保留了以前用这个模板编写的所有文档的历史)。
这引发了一些有趣的问题:纳税人的钱都花到哪里去了——这些钱是否被明智地使用了。
我曾经有幸尝试保护一个网站(ASP Classic),该网站“需要”密码才能访问管理界面。当然,如果你只是去其中一个管理页面的地址,你可以做任何你想做的,登录与否。
他们想知道自己是怎么被黑的。
在登录时,有一个隐藏的字段,让“网站管理员”选择成功和失败时要包含的文件。
是的,/etc/password工作了。
或者在“log”目录中,有order-xxx。order-xxx.txt包含卡号,包括检查号和验证日期。
这不是安全漏洞,而是那些把自己的产品标榜为高安全性的公司的安全耻辱(这是他们的主要特征之一)
这是关于“安全登录”的页面为合作伙伴。是这样的:
第一次你通过电子邮件获得明文密码,一旦你登录,你当然不会在第一屏幕上阅读废话,你只是跑去找你要找的东西(文档或软件),然后注销。
但这里有个技巧,下次你尝试登录时,你的密码不再有效,因为你应该有新密码,他们每次都会在你的个人资料下发布在网站上。所以在交换了几封电子邮件后,他们给我发了大约30个列举的一次密码列表,我每次只能使用一次。(我花了一周时间和几封邮件重新协商这个列表)
所以我打印了这个密码列表,贴在我桌子前的墙上,每次登录时我都用钢笔涂掉一个密码。我可不想有人从我桌前走过看到这份名单。
一个让我害怕的安全漏洞是在我曾经维护的一个遗留应用程序中,其中有一个settings.ini文件,其中的数据库凭据是纯文本的,所有用户密码都以纯文本的形式存储在数据库中。
我见过的大多数安全漏洞都发生在我的高中和大学。
首先,我发现我可以通过(非常简单的)ping flood攻击来关闭学校的互联网。不仅仅是我高中的互联网,整个学校系统,包括大学的一部分。绝对没有速率限制。在我演示之后,他们最终把它修好了。(顺便说一句,我的第一份编程工作就是靠这种“宣传”获得的)
第二点,也是可能性更大的一点是:
Ok, so every computer in the school was connected to a domain and such. So, when you logged onto a computer, it would copy down a generic user directory(including application data, etc folders) and then proceed with the login. Some people had their own logins other than the generic "student" account for one reason or another. Well, while I was browsing the public server where everything was shared on, I found a /users directory. Upon looking at it I discovered froma generic student account I had read-write to every users directory, including teachers, administrator, and the generic student account.
为了愚人节,我计划写一个简单的批处理文件或小程序,弹出一些类似Class of 09 rocks的东西!登陆每个人只是为了演示它,但我退缩了。我也从来没有告诉过管理员,所以这个安全漏洞可能仍然存在。
我曾经听说过一个在银行工作的程序员,他们以小数点后16位的精度计算他们的内部数据(包括账户余额)。
所以这个家伙改变了银行转账程序,每笔交易将0.00001美元转到他自己的账户,剩下的转到原来的目的地。我认为他们很快就抓住了他,但我不得不承认,当我第一次听说他的想法时,我觉得它很好。
About 3 years ago I built a site for a somewhat large non-profit organization in our state. When it came time to deploy the application to their web host server, I noticed an odd file named "cc.txt" or something obvious like that in their public site. It was under their web root, was getting served, and was a csv file of all their donor's names, addresses, credit card numbers, expiration dates, and CVV/CVC codes. I cannot count the number of times I brought the issue up - first to my boss, then our company accountant, the client's IT director, finally the client's President. That was 3 years ago. The file is still being served, it can even be googled. And it's been updated. I tend not to respond to their donation solicitations when I get them.
我的银行曾经在我的借记卡上发现了一笔“可疑交易”。他们建议我取消它,买一个新的。
在等待新卡的时候,我需要取钱。于是我走进银行,把我的旧卡给了那位女士,并解释说:“这张卡最近被取消了,但我需要一些钱。你能从这个账户里取点钱吗?”
当我走出银行时,口袋里揣着现金,我意识到我刚刚用一张注销的卡从一个账户里取了钱,而没有被要求出示任何形式的身份证明。
我曾经接手了一个系统的开发,这个系统在全国有200个客户在使用,它有硬编码的密码。是的,代码实际上写着:
if password = "a"
去年,我离开了一家汽车ERP公司,该公司数百个客户的服务器上都有相同的管理密码。我猜我走后他们没有全部换掉。
当我还在上中学的时候,县里的学校系统设置了所有的“安全”软件来防止孩子们接触部分互联网,或者改变配置设置和安装垃圾软件。除了该软件非常边缘的事实(一些shell修改可以通过在文件>保存框中单击鼠标右键绕过),他们还设置了教师的密码来教学。
是啊,真的很安全。
我曾经在一个名为ROL的本地互联网门户网站上发现了一个漏洞。RO(罗马尼亚在线-当时由PCNET拥有)。他们有一个免费的网络邮件系统。我想要一个特定的用户名(很容易猜到是哪个),但它已经被占用了。
出于好奇,我进入了“忘记密码”页面,输入了我想要的(但已被占用的)用户名。然后,在提交时,我看到了一个空白的安全问题。
哇……让我们看看他们是不是很差劲。我确保答案文本框为空,然后提交
“恭喜你,输入你的新密码”。
我输入了密码,劫持了账户。
可能发生在他们的…PHP脚本是他们比较从数据库(在答案-当然他们保持在明文)的空字符串提交我。让它们“相等”引导我进入下一步,重置密码。
是的,站不住脚的。
当你丢失了密码和找回表格时,询问用户名和你的电子邮件。并且不验证电子邮件并将密码发送到指定的电子邮件。
刚)一/总动员:
这是在一个本地电视付费/订阅的网站上。很容易找到用户名,很多人使用名字。今天这个电视频道已经破产了(因为其他原因,比如缺乏专业精神)。
事实上,只要使用文件/进程十六进制编辑器,就可以在大多数未加密的应用程序或文件上绕过安全性或预期功能。当然,在大多数游戏(在线或离线)中给自己无限的金币或上帝模式是很棒的,但它也很棒,只是抓取或编辑你想要的值,包括密码。事实上,有时候你只需要记事本。幸运的是,记事本不在DMCA联邦控制的计算机应用程序名单上…然而。
编辑:我指的是利用“皇帝的新衣”场景,用最简单的工具识别安全缺陷。这种场景在任何语言或平台的编程或消费者社区中都很常见,甚至可以成为通用标准。
有一家银行通过其网站提供一些服务。开发人员考虑了任何作为整个系统的有效用户登录的人,他们使用URL来识别账号,因此只需更改URL上的ID,就可以查看其他账户的余额。
对于认为身份验证和授权是一回事的web开发人员来说,这是非常糟糕的。
此外,银行不通过其网站转账也很好,否则有些人会很富有;-)
其中一个最简单,但真正值得付出代价的是:
使用PayPal等引擎的支付系统可能存在缺陷,因为在支付成功后,PayPal的响应没有得到应有的检查。
例如:
我可以进入一些CD购买网站,向购物车中添加一些内容,然后在结帐阶段,页面上通常会出现一个表单,其中包含paypal的字段,以及“支付”的提交按钮。
使用DOM编辑器,我可以进入“live”表单,将值从£899.00更改为£0.01,然后单击提交…
当我在PayPal的时候,我可以看到金额是1美分,所以我支付了,PayPal将一些参数重定向到初始购买网站,该网站只验证诸如payment_status=1等参数,而不验证支付的金额。
如果没有足够的日志记录,或者产品是自动分派的,那么成本就会很高。
最糟糕的一类网站是提供应用程序、软件、音乐等的网站。
我最近看到的最大安全漏洞是iOS 4 (iPhone)的锁屏漏洞,允许任何人立即访问任何iPhone(打电话、地址簿、通话记录、照片)。
http://www.pcworld.com/article/208813/ios_4_lock_screen_security_flaw_grants_access_to_contacts.html
The worst security hole I've seen was from a (very very bad) hosting company. And even worse it was just some months ago (summer 2010)! You had to first connect to your hosting package control panel (you needed valid credentials). Once logged in all you had to change was the id GET token from the URL and voilà, you're in the control panel of another user! You have access (save/edit/delete) to emails, files, databases. The ids were sequential so you only have to do +1 and you're in the next account. I hope someone have been fired for this!
这是我和他们一起经历过的众多WTF之一!幸运的是,我不是他们的顾客!
你知道你一直读到一家大公司如何让他们的客户的个人身份被盗吗?(事实上,据我所知,这种情况在我身上发生过两次——一次是在我的健康保险公司,一次是在我的人寿保险公司)这通常是由于窃取了数据库备份磁带,这些磁带是未加密的,读取了存储在其中的未加密的个人信息。
我工作的公司有很多安全错误……下面是一些比较糟糕的例子:
所有的前雇员仍然拥有所有东西的活跃账户,即使是那些被解雇或关系不好的人 我们开发的每个站点(200多个)都有相同的管理员用户名和密码,所有在这里工作的员工都知道
史诗般的失败。
在密码数据输入元素中没有控制逻辑操作符(OR)。通过使用它,每个人都可以很容易地通过其他的条件。对于,select查询将像这样:
select *
from TheTable
where UserName=@id And Password=@pass OR 1=1
访问一个非常有名的在线商店的联系页面,向下滚动,搜索一个电话号码。相反,我发现了一个上传表单,它接受所有的文件类型,实际上把上传的文件放在网站的根文件夹中,这意味着如果一个人上传了一个名为test.php的文件,它将被url mydomain.com/test.php调用:)
由于他们使用osCommerce(开源),因此编写一个脚本来获取所有数据库连接细节,然后下载他们完整的客户数据表,对于任何有足够智商的人来说,这将是不到五分钟的工作。
我联系了他们,最后得到了我下次购买的折扣券,他们在几分钟内删除了上传表单。
太可怕了,我告诉我所有的朋友取消账户!
我在一家很受欢迎的赌场网站工作。flash前端不仅仅是一个不起眼的终端。他们有一个视觉错误,不正确地管理头像图像。在我和我的朋友解决这个问题的时候,我们发现了一个完全不同的缺陷。
我们观察了从客户端到服务器的流量,发现它是base64编码的。 考虑到它会有所帮助,构建了一个简单的python终端脚本,可以利用它。我们发现客户端会向服务器发送命令和逻辑信息。
几分钟之内,我就能简单地输入我有多少筹码,谁赢了,我有什么手牌,简单地用纯文本写出来!
另一个主要缺陷-用户密码被加密,管理员密码没有使用与以前相同的漏洞,我获得了数据库信息,找到管理员登录并接管了系统。
我被告知,我们总机部门的哔哔系统有一个可以用来发送消息的web前端,尽管它很丑,而且不太友好,所以我想看看我们是否可以在我们的内部网主站上使用一个表单,并通过我们的服务器将值提交给他们。
使用User和Admin角色访问系统有一个简单的用户名/密码表单,因此我查看了一下如何实现处理安全性。我发现存储了以下两个cookie:
Username: [username I had used]
Admin: False
为了确保它像我想象的那样糟糕,我打开Firefox,给它url,创建2个cookie,我的用户名和管理员:真,瞧,我有管理员权限。为了验证它,我创建了一个新用户,没有任何问题。更糟糕的是,在本地使用用户名意味着日志将显示我的操作来自任何我想要给它的人。
通过不公开来实现安全是行不通的,但当你把人们需要的一切都放在银盘上时,它就不那么管用了。
有一个云渲染库的许可证是2500美元,在注册之前有有限的工作时间(比如一分钟)。评估演示可以无限地运行。在exe内容中搜索单词“demo”会显示“[产品名称]demo”和附近的十六进制符号字符串。是的,那是登录名和密码。
高中时,实验室正在运行windows的早期版本。政府在一项安全计划上花费了大量资金。
负责实验室的先生来找我,让我绕过系统看看它是否安全。“没关系,你不会有麻烦的。”
我重新启动,按f8,当它问我是否要加载安全程序时,按N,然后Y到其他所有东西上。
我见过缓冲区溢出,可以(理论上)通过传真输出。
有一个自动的文件路由过程,它将传真作为输入,对它们进行OCR并提取一些信息,然后在此基础上进行LDAP搜索,等等。 不知道这是不是“最糟糕的”,但肯定让我笑了。
我很惊讶我还没有看到微软wga验证黑客提到。
您可以下载在允许您访问下载之前验证您的窗口副本的控件,或者您可以将以下一行javascript粘贴到地址栏并单击返回。
javascript:void(window.g_sDisableWGACheck='all')
它的目的是让用户验证一次并下载多个项目,但由于它存储在客户端,因此很容易操作!
对我来说,最糟糕的,最可怕的,最危险的,犯罪的疏忽,但在彻底破坏整个系统的安全方面,奇怪的优雅总是来自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);
}
就盯着它看一分钟。想想你所能做的一切。女士们先生们,这是洛夫克拉夫特的杰作。
这里有一个我不常看到的例子。这是一个非常有效的安全漏洞,困扰着大多数登录表单。我大约在十年前发现了它。
我在多伦多大学学习,那里有一个叫做ROSI的系统,允许学生管理他们的费用和课程注册。他们还在总会议区设置了两个公共终端,只能显示ROSI网站,学生可以输入他们的学生证和密码登录和管理他们的物品。
但是,在用户注销后,您可以在终端上按浏览器的alt-left键返回登录表单,然后按alt-right键前进一键,然后单击刷新。在这一点上,浏览器会要求你确认重新发布表单数据,如果你点击是,它会重新发布以前的用户登录/通过和登录你。
大多数登录表单仍然容易受到这类攻击。解决方案是post/redirect/get或使用nonce键。
我给我的大学管理员发了很多次邮件,但我认为他们至少在我毕业离开之前都没有解决这个问题。这大约是在2002年。
一些验证码是这样的:
public bool charsEquals(char[] input, char[] txt)
{
for (int i = 0; i < Math.min(input.length; txt.length); ++i)
{
if (input[i] != txt[i]) return false;
}
return true;
}
像这样使用它:
if (charsEquals(inputPassword, requestedPassword))
看了YouTube上关于Tux和比尔·盖茨之战的搞笑视频后,我开始思考这个问题。当Tux没有密码进入微软大楼时。
我想说,最糟糕的安全漏洞是不了解/理解您的环境和第三方工具,如果您将它们包含在您的程序中。
一个真实的例子:
在我上的两所不同的学校,他们使用的是基于Windows的第三方软件管理的网络。一个这样的工具监控磁盘空间,如果你超过,它会提醒你,要求你删除文件或将它们复制到软盘。
但是…他们有一个帮助,使用标准的Windows帮助查看器!!
要绕过注销检查,您只需要按下电源按钮-关闭而不是注销只是关闭应用程序!
至于登录,你所需要做的就是打开帮助,点击文件>打开,在文件名称中,然后,有许多不同的事情……
你可以输入C:\Windows,一旦加载,输入*。*,然后你可以右键单击Explorer.exe,然后选择打开,然后将盒子拖出/底部角落…当你关闭电脑时,没有问题!
您可以打开任务管理器并关闭应用程序。
你可以打开一个excel文档(或任何Office程序),启动一个宏,然后做你想做的事情!
所以…我想说,这家公司很愚蠢,因为他们在其他程序中也有各种各样的问题,但是,这是最大的问题,他们能够绕过它,只是因为他们使用了Windows帮助,而没有意识到它的含义。
I was going to earn my credit with the supervisor for my quite advanced graphics program at a SunOS / Solaris with instant messaging enabled where with zephyr.vars or whatever it was called you could make an image appear on your listed friend's screen like if you alowed me I could just send you an image that appeared on your display. While I was demoing the program I had written so that the supervisor could give me credit for it, one of my friends sitting close or in the next room made the photo big-mama.xxx appear on my screen. There was never any discussion or penalty because of the incident and I got credit for the project that for ½ second seemed like it was programmed to display big-mama.xxx instead of solving the problem. (Earlier) I updated perl scripts and waited for sysadmin to reflect the changes to ouside the FW. Then the database was gone and it was not a bug it was a feature since the data was stored with the source and therefore updating the source blanked the persistence.
物理访问或模拟登录提示或登录屏幕是另外两种困难的情况,不需要过多的算法技术,很容易理解物理访问提供了许多可能性,模拟登录提示是您可以在许多不同类型的计算机和环境上进行的事情。
我想这是我亲眼见过的最糟糕的一次。在很久以前(20世纪80年代末),我用COBOL编程了一台IBM 370,后来换成了4341。在一个缓慢的日子里,我在查看文档时发现了一个命令,可以让你搜索磁盘上的所有内容。
所以我搜索我的密码。然后找到了。发现附近所有人的密码。
如果我没记错的话,密码限制在6个字符以内,而且不区分大小写。我不记得当时自己的密码了,但我永远不会忘记系统管理员的密码;这完全符合他的性格。休息日。