什么是exploit Vulnerability 和 Shellcode

国内对 exploit vulnerability以及 shellcode没有一个很好的解释,今天看到老外的一篇文章,写的不错。顺手翻译了下,原文在这

我们几乎每隔几天就能听到最近有一个新发现的可以被利用(exploit)漏洞(vulnerability),然后给这个漏 洞打上补丁。而事实上,这里面的内容 比你想象的要多,因为你不可能知道所有软件的漏洞,而且那些可利用的漏洞只是 被少数人所了解。那么这篇文章让你以一个外行的角度了解这些漏洞背后的 一些专业知识:

漏洞是存在一个程序、算法或者协议中的错误,可能带来一定的安全问题。例 如,如果你的windows计算器计算2+2=5时,这就不是一 个漏洞。然而,如果一个 程序没有能够检查输入数据的有效性,从而导致程序指针指向一个任意的(由攻 击者指定)地址并在这个地址上写入数据, 这便是一个漏洞了。漏洞分为以 下几类:

  • 缓冲区溢出 程序将数据复制到缓存区中,但是没有确保缓冲区足够容下所有拷贝来的数据。因此,紧随缓冲区后面的内存数据被改写

  • 格式化字符串一个类printf函数使用用户提供的字符串作为它的格式化 参数,这就使得信息泄露和任意写内存成为可能

  • 输入验证 不合法的字符没有被过滤,或者换了种形式的非法输入被接受,这可能带来诸多安全隐患

  • 时间序列 在竞争条件下,程序中各个操作的执行顺序将影响运行结果,可能导致某种安全 漏洞。

不是所有的漏洞都是能够被利用来攻击(exploitable)的,理论上存在的漏 洞,并不代表这个漏洞足以让攻击者去威胁你的系统。一个 漏洞不能攻击一个系 统,并不代表两个或多个漏洞组合就不能攻击一个系统。例如:空指针对象引 用(null-pointer dereferencing)漏洞可以导致系统崩溃(如果想做拒绝服 务攻击就足够了),但是如果组合另外一个漏洞,将空指针指向一个你存放数据的 地址并执行,那么你可能就控制这个系统了。

一个利用程序(An exploit)就是一段通过触发一个漏洞(或者几个漏洞)进而控制目标系统的代码。攻击代码通常会释放攻击载荷(payload),里面包含了攻击者想要执行的代 码。这个代码就是我们通常所说的shellcode,传统上,这段代码用来启动UNIX系统上的一个shell(比如,获得一个命令行接口),如 今,shellcode几乎可以做任何事情了。比如:生成一个shell,创建用户、下载和执行文件等等

exploits利用代码可以在本地也可在远程进行。一个远程攻击利用允许攻击者远程操纵计算机,理想状态下能 够执行任意代码。远程攻击对攻击者非常重 要,因为攻击者可以远程控制他/她的主机,不需要通过其它手段(让受害者访问网站,点击一个可执行文件,打开一个邮件附件等等),而本地攻击一般 都是用来提升权限。

转自:http://seckungfu.com/blog/2012/07/07/exploit-vulnerability/

转载于:https://www.cnblogs.com/taskiller/archive/2012/08/08/2628593.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值