konrados
9.11.2011, 14:25:50
Cześć.
Już nie mam sił i pomysłów. Jakiś miesiąc temu miało miejsce włamanie na pewną stronę z zainstalowanym wordpressem 2.9.2 w którym, jak się okazało jest dziura.
"Włamywacz" (a pewnie jakiś bot) wstawił do każdego pliku (nawet niezwiązanego z blogiem wordpressowym) kawałek js.
Ogółem strona wygląda tak, że w katalogu głównym znajdują się pliki statyczne (z drobnym dodatkiem php, includowane są header i footer) a w podkatalogu "blog" jest zainstalowany wordpress.
Po włamaniu, okazało się, że wszystkie pliki mają chmod 777.
Zainstalowałem najnowszą wersję wordpressa (3.2.1 i z tego co widzę w googlach nie ma poważniejszych dziur), zmieniłem uprawnienia wszystkich plików na standardowe 644 i wszystko było ok aż do dzisiaj: znowu włamanko, znowu coś pozmieniało uprawnienia na 777 i wstawiło szkodliwy skrypt js.
No co ja mam zrobić? Nie ma (raczej) mowy o ukradzeniu hasła do ftp, więc jakoś inaczej ten człowiek/bot musi mi szkodzić.
Update: to jest naprawdę prosta stronka, trochę plików statycznych i blog wordpressowy w osobnym katalogu.
markonix
9.11.2011, 14:31:03
To nie włam na WP tylko włam na FTP.
Zmieniłeś w ogóle hasło do tego FTP?
konrados
9.11.2011, 14:42:03
No ale jak to?
Nie, nie zmieniłem hasła ftp, ale czemu twierdzisz, że to włam na ftp? Bo zmienili uprawnienia plików? Przecież to jest możliwe z poziomu php.
markonix
9.11.2011, 15:05:22
Nie zaszkodzi zmienić.
Miałem sam coś podobnego jak setki innych ludzi (na tym forum taki temat powstaje raz na miesiąc minimum).
konrados
9.11.2011, 16:01:25
No i zmiana pomogła?
A po drugie - jak myślisz, skąd wzieli hasło?
elektrrrus
9.11.2011, 16:11:00
Używasz Total Commaner albo filezilla pod windowsem do łączenia?
markonix
9.11.2011, 16:12:42
Cytat(konrados @ 9.11.2011, 16:01:25 )

No i zmiana pomogła?
A po drugie - jak myślisz, skąd wzieli hasło?
Słyszałeś o czymś takim jak wirus (w mocnym uproszczeniu)?
konrados
9.11.2011, 16:22:17
@lektrrrus: nie, używam winscp i owszem każę mu zapamiętywać hasła, ale:
markonix: Słyszałeś o czymś takim jak wirus (w mocnym uproszczeniu)?
Jestem na 99.99% przekonany, że nie mam żadnych wirusów. To Musi się odbywać via php na tej stronce. Zmienię hasło, ale coś czuję, że to nic nie zmieni. No weźcie się bardziej postarajcie
elektrrrus
9.11.2011, 16:26:20
A ja jestem na 99% pewny że to przez ftp. Jak masz dostęp to zobacz w logi lub po proś o to administratora serwera, to rozwieje wszelkie wątpliwości.
My w firmie mamy zasadę że na zdalne serwery nie wolno łączyć się z poziomu nawet niewiadomo jak czystego windowsa, i nie zapisujemy haseł w programach. Dzięki temu nic jeszcze nigdy nie wyciekło.
konrados
11.11.2011, 18:00:40
No to zmieniłem hasło do ftp - nigdzie go tym razem nie zapisując.
Sprawdziłem też antywirusem wszystkie komputery z których kiedykolwiek ktoś się łączył z ftp tej strony (nic nie znalazło).
Tylko mam pytanie - po co ten ktoś czy coś zmieniał ustawienia plików na 777? Macie jakieś pomysły?
Flame0
11.11.2011, 19:24:59
Spróbuj otworzyć plik w przeglądarce z chmodem 777, a potem z chmodem 644.
Odsyłam do -
http://pl.wikipedia.org/wiki/Chmod
arcziustka
12.11.2011, 00:56:10
Markonix ma rację, to włamanie przez FTP.
Ktoś ma hasło do twojego FTP i przez niego wchodzi, zmienia chmody aby potem dopisać do nich ten kod js. Z poziomu przeglądarki raczej trudno było by mu edytować pliki, choć nie twierdzę że to niemożliwe, bo niektóre CMS mają taką funkcję. Jak ktoś używa bota do tego to raczej przez ftp, bo taki bot będzie działał na każdym serwerze, byle były pliki php i nie musi wtedy brać pod uwagę zainstalowanych CMSów i tworzyć dla nich oddzielnych reguł.
konrados
12.11.2011, 06:37:39
@Flame0
Cytat
Spróbuj otworzyć plik w przeglądarce z chmodem 777, a potem z chmodem 644.
No wiem, że się nie da (błąd 500) stąd moje pytanie - po co? Skoro mieli pełen dostęp do ftp, nie musieli nic chmodować.
@arcziustka
Tylko, że wciąż nie mam pojęcia jak wykradli hasło, no ale nieważne - jeśli to przez ftp tzn. że problem jest chyba rozwiązany. Jak się w ciągu 2 tygodni nie włamią tzn. że rozwiązany:)
Update: czytam o tych permissions, ale nie jest linuksiarzem i trochę to dla mnie obce. Czy może mi ktoś powiedzieć, czy atrybut 777 daje coś komuś, kto nie ma dostępu do ftp (bo cały czas obstaję przy teorii, że hasło nie zostało wykradzione)?
cer98
12.11.2011, 16:58:49
Poczytaj
tutajOraz rozwiązanie:
<?php
/**
* System security methods
*/
class Security
{
/**
* Clears inputs of any xss attempts
* @return string|array
*/
public static function xss
($str) { // If array, cycle through all array values
{
foreach ($str as $key => $value)
{
$str[$key] = Security::xss($value);
}
return $str;
}
// Remove all NULL bytes
// Fix &entity\n;
$str = preg_replace('/(&#*\w+)[\x00-\x20]+;/u', '$1;', $str);
// Remove any attribute starting with "on" or xmlns
$str = preg_replace('#(?
n[a-z]+|xmlns)\s*=\s*[\'"\x00-\x20]?[^\'>"]*[\'"\x00-\x20]?\s?#iu', '', $str);
// Remove java script: and vb script: protocols
$str = preg_replace('#([a-z]*)[\x00-\x20]*=[\x00-\x20]*([`\'"]*)[\x00-\x20]*j[\x00-\x20]*a[\x00-\x20]*v[\x00-\x20]*a[\x00-\x20]*s[\x00-\x20]*c[\x00-\x20]*r[\x00-\x20]*i[\x00-\x20]*p[\x00-\x20]*t[\x00-\x20]*:#iu', '$1=$2nojavascript...', $str); $str = preg_replace('#([a-z]*)[\x00-\x20]*=([\'"]*)[\x00-\x20]*v[\x00-\x20]*b[\x00-\x20]*s[\x00-\x20]*c[\x00-\x20]*r[\x00-\x20]*i[\x00-\x20]*p[\x00-\x20]*t[\x00-\x20]*:#iu', '$1=$2novbscript...', $str); $str = preg_replace('#([a-z]*)[\x00-\x20]*=([\'"]*)[\x00-\x20]*-moz-binding[\x00-\x20]*:#u', '$1=$2nomozbinding...', $str);
// Only works in IE: <span style="width: expression(alert('Ping!'));"></span>
$str = preg_replace('#(<[^>]+?)style[\x00-\x20]*=[\x00-\x20]*[`\'"]*.*?expression[\x00-\x20]*\([^>]*+>#is', '$1>', $str); $str = preg_replace('#(<[^>]+?)style[\x00-\x20]*=[\x00-\x20]*[`\'"]*.*?behaviour[\x00-\x20]*\([^>]*+>#is', '$1>', $str); $str = preg_replace('#(<[^>]+?)style[\x00-\x20]*=[\x00-\x20]*[`\'"]*.*?s[\x00-\x20]*c[\x00-\x20]*r[\x00-\x20]*i[\x00-\x20]*p[\x00-\x20]*t[\x00-\x20]*:*[^>]*+>#ius', '$1>', $str);
// Remove namespaced elements (we do not need them)
do
{
// Remove really unwanted tags
$old = $str;
$str = preg_replace('#</*(?:applet|b(?:ase|gsound|link)|embed|frame(?:set)?|i(?:frame|layer)|l(?:ayer|ink)|meta|object|s(?:cript|tyle)|title|xml)[^>]*+>#i', '', $str); }
while ($old !== $str);
return $str;
}
}
A w pliku index dajesz:
/**
* Clean request globals
*/
$_REQUEST = Security::xss($_REQUEST);
$_GET = Security::xss($_GET);
$_POST = Security::xss($_POST);
konrados
12.11.2011, 17:27:38
@cer98: o XSS co nieco wiem, ale jesteś pewien, że to ma coś wspólnego z moim pytaniem?
Teraz mi głównie chodzi o to, dlaczego sprawca zmienił atrybuty na 777 i co na tym zyskał.
A co ten skrypt js robił to dla mnie drugorzędna sprawa.
cer98
12.11.2011, 19:36:15
Tak. Nie wiem, co miał zamiar autor włamania. Chmod zmienił, aby móc zmodyfikować pliki. Potraktuj to jako wirusa lub jak masz czas zmodyfikuj WS tak, aby REQUEST przechodził przez ten skrypt, to na pewno pomoże. Możesz też poszukać w sieci innych rozwiązać na ataki XSS
adam882
12.11.2011, 19:41:42
To jest wirus, miałem go

Wystarczyło wejść na zawirusowaną stronę i już się ściągał. Jeżeli antywirus w porę nie zablokował zainfekowanej strony, to wirus zdążył się już ściągnąć. Jego usunięcie jest dość ciężkie. Doklejał on na spodzie plików kod js. Od tamtego czasu nie trzymam haseł w pamięci Total Commandera.
konrados
16.11.2011, 16:10:05
OK, 5 dni po zmianie hasła do ftp nie widzę żadnych włamań, sypię więc podziękowaniami

Nadal jednak nie rozumiem jak to się stało. I po co 777 skoro człowiek miał pełen dostęp do ftp.
@cer98 - "Chmod zmienił, aby móc zmodyfikować pliki." - no przecież mając dostęp do ftp nie musiał nic więcej robić.
abort
16.11.2011, 22:33:46
Owszem, miał dostęp do ftp. Ale jak zmienisz hasło, to tego dostępu już nie będzie miał.
Dlatego PRZYPUSZCZAM, że kod, który został dokładany, mógł powodować wiele rzeczy, włącznie z takimi, w których:
1. gość miał jakieś prawa w systemie (których nie powinien mieć)
2. gość mógł podstawiać stronę logowania/zmiany hasła i gromadzić pary user/pass użytkowników serwisu
megan
20.10.2012, 10:39:24
Witajcie,
czy możecie mi dokładnie opisać co zrobić, żeby wywalić to g... z mojej strony? Słabo się znam na tym. Gdzie umieścić te skrypty? Dzięki.
CuteOne
20.10.2012, 10:56:59
Jeżeli nie masz pojęcia o programowaniu to lepiej zleć to komuś innemu lub poszukaj w gronie znajomych kogoś kto się na tym zna. Samemu, możesz narobić więcej szkody niż sam wirus
konrados
21.10.2012, 09:54:41
Kurde, jaki stary temat:) Aż wspomnienia mi się posypały

No ja to usunąłem ręcznie, narzędziem szukaj w eclipsie znalazłem wszystkie wystąpienia tego skryptu i ręcznie usunąłem. Ale pewnie windowsowa wyszukiwarka też da radę.
A, i oczywiście za poradą przedmówców zmieniłem hasło do ftp i już nigdzie go nie zapisałem.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.