PHP-Nuke
  Strona głównaDownloadForumFAQ Zaloguj się  
Forum


 
Rules  Forum FAQ   Search   Usergroups   Register   Log in
 
 
Zadając pytanie dotyczące PHPNuke podaj jego wersje!!

View next topic
View previous topic
Post new topic   Reply to topic  PHP-Nuke.org.pl Forum Index » Bezpieczeństwo
Author Message
pmc
~user



Joined: 1.05.2006
Posts: 9


Status: Offline


 
View Single PostPosted: 16 Oct 2008 17:55:25 Back to top  
User browserUser browser: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3

Witam. Na mojej stronie zbudowanej w oparciu o PHP Nuke 7.7 można dodawać komentarze anonimowo (bez logowania). Jest tak od samego początku czyli od jakichś 2 lat. Oczywiście zdarzają się wpisy bootów, które albo blokuję przez IP, albo usuwam z bazy przez phpmyadmin. Do tej pory były to pojedyncze wpisy.

Od 3 dni nastąpił zmasowany atak na komentarze. Dziennie wpisuje się około 400 - 500 bootów. Czy jest jakiś sensowny sposób na ich zablokowanie ? Dodam, że nie chcę wprowadzać konieczności logowania. Może jest jakiś skrypt, który umożliwia dodanie do komentarzy opcji, która wymusza przepisanie kodu z obrazka ?

Szukałem na tym forum ale niestety nic konkretnego w tym temacie nie znalazłem. Będę wdzięczny za pomoc. W tej chwili musiałem wyłączyć możliwość dodawania komentarzy, bo nie nadążam ich usuwać z bazy.
View user's profile    
Jaszczur
~user



Joined: 21.12.2004
Posts: 1150
Helps: 83
Location: Racibórz/Katowice

Status: Offline


 
View Single PostPosted: 19 Oct 2008 22:08:47 Back to top  
User browserUser browser: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3

zobacz np. w module your_account jak jest wykorzystywana funkcja gfx (odpowiedzialna za pokazanie się obrazka z liczbami do przepiania) i na podstawie tego możesz napisać coś takiego do komentarzy, mnie się to udało na www.portalliteracki.pl

_________________
Nie udzielam porad via GG,PW, mail etc - o wszystko pytać na forum
www.tobiasz.org | www.phpnuke.com.pl
View user's profile Visit poster's website TLEN Messenger    
pmc
~user



Joined: 1.05.2006
Posts: 9


Status: Offline


 
View Single PostPosted: 20 Oct 2008 08:10:47 Back to top  
User browserUser browser: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3

Dziękuję za podpowiedź. Niestety nie jestem tak biegły w pisaniu kodu php. Będę bardzo wdzięczny za dokładniejszy opis co i jak mam zrobić. Czy wystarczy przekopiować pewne fragmenty kodu i wkleić do pliku odpowiedzialnego za dodawanie komentarzy ? Jeśli tak to powinienem sobie poradzić po wskazaniu które fragmenty za to odpowiadają. Jeśli mam jednak napisać kod samemu, to raczej nie dam rady.

Apropos, sprawdzałem stronę, którą podałeś, właśnie dokładnie o takie rozwiązanie mi chodzi.
View user's profile    
Jaszczur
~user



Joined: 21.12.2004
Posts: 1150
Helps: 83
Location: Racibórz/Katowice

Status: Offline


 
View Single PostPosted: 21 Oct 2008 08:14:19 Back to top  
User browserUser browser: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3

pmc wrote:
wystarczy przekopiować pewne fragmenty kodu


tak wystarczy


pmc wrote:
po wskazaniu które fragmenty za to odpowiadaj


jesli przyjrzysz się strukturze, modułu Your_Account, to powinieneś dostrzec, które fragmenty za to odpowiadają, wykorzystują one funkcje gfx

_________________
Nie udzielam porad via GG,PW, mail etc - o wszystko pytać na forum
www.tobiasz.org | www.phpnuke.com.pl
View user's profile Visit poster's website TLEN Messenger    
pmc
~user



Joined: 1.05.2006
Posts: 9


Status: Offline


 
View Single PostPosted: 21 Oct 2008 21:08:04 Back to top  
User browserUser browser: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3

Niestety nie wiem, które to fragmenty. Przeglądałem pliki w Your_Account, zaglądałem do mainfile.php, są tam odwołania do gfx, ale w zbyt wielu miejscach i nie mam pojęcia co dokładnie za co odpowiada. Będę wdzięczny za łopatologiczne wyjaśnienie który kod mam wkleić, w które miejsce, w jakim pliku. Inaczej polegnę. Z góry dzięki wszystkim dobrodziejom Smile
View user's profile    
briegmannpl
~user



Joined: 8.10.2008
Posts: 4


Status: Offline


 
View Single PostPosted: 14 Feb 2009 22:15:31 Back to top  
User browserUser browser: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6

Witam

Mam ten sam problem z atakiem botow. Do jednego newsa sa przypisywane ponad 100 komentarzy.

Czy istnieje jakiś sposób na szybkie usuniecie zbędnych komentarzy?
View user's profile    
Jaszczur
~user



Joined: 21.12.2004
Posts: 1150
Helps: 83
Location: Racibórz/Katowice

Status: Offline


 
View Single PostPosted: 14 Feb 2009 23:13:15 Back to top  
User browserUser browser: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6

najlepiej przez phpMyAdmin'a

_________________
Nie udzielam porad via GG,PW, mail etc - o wszystko pytać na forum
www.tobiasz.org | www.phpnuke.com.pl
View user's profile Visit poster's website TLEN Messenger    
dudi
@admin



Joined: 13.12.2004
Posts: 3175
Helps: 330
Location: Tychy

Status: Offline


 
View Single PostPosted: 18 Feb 2009 11:23:27 Back to top  
User browserUser browser: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6

No i jeszcze aktualizacja tabeli nuke_stories koluman comments, która przechowuje ilość komentarzy do newsa.

A żeby pozbyć się tych robotów trzeba przerobić cały system komentarzy. Jeśli znajdę chwilę to wrzucę gotową modyfikację, która z powodzeniem działa już na kilku większych portalach.

_________________
Pomocy udzielam TYLKO na forum !!!
domy drewniane w technologii szkieletowej
View user's profile Visit poster's website    
wkizet
~user



Joined: 26.08.2006
Posts: 40
Warrnings: 1


Status: Offline


 
View Single PostPosted: 18 Aug 2009 18:59:47 Back to top  
User browserUser browser: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)

Kochani, 3 godziny roboty i coś mi nie chce działać.
Zastosowałem zgodnie z zaleceniami Jaszczura funkcje gfx.
Oto co wyszło w comments.php w funkcji reply:

Code:
function reply($pid, $sid, $mode, $order, $thold, $random_num, $gfx_check) {
   //include("config.php");  // globalized - Quake
   include("header.php");
   include("config.php");
   global $prefix, $module_name, $user, $cookie, $datetime, $bgcolor1, $bgcolor2, $bgcolor3, $db, $anonpost, $anonymous, $admin;
   cookiedecode($user);
   getusrinfo($user);
   $sid = intval($sid);
   $pid = intval($pid);
   if (!$stop)
   $datekey = date("F j");
   $rcode = hexdec(md5($_SERVER['HTTP_USER_AGENT'] . $sitekey . $random_num . $datekey));
   $code = substr($rcode, 2, 6);
   if (extension_loaded("gd") AND $code != $gfx_check AND ($gfx_chk == 2 OR $gfx_chk == 4 OR $gfx_chk == 5 OR $gfx_chk == 7))
   if ($anonpost == 0 AND !is_user($user)) {
      OpenTable();
      echo "<center><font class=title><b>"._COMMENTREPLY."</b></font></center>";
      CloseTable();
      echo "<br>";
      OpenTable();
      echo "<center>"._NOANONCOMMENTS."<br><br>"._GOBACK."</center>";
      CloseTable();
   } else {
      if ($pid != 0) {
         $row = $db->sql_fetchrow($db->sql_query("SELECT date, name, email, subject, comment, score FROM ".$prefix."_comments WHERE tid='$pid'"));
         $date = $row['date'];
         $name = filter($row['name'], "nohtml");
         $email = filter($row['email'], "nohtml");
         $subject = filter($row['subject'], "nohtml");
         $comment = filter($row['comment']);
         $score = intval($row['score']);
      } else {
         $row2 = $db->sql_fetchrow($db->sql_query("SELECT time, title, hometext, bodytext, informant, notes FROM ".$prefix."_stories WHERE sid='$sid'"));
         $date = $row2['time'];
         $subject = filter($row2['title'], "nohtml");
         $temp_comment = filter($row2['hometext']);
         $comment2 = filter($row2['bodytext']);
         $name = filter($row2['informant'], "nohtml");
         $notes = filter($row2['notes']);
      }
      if(empty($comment)) {   
         $comment = $temp_comment."<br><br>$comment2";
      }
      OpenTable();
      echo "<center><font class=title><b>"._COMMENTREPLY."</b></font></center>";
      CloseTable();
      echo "<br>";
      OpenTable();
      if (empty($name)) $name = $anonymous;
      if (empty($subject)) $subject = "["._NOSUBJECT."]";
      formatTimestamp($date);
      echo "<b>$subject</b> <font class=\"content\">";
      if (!empty($temp_comment)) echo"("._SCORE." $score)";
      if (!empty($email)) {
         echo "<br>"._BY." <a href=\"mailto:$email\">$name</a> <font class=\"content\"><b>($email)</b></font> "._ON." $datetime";
      } else {
         echo "<br>"._BY." $name "._ON." $datetime";
      }
      echo "<br><br>$comment<br><br>";
      if ($pid == 0) {
         if (!empty($notes)) {
            echo "<b>"._NOTE."</b> <i>$notes</i><br><br>";
         } else {
            echo "";
         }
      }
      if (!isset($pid) || !isset($sid)) { echo "Something is not right. This message is just to keep things from messing up down the road"; exit(); }
      if ($pid == 0) {
         $row3 = $db->sql_fetchrow($db->sql_query("SELECT title FROM ".$prefix."_stories WHERE sid='$sid'"));
         $subject = filter($row3['title'], "nohtml");
      } else {
         $row4 = $db->sql_fetchrow($db->sql_query("SELECT subject FROM ".$prefix."_comments WHERE tid='$pid'"));
         $subject = filter($row4['subject'], "nohtml");
      }
      CloseTable();
      echo "<br>";
      OpenTable();
      mt_srand ((double)microtime()*1000000);
         $maxran = 1000000;
         $random_num = mt_rand(0, $maxran);
      echo "<form action=\"modules.php?name=$module_name&amp;file=comments\" method=\"post\">";
      echo "<font class=option><b>"._YOURNAME.":</b></font> ";
      if (is_user($user)) {
         cookiedecode($user);
         echo "<a href=\"modules.php?name=Your_Account\">$cookie[1]</a> <font class=\"content\">[ <a href=\"modules.php?name=Your_Account&op=logout\">"._LOGOUT."</a> ]</font><br><br>";
      } else {
         echo "<font class=\"content\">$anonymous";
         echo " [ <a href=\"modules.php?name=Your_Account\">"._NEWUSER."</a> ]<br><br>";
      }
      echo "<font class=\"option\"><b>"._SUBJECT.":</b></font><br>";
      if (!stripos_clone($subject,"Re:")) $subject = "Re: ".substr($subject,0,81)."";
      echo "<input type=\"text\" name=\"subject\" size=\"50\" maxlength=\"85\" value=\"$subject\"><br><br>";
      echo "<font class=\"option\"><b>"._UCOMMENT.":</b></font><br>"
      ."<textarea wrap=\"virtual\" cols=\"70\" rows=\"15\" name=\"comment\"></textarea><br>";
      if ($nuke_editor == 0) {
          echo "<font class=\"content\">"._ALLOWEDHTML."<br>";
          while (list($key,) = each($AllowableHTML)) echo " &lt;".$key."&gt;";
          echo "</font><br><br>";
      } else {
         echo ""._HTMLNOTALLOWED."</font><br><br>";
         
      }
      if (is_user($user) AND ($anonpost == 1)) { echo "<input type=\"checkbox\" name=\"xanonpost\"> "._POSTANON."<br>"; }
      if (extension_loaded("gd") AND ($gfx_chk == 2 OR $gfx_chk == 4 OR $gfx_chk == 5 OR $gfx_chk == 7)) {
            echo "<tr><td colspan='2'>"._SECURITYCODE.": <img src='?gfx=gfx&random_num=$random_num' border='1' alt='"._SECURITYCODE."' title='"._SECURITYCODE."'></td></tr>\n"
            ."<tr><td colspan='2'>"._TYPESECCODE.": <input type=\"text\" NAME=\"gfx_check\" SIZE=\"7\" MAXLENGTH=\"6\"></td></tr>\n"
            ."<input type=\"hidden\" name=\"random_num\" value=\"$random_num\">\n";
         }
                  if (!isset($mode) OR empty($mode)) {
                    if(isset($userinfo['umode'])) {
                      $mode = $userinfo['umode'];
                    } else {
                      $mode = "thread";
                    }
                  }
                  if (!isset($order) OR empty($order)) {
                    if(isset($userinfo['uorder'])) {
                      $order = $userinfo['uorder'];
                    } else {
                      $order = 0;
                    }
                  }
                  if (!isset($thold) OR empty($thold)) {
                    if(isset($userinfo['thold'])) {
                      $thold = $userinfo['thold'];
                    } else {
                      $thold = 0;
                    }
                  }
                  
      echo "<input type=\"hidden\" name=\"pid\" value=\"$pid\">\n"
      ."<input type=\"hidden\" name=\"sid\" value=\"$sid\">\n"
      ."<input type=\"hidden\" name=\"mode\" value=\"$mode\">\n"
      ."<input type=\"hidden\" name=\"order\" value=\"$order\">\n"
      ."<input type=\"hidden\" name=\"thold\" value=\"$thold\">\n"
      ."<input type=\"hidden\" name=\"random_num\" value=\"$random_num\">"
      ."<input type=\"hidden\" name=\"gfx_check\" value=\"$gfx_check\">"
      ."<input type=\"submit\" name=\"op\" value=\""._PREVIEW."\">\n"
      ."<input type=\"submit\" name=\"op\" value=\""._OK."\"> "._GOBACK."\n"
      ."</font></form>\n";
      CloseTable();
   }
   include("footer.php");
}


Podobnie zrobilem z funkcją replyPreview.
Dołożyłem na końcu

Code:
case "gfx":
   gfx($random_num);
   break;


Umieściłem w case replu i preview wpisy $random_num, $gfx_check.

I wszystko ładnie pokazuje się, mam kod zabezpieczający, za każdym razem różny, jednak i tak jeśli wpiszę nieprawidłowy, to komentarz pokazuje się pod newsem.
Czego mi zatem brakuje? Bardzo proszę o jakieś sugestie.
View user's profile    
wkizet
~user



Joined: 26.08.2006
Posts: 40
Warrnings: 1


Status: Offline


 
View Single PostPosted: 23 Aug 2009 08:03:40 Back to top  
User browserUser browser: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)

Może być tak, że kod zabezpieczający będzie ignorowany, ponieważ komentarz wpisuje osoba zarejestrowana i takowa ma priorytet?
View user's profile    
Display posts from previous:   
Post new topic   Reply to topic

View next topic
View previous topic
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
Nie możesz dołączać plików na tym forum
Możesz ściągać pliki na tym forum


Powered by phpBB [CR] © 2001, 2006 phpBB Group.
 

Copyright © 2004-2009 by phpnuke.org.pl :: PHP-Nuke Copyright © 2004 by Francisco Burzi.
Zdjęcia ślubne
Tworzenie strony: 0.30 sekund
Zapytań: 17