Czytanie na https://www.drupal.org/node/2357241 i szczegóły techniczne na https://www.drupal.org/SA-CORE-2014-005 , a także aktualną łatkę, która jest po prostu:
diff --git a/includes/database/database.inc b/includes/database/database.inc
index f78098b..01b6385 100644
--- a/includes/database/database.inc
+++ b/includes/database/database.inc
@@ -736,7 +736,7 @@ abstract class DatabaseConnection extends PDO {
// to expand it out into a comma-delimited set of placeholders.
foreach (array_filter($args, 'is_array') as $key => $data) {
$new_keys = array();
- foreach ($data as $i => $value) {
+ foreach (array_values($data) as $i => $value) {
// This assumes that there are no other placeholders that use the same
// name. For example, if the array placeholder is defined as :example
// and there is already an :example_2 placeholder, this will generate
Zastanawiam się, jakiego rodzaju prośbę można wykorzystać, wykorzystując ten exploit?
database.inc
plik?database.inc
z powyższej łatki (lub ręcznie, jest to oczywiście niewielka zmiana), ale zalecałbym również załatanie całego twojego Drupala w całości.Odpowiedzi:
Firma, która znalazła błąd, ma kilka przykładów Poradnika 01/2014: Drupal - usterka przed Auth SQL Injection :
Wyciąg:
źródło
The Problem occurs, if the array has keys, which are no integers
- to i przykładowe zapytanie są dość pomocne w zrozumieniu tego.Co się dzieje z 7.32 Sprawdzając moduł testowy. Możesz zobaczyć następujący test został dodany do 7.32;
Powinno to dać nieco więcej wglądu w sposób tworzenia ataku.
Dowód koncepcji Ponieważ minęło już wystarczająco dużo czasu i na wolności jest mnóstwo PoC.
Poc # 1 - PHP
Poc # 2 Python - http://pastebin.com/nDwLFV3v
Oto blog, który robi dobry podział: http://www.volexity.com/blog/?p=83
źródło
Badacze, którzy znaleźli błąd, mają dowód koncepcji. Inni opracowali również dowody koncepcji. Jednak celowo nie publikują ich w celu zmniejszenia prawdopodobieństwa szerokiego wykorzystania. Powinniśmy uszanować te badania i powściągliwość, a nie zamieszczać tutaj przykładów.
Po pewnym czasie i uaktualnieniu witryn będzie bardzo interesujące, z naukowego punktu widzenia, przejrzenie kodu ataku typu proof-of-concept. Do tego czasu jest to niepotrzebne ryzyko i zwróć na siebie uwagę.
Kod w poradniku SektioinEins nie jest w pełni opracowanym przykładem tego, jak go wykorzystać. Szczegółowo opisują słabość, ale nie określają dokładnie, jak właściwie wykorzystać problem.
Od wydania tego numeru minęło już kilka tygodni, a SektionEins opublikował na swoim blogu kilka sprawdzonych koncepcji . Są one dość interesujące w porównaniu z wieloma innymi dowodami koncepcji, które zostały opracowane, ponieważ pozostawiają bardzo niewiele śladów ich aktywności (np. Nic w tabeli menu_router).
źródło
Mogę potwierdzić, że ta luka będzie działać z każdą witryną Drupal 7.31 i niższymi, bez względu na to, które moduły są aktywne. Do wykorzystania tej podatności można wykorzystać każdą formę drupala.
Exploit jest dość prosty, więc PoC jest już na wolności. Byłem w stanie zaatakować własny serwer i zmienić hasło użytkownika jako anonimowy użytkownik w czystej instalacji Drupala, ale możliwości są nieograniczone.
Ten błąd był znany prawie 1 rok temu przez https://www.drupal.org/node/2146839, ale nikt z Zespołu Bezpieczeństwa Drupal nie odpowiedział.
źródło
#
przed „bezpieczeństwem” ktoś nie widział tego, co miałoby inaczej, a może po prostu jest zbyt wiele problemów w kolejce. Wciąż zaskakujące, że nikt nie zareagował.Zastanawiałem się, jak można to wykorzystać i ile czasu i wysiłku to zajmie? Dlatego zdecydowałem się zainstalować starszą wersję Drupal 7 na moim localhost i odtworzyć ten błąd. Odkryłem szokujący błąd, który daje każdemu, kto ma podstawową wiedzę na temat HTML / SQL, pełny dostęp do twojej strony Drupal.
Udało mi się wykonać iniekcję SQL do Drupala 7 za pomocą anonimowego użytkownika w mniej niż 30 minut!
http://www.zoubi.me/blog/drupageddon-sa-core-2014-005-drupal-7-sql-injection-exploit-demo
UWAGA: To nadal nie pozwoli ci się zalogować, ponieważ Drupal używa SHA512 z solą, więc nie można się zalogować. Celowo nie zamieściłem tutaj kodu, ale oczywiście każdy, kto ma odrobinę wiedzy na temat Drupala, będzie wiedział, jak go pokonać i skonstruować zapytanie, które da ci pełny dostęp!
To otwiera pytanie, na ile bezpieczny jest Drupal i kto jest odpowiedzialny za coś takiego? Najwyraźniej ten błąd był znany od ponad roku ( https://www.drupal.org/node/2146839 ), ale nikt nie zareagował na Drupal.org. Przypadkowo czy celowo? :)
źródło
Jest to poprawka luki w iniekcji SQL, w której do pola wprowadzania wstawiane są złośliwe instrukcje SQL, które mogą na przykład doprowadzić do zwolnienia zawartości bazy danych. Ta poprawka jest ważna do zastosowania tak szybko, jak to możliwe, zwłaszcza, że ta luka może zostać wykorzystana przez anonimowych użytkowników.
Jeśli nie możesz natychmiast zaktualizować, zespół ds. Bezpieczeństwa może zastosować tę poprawkę, która zapewni taką samą ochronę, dopóki nie będziesz w stanie wykonać pełnej aktualizacji 1 . Zespół bezpieczeństwa przygotował również często zadawane pytania związane z tym problemem. Przełączenie witryny w tryb konserwacji nie pomoże i wyczyść pamięć podręczną po zastosowaniu aktualizacji lub upewnij się, że korzystasz z wersji 7.32.
Ponadto powinieneś sprawdzić, czy Twoja witryna nie została naruszona. Niektóre witryny już zgłaszają problemy. Oto jeden post na blogu, który sugeruje, jak sprawdzić, czy aktualizacja do Drupal 7.32 nie wystarczy, Twoja witryna może być już zhakowana
Stosuję poprawkę 15 października, a moje strony już zgłosiły, że ktoś próbuje wykorzystać tę lukę
źródło