首页 > 用户投稿

黑客为什么可以做到无需知道源码的情况下找出系统漏洞?

网友解答:

感谢邀请。

每天活跃在互联网上的应用成百上千万,包括pc端以及目前越来越主流的移动端,不仅有通过浏览器访问的,还有需要安装客户端的,不仅有与服务器强交互的,还有独立运行的本地软件。

而这其中,开源的(包括开放源码的)产品少之又少。但,这并不妨碍一个黑客找出其中的漏洞。换句话说,找漏洞并不需要源码。

当然了,在有源码的情况下,挖洞是一件难度系数指数下降的事情。虽然读懂一个大型软件源码耗时又耗力,但对于黑客来说,可以略去其中大半的代码来阅读,只关心可能造成危险的部分。就像一名建筑工程师看一份大楼的施工图,要看懂大楼的结构、建筑材料、水电线路等等各方各面,而对于《prisonbreak》中的michaelscofield可能只关心地下管道的分布。

黑客为什么可以做到无需知道源码的情况下找出系统漏洞?

那么,在没有源码的情况下,黑客怎么挖洞呢?这种情况,我们可以称之为黑盒。而挖洞,的确需要与程序编辑者持有完全相反的角度和看法。对于输入输出点,程序猿考虑的是正确的输入获得正确的输出,而黑客则考虑特殊的非法输入获得异常的有价值输出。那系统登录来说,程序猿考虑的是用户输入注册的用户名、口令能够在登录时与数据库中的数据匹配成功,而黑客则会尝试引起数据库查询异常的输入作为用户名、口令内容,希望应用返回更多数据库中的有效数据。

对于黑客来说,不知道源码情况下,只要有输入就可以了,不管是应用具有的功能页面,还是一个输入接口,通过一种叫做模糊测试的技术就可以开始你的挖洞之旅。模糊测试可以构造一系列正常和异常的输入值,根据应用的返回来判断脆弱点的存在。

在黑客的武器库中,模糊测试只是其中一个利器,像什么漏扫、逆向、脱壳、注入、暴破等等不一而足。

作为程序猿,在编写程序时不仅要从正向角度完成应用的功能,还需要从黑客角度逆向分析应用在处理异常输入时的反应,才能做出高安全的应用。

网友解答:

黑盒确实是比较难从外部攻破的,但是这也是渗透过程中非常非常非常常见的现象,如果每个目标网站或者目标系统,你都能拿到源代码,那,做这个还有什么乐趣可言呢?

首先回答一下答主的描述中的疑问,读懂源码已经很不容易了,何况还要从中找出漏洞。我的观点是,题主和黑客的心态不同,题主的心态是以读懂,学习为主,就像是一个学者,在考据东西,黑客的心态则不一样,黑客的心态是攻击性的,他不需要明白所有函数的作用,不需要知道上下的连接,左右的影响,他就像一个猎狗,只在乎自己最关心的部分,从这个部分往外推演,就像是抽丝剥茧般,找到自己需要的内容。例如一套网站系统,涉及到注册,登录,用户管理,文章发布,商品更新,订单管理,数据统计,仓储销售,这是一个非常庞大繁杂的系统,要完全吃下来,非常耗费精力,可是黑客会把注意力放在输入输出上面,去找可能提权的地方,这么做的效率是非常高的。

现在来讲,如何做黑盒渗透。

所有黑盒,即便你不知道内部如何,但是必有输入输出,如果没有输入输出,那么再厉害的黑客也拿它没办法,但是话又说回来,一个系统没有输入输出,那对任何人也毫无价值,所以说,一切系统,都是有可能被渗透的。

不同的输入,可能会获得不同的输出,这是一切攻击渗透的前提,这里面大有学问,例如一个网站,我输入正确的用户密码,就可以登录成功,我输入错误的用户密码,则会提示密码错误,这就是根据不同的输入给出的不同输出,通过构造输入内容,获得输出反馈,可以揣测系统的内部工作流程,甚至直接推断出具体代码

这不是一件容易的事,但也不是不可以做到

原文标题:黑客为什么可以做到无需知道源码的情况下找出系统漏洞?,如若转载,请注明出处:https://www.saibowen.com/tougao/23697.html
免责声明:此资讯系转载自合作媒体或互联网其它网站,「赛伯温」登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,文章内容仅供参考。