Najgorsza dziura w bezpieczeństwie, którą widziałeś? [Zamknięte]

413

Jaka jest najgorsza dziura w bezpieczeństwie, jaką kiedykolwiek widziałeś? Prawdopodobnie dobrym pomysłem jest ograniczenie liczby szczegółów w celu ochrony winy.

Oto, co warto, oto pytanie o to, co zrobić, jeśli znajdziesz lukę w zabezpieczeniach, i kolejne z przydatnymi odpowiedziami, jeśli firma (wydaje się) nie odpowiada.

si618
źródło
47
Powinny być społeczności wiki imo ...
ChristopheD
Świetny wątek! Mam nadzieję, że można go połączyć z DailyWTF.com
Dale
Dlaczego zamknięte? To całkowicie rozsądne pytanie? !!
johnc
15
wydaje się, że 60 odpowiedzi i 28 głosów pozytywnych przeważa nad 5 głosami do zamknięcia (których zgromadzenie zajęło cały dzień, AFAIK). ale powstrzymam się od głosowania, aby ponownie otworzyć, dopóki nie zostanie to omówione.
rmeador
7
Nawet jeśli twoje pytanie jest godzinami wiki społeczności, komentarz jest nadal dobrym komentarzem do głosowania, ponieważ przypomina ludziom, że pytania podobne do tego powinny być wiki społeczności . Tak myślę.
Joren

Odpowiedzi:

646

Od wczesnych dni sklepów internetowych:

Uzyskiwanie 90% rabatu poprzez wprowadzenie .1 w polu ilości koszyka. Oprogramowanie poprawnie obliczyło całkowity koszt jako .1 * koszt, a człowiek pakujący zamówienie po prostu przeleciał nad nieparzystym „.” przed ilością do pakowania :)

John Stauffer
źródło
75
To zdecydowanie argument przemawiający za użyciem silnie typowanego systemu.
Powerlord,
54
Jaka jest strona Chcę 90% rabatu !!!
amischiefr
58
Może zamiast tego powinieneś poprosić o 10-procentową ilość. ;)
MiffTheFox
81
Jeff Bezos wspomniał, że w pierwszych dniach Amazon mogła mieć ujemną liczbę książek, a Amazon zasiliłby twoje konto (i prawdopodobnie czekał, aż je do nich wyślesz). Zobacz 0:47 na youtube.com/watch?v=-hxX_Q5CnaA
Jeff Moser
10
Bardzo chciałbym zobaczyć twarz klienta, który dostarczył dyski twarde .1, za które zapłacił.
ponownie
575

Najmniej wybaczalna luka bezpieczeństwa, niestety bardzo powszechna i łatwa do znalezienia, to hakowanie Google . Przykładem:

http://www.google.com/search?q=inurl%3Aselect+inurl%3A%2520+inurl%3Afrom+inurl%3Awhere

To niesamowite, ile stron w Internecie, w szczególności na stronach rządowych, przekazuje zapytanie SQL przez ciąg zapytania. Jest to najgorsza forma wstrzykiwania SQL i nie trzeba w żaden sposób znajdować wrażliwych stron.

Po drobnych poprawkach udało mi się znaleźć niezabezpieczone instalacje phpMyAdmina, niezabezpieczone instalacje MySQL, ciągi zapytań zawierające nazwy użytkowników i hasła itp.

Julia
źródło
6
Boże, jakże głupio jest niepojęte. To byłbym marsz tego programisty do HR z pudełkiem w ręku.
squillman
95
małe stoły Bobby'ego znów uderzają ... xkcd.com/327
gbjbaanb
86
OMFG ... następnym razem, gdy będę miał zły dzień, upuszczę kilka stolików
Michael Niemand
11
W tym przykładzie bardzo podoba mi się to, że pierwszy wynik pochodzi z bloga Oracle.
Ravi Wallau,
400

Inżynieria społeczna:

<Cthon98> hey, if you type in your pw, it will show as stars
<Cthon98> ********* see!
<AzureDiamond> hunter2
<AzureDiamond> doesnt look like stars to me
<Cthon98> <AzureDiamond> *******
<Cthon98> thats what I see
<AzureDiamond> oh, really?
<Cthon98> Absolutely
<AzureDiamond> you can go hunter2 my hunter2-ing hunter2
<AzureDiamond> haha, does that look funny to you?
<Cthon98> lol, yes. See, when YOU type hunter2, it shows to us as *******
<AzureDiamond> thats neat, I didnt know IRC did that
<Cthon98> yep, no matter how many times you type hunter2, it will show to us as *******
<AzureDiamond> awesome!
<AzureDiamond> wait, how do you know my pw?
<Cthon98> er, I just copy pasted YOUR ******'s and it appears to YOU as hunter2 cause its your pw
<AzureDiamond> oh, ok.

Z bash.org

Bob Aman
źródło
2
To się zdarzało przez cały czas na Runescape.
EvilTeach
7
Jest mało prawdopodobne, że ta konkretna wymiana rzeczywiście się wydarzy (kto napisze „er”, gdy próbują coś zatuszować?), Ale mimo to zabawna.
Michael Myers
1
mmyers: jest również bardzo mało prawdopodobne, aby ktoś był na tyle głupi, aby dostać rm -rf'd, ale to się na pewno zdarza. Sam to widziałem :)
Matthew Iselin
25
Nie ma nic bardziej niepewnego niż mózg idiotów
Earlz
1
@EvilTeach faktycznie zaimplementowali to w RuneScape. Nawet nie żartuję!
corsiKa
339

Prawdziwa historia z moich pierwszych dni w Microsoft.

Nie zaznałeś strachu do dnia, w którym obudziłeś się i zobaczyłeś nagłówek na ZDNet.com tego ranka: „ Najgorsza dziura w zabezpieczeniach przeglądarki Internet Explorer, jaką kiedykolwiek odkryto w„ Blah ” ”, gdzie „Blah” to kod, który sam napisałeś sześć miesięcy wcześniej .

Natychmiast po rozpoczęciu pracy sprawdziłem dzienniki zmian i odkryłem, że ktoś z innego zespołu - ktoś, któremu ufamy, że wprowadzi zmiany w produkcie - sprawdził mój kod, zmienił kilka ustawień klucza rejestru bezpieczeństwa bez wyraźnego powodu, sprawdziłem go ponownie i nigdy nie dostałem recenzji kodu ani nikomu o tym nie powiedziałem. Do dziś nie mam pojęcia, co, u licha, robił; wkrótce potem opuścił firmę. (Z własnej woli.)

(AKTUALIZACJA: Kilka odpowiedzi na problemy poruszone w komentarzach:

Po pierwsze, zauważ, że wybieram charytatywne stanowisko, że zmiany klucza bezpieczeństwa były niezamierzone i oparte na nieostrożności lub nieznajomości, a nie na złośliwości. Nie mam dowodów w ten czy inny sposób i wierzę, że mądrze jest przypisywać błędy ludzkiej omylności.

Po drugie, nasze systemy odpraw są teraz znacznie, znacznie silniejsze niż 12 lat temu. Na przykład nie jest teraz możliwe wpisanie kodu bez wysłania przez system kontroli wiadomości e-mail z listą zmian do zainteresowanych stron. W szczególności zmiany wprowadzone późno w cyklu statku obejmują wiele „procesów”, które zapewniają, że wprowadzane są odpowiednie zmiany w celu zapewnienia stabilności i bezpieczeństwa produktu.)

W każdym razie błąd polegał na tym, że obiekt, który NIE był bezpieczny do użycia z Internet Explorera, został przypadkowo zwolniony jako oznaczony jako „bezpieczny dla skryptów”. Obiekt mógł zapisywać pliki binarne - w rzeczywistości biblioteki typu OLE Automation - w dowolne miejsca na dysku. Oznaczało to, że osoba atakująca może stworzyć bibliotekę typów zawierającą pewne ciągi wrogiego kodu, zapisać ją na ścieżce, która była znaną lokalizacją wykonywalną, nadać jej rozszerzenie czegoś, co spowodowałoby uruchomienie skryptu, i mieć nadzieję, że w jakiś sposób użytkownik przypadkowo uruchomiłby kod. Nie znam żadnych udanych ataków w „świecie rzeczywistym”, które wykorzystałyby tę lukę, ale możliwe było stworzenie z niej działającego exploita.

Szybko dostarczyliśmy łatkę całkiem cholernie dla tego, powiem ci.

Zrobiłem, a następnie naprawiłem wiele innych luk w zabezpieczeniach w JScript, ale żadna z nich nigdy nie zbliżyła się tak bardzo do reklamy.

Eric Lippert
źródło
81
Prawdopodobnie są to właściwie 2 exploity bezpieczeństwa; drugi polega na tym, jak pobrać kod na serwer kompilacji produkcyjnej, tak aby nikt nie zauważył / nie zaakceptował zmiany ;-p
Marc Gravell
8
„sprawdziłem mój kod, zmieniłem kilka ustawień klucza rejestru bezpieczeństwa bez wyraźnego powodu, sprawdziłem go z powrotem i nigdy nie dostałem recenzji kodu ani nikomu o tym nie powiedziałem” - nie brzmi to dla mnie jako niekompetencja, brzmi jak złośliwe zamiary kogoś, kto dokładnie wiedział , co robi.
Juliet
80
„Nigdy nie przypisuj złośliwości temu, co można odpowiednio wytłumaczyć głupotą”. - Hanlon's Razor
David R Tribble
15
Nie ma jednego systemu kontroli źródła obowiązującego w całym Microsoft. Obecnie większość zespołów korzysta z Source Depot lub Team Foundation. Nic dziwnego, że zespoły produktów Visual Studio zazwyczaj używają Team Foundation. Wiesz, jedz własne psie pożywienie.
Eric Lippert,
40
Kto sprawdza ZDNet przed pójściem do pracy?
Neil N
274

Mam nadzieję, że zauważysz tutaj, co jest nie tak. (Tak naprawdę strasznie źle):

String emailBody = "";

for (int i = 0; i < subscribers.Count; i++)
{
    emailBody += "Hello " + subscribers[i].FirstName + ",";
    emailBody += "this is a reminder with your account information: \n\n:";
    emailBody += "Your username: " + subscribers[i].Username + "\n";
    emailBody += "Your password: " + subscribers[i].Password + "\n";
    emailBody += "Have a great day!";

    emailDispatcher.Send(subscribers[i].EmailAddress, emailBody);
}

Ostatni odbiorca był najszczęśliwszy;)

Alex
źródło
226
Czy mówisz o tym, że przechowujesz hasła w postaci zwykłego tekstu, czy o tym, że ciało e-mail nigdy nie jest czyszczone? Nie jestem nawet pewien, co jest gorsze.
Kristof Provost
208
Chcesz powiedzieć, że nie używasz StringBuilder? : D (tylko żartowałem)
ShdNx
58
@Kristof - zgaduję, że ma na myśli fakt, że ostatni użytkownik otrzymuje listę WSZYSTKICH użytkowników i haseł. :)
Don Branson
141
Absolutnie nienawidzę systemów, które przesyłają mi e-maile w ramach procesu rejestracji. Ma to dwie wady: 1. Przechowują moje hasło w postaci zwykłego tekstu gdzieś w swoim systemie. Jeśli nie ich stała baza danych użytkowników, zdecydowanie ich system przetwarzania rejestracji. 2. Został wysłany za pośrednictwem EMAIL, w postaci zwykłego tekstu lub HTML, SMTP przesyłając go przez przekaźniki poczty w Internecie. Jest wielu mężczyzn w środku, którzy mogą to przechwycić. Przynajmniej jeśli czujesz potrzebę wysyłania mi e-maili z bezpiecznymi informacjami, pozwól mi podać mój publiczny klucz PGP, aby go zaszyfrować!
Jesse C. Slicer
16
Użyłem skrótów MD5 do ochrony haseł w bazie danych raz. Ale po sprawdzeniu wyników przez tęczowy stół i dopasowaniu około 50% haseł ... pomyślałem, że to dobry czas na dodanie soli.
Matthew Whited,
206

Stare głupie terminale IBM System 36 miały kombinację klawiszy, która rozpoczęła rejestrowanie makra. Kiedy terminal nie był zalogowany, możesz rozpocząć rejestrowanie makra i pozostawić je w tej pozycji. Następnym razem, gdy ktoś się zaloguje, naciśnięcia klawiszy zostaną zapisane w makrze, a nagrywanie zakończy się automatycznie po zarejestrowaniu maksymalnej dozwolonej liczby klawiszy. Po prostu wróć później i odtwórz makro do autolog-in.

alternatywny tekst

Stefan
źródło
204

Najgorsza dziura w zabezpieczeniach, jaką kiedykolwiek widziałem, została naprawdę zakodowana przez ciebie i spowodowała, że ​​Google Bot usunął całą bazę danych.

Kiedy pierwszy raz uczyłem się klasycznej ASP, napisałem własną podstawową aplikację blogową. Katalog ze wszystkimi skryptami administratora był chroniony przez NTLM na IIS. Pewnego dnia przeniosłem się na nowy serwer i zapomniałem ponownie zabezpieczyć katalog w IIS (ups).

Strona główna blogu zawierała link do głównego ekranu administratora, a główny ekran administratora miał DELETE LINK dla każdego rekordu (bez potwierdzenia).

Pewnego dnia znalazłem każdy rekord w bazie danych usunięty (setki osobistych wpisów). Myślałem, że jakiś czytelnik włamał się na stronę i złośliwie usunął każdy rekord.

Przyszedłem, aby dowiedzieć się z dzienników: Google Bot zaindeksował witrynę, podążał za linkiem administratora, a następnie podążałem za wszystkimi DELETE LINKS, usuwając w ten sposób każdy rekord w bazie danych. Czułem, że zasłużyłem na nagrodę Dumbass of the Year, która przypadkowo została naruszona przez Google Bot.

Na szczęście miałem kopie zapasowe.

Matias Nino
źródło
13
Zgadnij, pokazuje, jak częsty jest błąd.
si618
96
Dlatego zawsze powinieneś POST zmieniać zmiany.
rekurencyjny
7
@recursive: prawda, ale jeśli katalog nie jest chroniony hasłem, nie powstrzymuje człowieka przed usunięciem wszystkiego.
DisgruntledGoat
2
Miałem ten problem z wtyczkami przeglądarki, które pobierają linki. Kiedyś pracowałem dla strony blogowej i przez kilka dni byliśmy zaskoczeni, gdy jedna z użytkowników zgłosiła, że ​​wszystkie komentarze na jej blogu w tajemniczy sposób znikną.
Matthew
7
Nie, nie zasłużyłeś na tę nagrodę. Zasłużyłbyś na to, gdyby tak się stało i nie miałeś kopii zapasowych.
Ryan Lundy,
187

Najgorszą dziurą, jaką kiedykolwiek widziałem, był błąd w aplikacji internetowej, w którym podanie pustej nazwy użytkownika i hasła zalogowałoby Cię jako administratora :)

Kaitsu
źródło
144
Błąd lub funkcja dla leniwych programistów? :)
si618
9
Widziałem taki kod. Wynika to zwykle z tego, że wyszukiwanie użytkownika używa LIKE, jak w „WYBIERZ * OD [użytkownika], gdzie nazwa użytkownika LIKE„% ”+ nazwa użytkownika +„% ””. A ponieważ administrator jest zwykle pierwszym użytkownikiem w bazie danych, zwraca tego użytkownika.
Pierre-Alain Vigeant
11
dlaczego miałbyś robić LIKE z nazwą użytkownika? ... więc mógłbym być administratorem, wpisując adm, gdy mam na myśli Adama
Matthew Whited
20
Większość firm podejmuje trzy próby zalogowania się pod danym ID użytkownika przed zablokowaniem konta. Więc to trywialnie łatwe zablokować ktoś elses konto z trzech złych haseł.
David R Tribble,
3
Widziałem to w wielu korporacyjnych aplikacjach internetowych, które uwierzytelniają się w katalogu LDAP. W LDAP puste hasło powoduje udane anonimowe logowanie. Anonimowy użytkownik nie może wiele zrobić, ale aplikacje internetowe korzystające z tego mechanizmu nie posuwają się aż do sprawdzenia - po prostu zakładają „sukces = prawidłowe hasło”!
SimonJ
174

Raz zauważyłem to na adres URL strony internetowej.

http://www.somewebsite.com/mypage.asp?param1=x&param2=y&admin=0

Zmiana ostatniego parametru na admin = 1 dała mi uprawnienia administratora. Jeśli zamierzasz ślepo ufać wkładowi użytkowników, przynajmniej nie telegrafuj, że to robisz!

JohnFx
źródło
19
To przydatna funkcja;) Nie widziałeś WarGames? Coś w stylu „każdy dobry programista dodaje backdoor do swojego systemu” hehe.
alex
38
Może więc powinni byli użyć & admin = JOSHUA
JohnFx
165

Widziałem to w The Daily WTF .

<script language="javascript">
<!--//
/*This Script allows people to enter by using a form that asks for a
UserID and Password*/
function pasuser(form) {
    if (form.id.value=="buyers") { 
        if (form.pass.value=="gov1996") {              
            location="http://officers.federalsuppliers.com/agents.html" 
        } else {
            alert("Invalid Password")
        }
    } else {  
        alert("Invalid UserID")
    }
}
//-->
</script>

Nic nie przebije tego IMHO.

Konamiman
źródło
21
Myślę, że to nie może być tak głupie, jak myślisz. To trywialne hasło może działać jak przycisk „tak, jestem z federalnego rządu” z tą różnicą, że osoba, która próbuje je niewłaściwie wykorzystać, jeśli zostanie złapana, może być ścigana za „podanie fałszywych danych uwierzytelniających” (lub jak to się nazywa? )
ilya n.
29
ilya: To Javascript, więc jest widoczny dla użytkownika. Po zobaczeniu tego możesz po prostu wejść na officers.federalsuppliers.com/agents.html , omijając jakąkolwiek kontrolę.
Alsciende
68
Nie martw się, dopóki strona internetowa jest chroniona prawem autorskim, DMCA zapewnia 100% ochronę. Nie wolno ominąć Javascript.
Steve Hanov
13
@ Steve Hanov: Masz ciekawą definicję „obejścia” Jeśli wpisuję ten adres URL w przeglądarce ... lub nawet go kopiuję / wklejam ... Nic nie omijam, po prostu używam przeglądarki, aby przejść do adres, który umieszczam w pasku adresu. Który jest jednym z zamierzonych celów przeglądarki internetowej.
Powerlord,
46
gratulacje, jesteś niewinny, szkoda, że ​​przekonanie ławy przysięgłych kosztuje 300 tys.
Dustin Getz
141

Na uniwersytecie, który pozostanie bezimienny, wszystkie zapytania dotyczące akcji były przekazywane przez adres URL zamiast formularza.

Sprawa działała, dopóki nie pojawił się Google Bot, przejrzał wszystkie adresy URL i wyczyścił bazę danych.

Evernoob
źródło
18
Dobry stary SQL Injection według projektu. Pracowałem z funkcją raportowania, która ma wbudowaną tę „funkcję”.
ICodeForCoffee 24.09.09
18
@ICodeForCoffee: gdzie jest zastrzyk SQL? To tylko myli cele GET vs POST. Jest to dość powszechny błąd początkujących twórców stron internetowych. Pamiętam, jak czytałem artykuł Daily WTF na ten właśnie problem.
rmeador
Czy nie była bardzo wczesna wersja, jeśli Wikipedia ma ten problem? Mieli linki, które cofnęłyby zmiany lub coś w tym rodzaju.
DisgruntledGoat
14
Prawdziwy problem polega na tym, że Googlebot może wyczyścić bazę danych bez uwierzytelniania.
MiffTheFox
34
Mam nadzieję, że udało im się je odzyskać z pamięci podręcznej Google.
fastcodejava
137

Zaskoczony, że nikt nie podniósł inżynierii społecznej, ale wyrzuciłem go z tego artykułu .

Podsumowanie: złośliwi użytkownicy mogą kupić kilkadziesiąt dysków flash, załadować ich automatycznie uruchamianym wirusem lub trojanem, a następnie posypać wspomniane dyski flash na parkingu firmowym późną nocą. Następnego dnia wszyscy przychodzą do pracy, potykają się o błyszczący, w kształcie cukierków, nie do odparcia sprzęt i mówią sobie: „och, wolna pamięć flash, zastanawiam się, co na niej jest!” - 20 minut później cała sieć firmy zostaje zamknięta.

Julia
źródło
69
Autorun jest zły.
Mark Ransom
22
@mmyers: banowanie dysków flash nie jest dobrym podejściem. Przerwij automatyczne uruchamianie / automatyczne odtwarzanie.
Jay
10
Przeczytaj jakiś czas temu, inne podejście (z czasów dyskietki). Przeprowadź zainfekowaną dyskietkę dyskietkę z etykietą „Dane księgowe - poufne” w korytarzu biura i poczekaj 5 minut. Nieodparty!
Rodrigo
13
Na szczęście zawsze mogę uruchomić się z dysku CD z systemem Linux na żywo i stamtąd sprawdzić dysk flash.
David Thornley,
6
@Jay - Niestety, ile osób obejrzy pliki, a następnie kliknie je dwukrotnie „, aby zobaczyć, co robią”? Banowanie jest koniecznością wiele razy, ponieważ ludzie nie myślą.
JasCav,
131

„Pedo mellon a minno” , „Speak friend and enter”, u bram Morii.

Adriano Varoli Piazza
źródło
13
Jakby nikomu, kto mówi po elficku, nie można ufać!
Artelius,
6
xkcd.com/424
Lily Chung
103

Microsoft Bob
(Credit: Dan's 20th Century Abandonware )

Jeśli po raz trzeci wprowadzisz nieprawidłowe hasło, zostaniesz zapytany, czy je zapomniałeś.

http://img132.yfrog.com/img132/8397/msbob10asignin15.gif

Ale zamiast mieć zabezpieczenia, takie jak ciągłe monitowanie o poprawne hasło, dopóki nie zostanie wprowadzone lub blokowanie cię po kilku niepoprawnych próbach, możesz wprowadzić dowolne nowe hasło, które zastąpi oryginalne! Każdy może to zrobić za pomocą dowolnego „chronionego” hasłem konta Microsoft Bob.

Nie jest wymagane wcześniejsze uwierzytelnienie. jego środki Użytkownik1 mógł zmienić własne hasło, po prostu trzykrotnie wpisując hasło, a następnie wprowadzając nowe hasło po raz czwarty - bez konieczności używania „zmień hasło”.

Oznacza to również, że Użytkownik1 może zmienić hasła Użytkownika2, Użytkownika3 ... dokładnie w ten sam sposób. Każdy użytkownik może zmienić hasło innego użytkownika, po prostu trzykrotnie je wpisując, a następnie wprowadzając nowe hasło po wyświetleniu monitu - i może uzyskać dostęp do konta.

http://img132.yfrog.com/img132/9851/msbob10asignin16.gif

rev JohnFx
źródło
7
Jest to takie samo zachowanie, jak sam system Windows, gdy komputer nie jest administrowany przez domenę. Nawet w systemie Windows Vista Ultimate możesz zresetować hasło w dowolnym momencie. Zgaduję, że odmowa usługi jest uważana za większe zagrożenie niż nieautoryzowany dostęp; zwłaszcza, że ​​większość rzeczy można uzyskać po prostu i tak ponownie instalując dysk w innym miejscu. Uważam, że celem hasła w tym przypadku jest wykrywanie wtargnięcia, a nie zapobieganie.
Jeffrey L Whitledge
1
@Jeffrey: Chodzi o to, że kiedy czarny kapelusz ma fizyczny dostęp, jest to prawie „koniec gry”. Jeśli chcesz się przed tym zabezpieczyć, potrzebujesz poważnego szyfrowania (a także sposobów skanowania w poszukiwaniu keyloggerów sprzętowych i programowych itp.).
David Thornley,
8
Ktoś mądrzejszy ode mnie zauważył, że to po prostu dobre modelowanie zagrożeń. „Bob” był przeznaczony do użytku domowego w erze niepołączonej w sieć, a DALEKO było bardziej prawdopodobne, że będziesz cierpieć na próbę DOS od swojej młodszej siostry lub kaca niż z powodu włamania. Bob poinformował cię, że dostęp do twojego konta został uzyskany (ponieważ twoje stare hasło już nie działało), ale nie próbował zrobić więcej.
bgiles
20
Moja żona właśnie mnie zobaczyła ... Jej: „O rany! Co to za program ?!” Ja: „... Microsoft Bob?” Jej: „ Kochałem Microsoft Bob!” Westchnienie ...
Tim Goodman,
10
@ChristianWimmer - Brzmi to jak dawanie ludziom plecaka z napisem „Spadochron”, aby przyzwyczaić się do odczucia jednego na plecach, ale bez mówienia im, że nie ma tam spadochronu.
JohnFx,
102

Miałem poprzedni adres domowy Joe X i potrzebowałem znać jego nowy aktualny adres w tym samym mieście, ale nie miałem możliwości się z nim skontaktować. Doszedłem do wniosku, że codziennie otrzymuje stos katalogów wysyłkowych, więc arbitralnie zadzwoniłem pod numer 800 dla cukierków See (w przeciwieństwie do Victoria's Secret, Swiss Colony lub innego dużego mailera):

Ja: „Cześć, nazywam się Joe X. Myślę, że dwa razy znalazłeś się na mojej liście mailowej, zarówno pod moim starym, jak i nowym adresem. Czy twój komputer pokazuje mi adres [stary adres] lub [fałszywy adres] ?

Operator: „Nie, pokazujemy ci [nowy adres].”

Joe Snyder
źródło
36
Ach, muszę pokochać inżynierię społeczną. Ludzki aspekt bezpieczeństwa jest zwykle najsłabszy.
EMP
95

Podanie 1 = 1 w polu tekstowym zawiera listę wszystkich użytkowników w systemie.

Rahul
źródło
325
Pozdrowienia ze stołów Bobby'ego.
Gumbo,
4
w jaki sposób komentarz @ Gumbo jest oceniany 4 razy więcej niż odpowiedź?
Lie Ryan,
12
Po prostu czterokrotnie więcej osób, które głosowały na to pytanie, zagłosowało na jego komentarz: /
RobertPitt
4
Czy jeden z 221 głosujących w górę komentarzy w Bobby Tables powiedziałby reszcie z nas, czym do cholery są Bobby Tables?
kirk.burleson
15
@ kirk.burleson: xkcd.com/327
gspr 30.10.10
76

Będąc konsultantem ds. Bezpieczeństwa aplikacji na życie, istnieje wiele typowych problemów, które pozwalają uzyskać uprawnienia administratora na stronie internetowej przez coś. Ale naprawdę fajne jest to, że możesz kupić skarpetki warte milion dolarów.

Był to mój przyjaciel, który pracował nad tym koncertem, ale największą jego zaletą było to, że ceny artykułów w pewnej obecnie bardzo popularnej książce online (i wszystkim innym) były przechowywane w samym HTML jako ukryte pole. W początkowych dniach ten błąd gryzł wiele sklepów internetowych, dopiero zaczynali odkrywać sieć. Bardzo mała świadomość bezpieczeństwa, mam na myśli naprawdę, kto zamierza pobrać HTML, edytować ukryte pole i ponownie przesłać zamówienie?

Oczywiście zmieniliśmy cenę na 0 i zamówiliśmy 1 milion par skarpet. Możesz także zmienić cenę na ujemną, ale wykonanie tej czynności spowodowało, że część przepełnienia bufora oprogramowania rozliczeniowego backendu zakończyła transakcję.

Gdybym mógł wybrać inny, byłyby to problemy z kanonizacją ścieżek w aplikacjach internetowych. Wspaniale jest robić foo.com?file=../../../../etc/passwd

Collin
źródło
9
Wspaniale, nigdy więcej nie będziesz mieć brakującej lewej skarpety!
si618,
75
Dostałeś kiedyś skarpetki?
Alex Barrett,
32
Zamówienie zostało zrealizowane, a system realizacji powiadomił magazyn. Uświadomiliśmy sobie, że to prawdopodobnie zadziałało i powiedział naszemu punktowi kontaktowemu, że powinni zatrzymać zamówienie. Najwyraźniej nieco później zadzwonił kierownik magazynu, pytając o zamówienie, aby upewnić się, że jest prawdziwe. Mądrze uważał, że to błąd oprogramowania.
Collin
27
@StuperUser, oczywiście na nogach.
strager
12
Nie ma problemu z przechowywaniem, po prostu zhakuj stronę internetową Ikea, aby zamówić 100 000 zestawów szuflad, aby je umieścić,
Neil Aitken
64

Przypadkowe przekazanie hasła do bazy danych do kontroli źródła. To było dość złe, ponieważ była kontrola źródła na Sourceforge.

Nie trzeba dodawać, że hasło zmieniło się bardzo szybko.

Matthew Iselin
źródło
144
OK, hasło zmieniło się bardzo szybko ... ale przez kogo ?
Eamon Nerbonne
1
Byłem na tej drodze. Wiele systemów (na przykład django) praktycznie zachęca do tego, ponieważ proszą cię o umieszczenie hasła DB w pliku ustawień, co oczywiście jest bardzo łatwe do
wpisania
56

Nie zmienia haseł administratora, gdy kluczowi pracownicy IT opuszczają firmę.

Max
źródło
1
lub pozostawienie domyślnych ustawień fabrycznych, takich jak admin / admin (a także szczególnie sprzęt) ...
Gnark 24.09.2009
47
Mam jeszcze jeden gorszy - opuściłem uniwersytet po tym, jak zostałem uwięziony, a katalog powiedział mi, że tworzą dla mnie wyższą pracę po ukończeniu studiów, ale później dowiedziałem się, że powiedział mojemu kierownikowi, że nie mają awansuj mnie. Nie muszę dodawać, że nie byłem z tego powodu szczęśliwy. W szczególności powiedziałem swojemu menedżerowi, aby zmienił każde hasło, do którego miałem dostęp. Tydzień po moim odejściu dostaję wiadomość e-mail od mojego menedżera z hasłem root, „na wypadek, gdybym go potrzebował”. Skontaktowałem się z sysadminem, aby upewnić się, że zmieniono go ponownie, ponieważ nie chciałem upaść, jeśli coś pójdzie nie tak.
Joe
10
@Sophomore: Przypominam sobie w biografii Feynmana, że ​​komentuje on, że wiele gigantycznych, bardzo bezpiecznych sejfów zawierających tajemnice projektu na Manhattanie pozostało w domyślnych kombinacjach.
Brian
12
Mogę sobie tylko wyobrazić szpiega ZSRR, który dotrze do sejfu i spróbuje wszystkiego, co może wymyślić, aby rozbić sejf. „Cholera! Nie mogę tego złamać. dla matki Rosji!"
Eric
3
Nie mogę się uśmiechnąć podczas czytania, pracowałem jako technik IT latem w bardzo znanej szwedzkiej firmie, a kiedy wróciłem kilka lat później, aby pracować jako inżynier, miałem problem z instalacją oprogramowania. Niespodziewanie przypomniałem sobie stare hasło administratora i voila! zadziałało =)
Viktor Sehr,
50

Chociaż nie jest to najgorsza dziura bezpieczeństwa, jaką kiedykolwiek widziałem. Ale to przynajmniej najgorsze, jakie sam odkryłem:

Dość udany sklep internetowy z audiobookami wykorzystał plik cookie do przechowywania informacji identyfikacyjnych bieżącego użytkownika po udanym uwierzytelnieniu. Możesz jednak łatwo zmienić identyfikator użytkownika w pliku cookie i uzyskać dostęp do innych kont i dokonywać na nich zakupów.

Gumbo
źródło
Wow ... dokładnie odziedziczyłem dokładnie ten kod ASP, który odziedziczyłem.
Radu094,
Prowadzę aplikację, która ma dokładnie ten problem. Na pewno jest wysoko na liście poprawek. Na szczęście nie jest to witryna e-commerce.
quentin-starin
12
Dzieje się tak częściej, niż większość ludzi zdaje sobie sprawę.
NotMe
47

Na początku ery .com pracowałem dla dużego detalisty za granicą. Z wielkim zainteresowaniem obserwowaliśmy, jak nasi konkurenci uruchomili sklep internetowy kilka miesięcy przed nami. Oczywiście poszliśmy to wypróbować ... i szybko zdaliśmy sobie sprawę, że nasze wózki sklepowe się mylą. Po nieco pobawieniu się ciągiem zapytania, zdaliśmy sobie sprawę, że możemy się nawzajem porwać. Przy odpowiednim czasie możesz zmienić adres dostawy, ale pozostawić metodę płatności w spokoju ... wszystko po wypełnieniu koszyka ulubionymi przedmiotami.

Eric J.
źródło
Oczywiście oznacza to, że złośliwie zrobiłeś coś, aby zmusić ich do wysłania ci towarów w nieuczciwy sposób, jeśli faktycznie to zrobisz, i podałeś „im” swój adres.
David Thornley,
6
Tak, to sprawia, że ​​jest to poważna dziura w bezpieczeństwie. W rzeczywistości nie nacisnęliśmy przycisku Kup, ale mogliśmy. Na podstawie doniesień prasowych niektóre osoby tak zrobiły.
Eric J.
45

Kiedy po raz pierwszy dołączyłem do firmy, w której obecnie pracuję, mój szef przeglądał istniejącą stronę e-commerce potencjalnego nowego klienta. Było to w dość wczesnych czasach zarówno usług IIS, jak i handlu elektronicznego, a bezpieczeństwo było, powiedzmy, mniej niż rygorystyczne.

Krótko mówiąc, zmienił adres URL (z ciekawości) i zdał sobie sprawę, że przeglądanie katalogów nie zostało wyłączone, więc możesz po prostu wyciąć nazwę strony na końcu adresu URL i zobaczyć wszystkie pliki w serwer internetowy.

Przeglądaliśmy folder zawierający bazę danych Access, którą pobraliśmy. Była to cała baza klientów / zamówień e-commerce, pełna kilku tysięcy niezaszyfrowanych numerów kart kredytowych.

Mark Bell
źródło
1
Było to prawie dwanaście lat temu, kiedy strony internetowe oparte na danych były nowością; wiele witryn działało przeciwko Access lub podobnym, ponieważ nikt nie chciał zainwestować w licencję SQL Server na coś, co było postrzegane jako „bok” dla ich podstawowej działalności. Jak się zmieniło!
Mark Bell
44

Kiedy miałem 13 lat, moja szkoła otworzyła sieć społecznościową dla uczniów. Niestety dla nich znalazłem błąd bezpieczeństwa, w którym możesz zmienić identyfikator URI na inny identyfikator użytkownika, np. „? Identyfikator_użytkownika = 123” i zalogować się dla tego użytkownika. Oczywiście powiedziałem moim znajomym, a na koniec szkolna sieć społecznościowa była wypełniona pornografią.

Nie poleciłbym tego jednak.

Hannson
źródło
3
dlaczego nie poleciłbyś tego? co się stało?
Simon_Weaver,
55
@Simon_Weaver: Wydaje mi się, że 13-latkowie zazwyczaj nie mają dobrego smaku dla pornografii.
slacker
@ slacker +1, aby postawić cię na 1000 powtórzeń! z wyjątkiem tego, że nie sądzę, że komentarze w komentarzach dają ci rep :-(
Simon_Weaver
2
„dobry gust do porno” - jest oksymoron.
Zann Anderson
43

Myślę, że puste pole nazwy użytkownika / hasła dla dostępu administratora jest zdecydowanie najgorsze. Ale taki, który sam widziałem

if (password.equals(requestpassword) || username.equals(requestusername))
{
    login = true;
}

Szkoda, że ​​jeden operator robi tak dużą różnicę.

Stefan Ernst
źródło
10
wow, oczywiście mam przymus, aby to naprawić
wag2639
Fakt, że zamiast skrótu używane jest prawdziwe hasło, jest też raczej zły ...
Peter Kriens
Najpierw byłem „co się stało?”, A potem „AAAAaaaaaaaAAAA! OMG”
Bojan Kogoj
42

Mój byłby dla banku, którego byłem klientem. Nie mogłem się zalogować, więc zadzwoniłem do obsługi klienta. Poprosili mnie o nazwę użytkownika i nic więcej - nie zadali żadnych pytań bezpieczeństwa ani nie próbowali zweryfikować mojej tożsamości. Następnie zamiast wysłać reset hasła na adres e-mail, który mieli w pliku, zapytali mnie, na jaki adres e-mail go wysłać. Podałem im adres inny niż ten, który miałem w pliku, i mogłem zresetować hasło.

Zasadniczo wszystko, czego haker potrzebuje, to moja nazwa użytkownika, a on może wtedy uzyskać dostęp do mojego konta. Dotyczyło to dużego banku, o którym słyszało co najmniej 90% ludzi w Stanach Zjednoczonych. Stało się to około dwa lata temu. Nie wiem, czy był to źle wyszkolony przedstawiciel obsługi klienta, czy była to standardowa procedura.

Sean
źródło
22
a jaki to bank?
TigerTiger
5
@Si: pisze „BYŁEM klientem ...”. Myślę, że to odpowiada na pytanie. :)
ShdNx
8
To był Washington Mutual, który został przejęty przez FDIC i sprzedany Chase na początku tego roku. Mieli także dziwne komunikaty o błędach. Kiedy próbowałem ustawić hasło z tymczasowego, wciąż pojawiał się błąd „Hasła nie pasują”, nawet jeśli były takie same, a nawet skopiowałem / wkleiłem. Uświadomiłem sobie, że jeśli wstawię „nieprawidłowe znaki” jak ukośnik, zamiast wypowiadać nieprawidłowe znaki, otrzymam inną wiadomość.
Sean
11
@Elizabeth: Uhm ... zdajesz sobie sprawę, że to zapobiega phishingowi, prawda? Jeśli ktoś spróbuje skopiować lub naśladować witrynę banku, może wyglądać dokładnie tak samo, ale prawdopodobnie nie ma dostępu do bazy danych, więc nie może uzyskać odpowiedniego obrazu bezpieczeństwa. Właśnie dlatego tam jest. Nie wszyscy użytkownicy są wystarczająco inteligentni, aby sprawdzić certyfikat (który może być podobnie
blefowany
13
Ochrona twoich kont finansowych to przesada? ...
Joe Phillips
36

Podzielę się jednym, który utworzyłem. Rodzaj.

Wiele lat temu firma, dla której pracowałem, chciała zaindeksować swoje strony ASP. Więc poszedłem i skonfigurowałem serwer indeksów, wykluczyłem kilka katalogów administratora i wszystko było dobrze.

Jakkolwiek nieznane mi było to, że ktoś dał sprzedawcy ftp dostęp do serwera WWW, aby mógł pracować z domu, były to dni dialupu i był to najłatwiejszy sposób na zamianę plików ... i zaczął przesyłać rzeczy, w tym dokumenty szczegółowo opisujące znaczniki w naszych usługach ... który indeksował serwer indeksowania i zaczyna wyświetlać serwery, gdy ludzie szukają hasła

Pamiętajcie o dzieciach, białe listy nie są czarnymi listami.

strzałka do dmuchawki
źródło
76
Myślę, że „białe listy nie są czarnymi listami”, choć często dobra rada, nie jest właściwą lekcją do nauki tutaj. Prawidłowa lekcja brzmi: „nie umieszczaj prywatnych danych na serwerze publicznym”. Ponadto „nie zezwalaj sprzedawcom na dostęp do serwera”.
rmeador
7
Och, harmonia między odpowiedzią a awatarem.
Tağdaş Tekin
35

Jednym z najprostszych, ale naprawdę wartych kosztów jest:

Systemy płatności korzystające z mechanizmów takich jak PayPal mogą być wadliwe, ponieważ odpowiedź zwrotna z PayPal po pomyślnej płatności nie jest sprawdzana tak, jak powinna.

Na przykład:

Mogę przejść do strony z zakupami płyt CD i dodać trochę zawartości do koszyka, a następnie podczas etapów kasowania zwykle na stronie jest wypełniony formularz z polami do płatności PayPal i przycisk „Wyślij”.

Za pomocą edytora DOM mogę przejść do formy „na żywo” i zmienić wartość z £899.00na, £0.01a następnie kliknąć Prześlij ...

Kiedy jestem po stronie PayPal, widzę, że kwota wynosi 1 grosz, więc płacę to i PayPal przekierowuje niektóre parametry do strony początkowego zakupu, który tylko sprawdza parametry takie jak payment_status=1itp. Itp. I nie zatwierdź zapłaconą kwotę.

Może to być kosztowne, jeśli nie mają wystarczającego miejsca do logowania lub produkty są automatycznie wysyłane.

Najgorszym rodzajem witryn są witryny dostarczające aplikacje, oprogramowanie, muzykę itp.

RobertPitt
źródło
12
+1 uzgodnione. W przypadku hostowanej strony płatności inicjująca witryna internetowa nie powinna umożliwiać użytkownikowi wprowadzania wartości; zamiast tego strona powinna wysłać post z powrotem do siebie po kliknięciu przez użytkownika, a następnie serwer sformułuje i wyśle ​​post do „bramki” płatności bezpośrednio z odpowiednimi wartościami. Wszystko zależy od tego, czego oczekuje brama i od tego, jak można z nią wchodzić w interakcje, ale nie widzę żadnej bramy wartej jej soli, która nie ma bezpieczniejszego scenariusza niż to, co opisałeś. Może się mylę.
John K
możesz naśladować żądania wysyłania po stronie serwera, więc wysyłając dane w ten sposób, możesz upewnić się, że dane wysyłane do bramy są dokładnie takie, a następnie przekierować je za pomocą nagłówka lokalizacji.
RobertPitt,
PayPal ma opcję szyfrowania, która pozwala witrynie temu zapobiec. Witryna najpierw przesyła dane do siebie, szyfruje dane zamówienia po stronie serwera za pomocą klucza znanego tylko im i PayPal, a następnie wysyła te dane do PayPal, który je odszyfrowuje. Nieszyfrowane dane zamówienia nigdy nie są wysyłane w ten sposób w polach formularza. Jest to jednak tylko opcja, więc nie każda witryna korzystająca z PayPal robi to w ten sposób. Powinny jednak!
mikel
35

A może internetowy menedżer dokumentów, który pozwolił ustawić każde zezwolenie bezpieczeństwa, które mógłbyś zapamiętać ...

To jest, dopóki nie przejdziesz do strony pobierania ... download.aspx? DocumentId = 12345

Tak, documentId był identyfikatorem bazy danych (auto-przyrost) i można było zapętlić każdy pojedynczy numer i każdy mógł uzyskać wszystkie dokumenty firmowe.

Po otrzymaniu powiadomienia o tym problemie kierownik projektu odpowiedział: Ok, dzięki. Ale nikt tego wcześniej nie zauważył, więc zachowajmy go takim, jaki jest.

Sergio
źródło
56
Naprawdę nienawidzę tego nastawienia, dostawałem go kilka razy. Sprawia, że ​​chcę pozwolić innym to zrobić, aby dać im lekcję.
syaz
W końcu udało mi się wypełnić taką dziurę w mojej ostatniej pracy ... po miesiącach narzekań.
powiek
Znalezienie stron internetowych, które ci to umożliwiają, nie jest niczym niezwykłym. Zobaczysz katalog ostatnich lub zarchiwizowanych artykułów, ale nie będziesz mógł wrócić dalej na liście niż strona lub dwie bez konieczności logowania. Wystarczy otworzyć pierwszy artykuł i zmienić odpowiedni parametr w adresie URL na dowolny post numer, który chcesz zobaczyć dowolny artykuł.
Bob-the-Niszczyciel
2
Oto świetny przykład tego. W tym artykule w NY Times: nytimes.com/2009/01/14/dining/14power.html?_r=1&ref=dining pokazane zdjęcie jest zamiennikiem znacznie bardziej zabawnej oryginalnej wersji, wciąż dostępnej tutaj: graphic8.nytimes.com /images/2009/01/14/dining/14power2_650.jpg
Jamie Treworgy
34

Norweska dostawa pizzy miała dziurę w zabezpieczeniach, w której można było zamówić ujemne ilości pizzy na ich nowym, błyszczącym portalu internetowym i uzyskać je za darmo.

110763
źródło
42
Inną dziurą bezpieczeństwa są pracownicy, prawda? „Cóż, proszę pana, komputer mówi, że dostajesz 15 pizzy za darmo, więc… proszę bardzo!… Czy mam napiwek?”
Nathan Long,
6
... twoje miejsce do pizzy rozdaje także DVD? Oo
mpen
5
Jako były kierowca pizzy ... nie, nie daliśmy szczurom tyłka na temat tego rodzaju rzeczy. Nasi menedżerowie też nie.
powiek
48
Nie dostawa facet przyjść do zbierania pizze ty sprzedające je?
Jon B
7
Wow .. a facet od dostawy musiał dać ci napiwek? =))
Andrei Rînea