Bug in mijn website

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • Bug in mijn website

      Hey,

      Ik heb een bug in mijn website zitten en ik krijg het maar niet gevonden...

      Website: banditi.nl

      Probleem:

      Op een of andere manier kunnen leden aan onbeperkt geld komen en ik krijg de bug maar niet gevonden..

      Toevoeging:

      Heb gister avond alles gereset dus in de ledenlijst valt nu niks meer te zien.. Heb gister alle opties getest door ze simpel weg uit te voeren alsof ik een speler ben. Ik krijg nergens een foutmelding en ik zie nergens een fout.. Het spel is geprogrammeerd in PHP PDO.

      Wat ik me nu dus afvraag, is het mogelijk om SQL-injecties uit te voeren waardoor je dus onbeperkt geld krijgt?

      Hoe kan ik dit testen?

      Heeft iemand advies of ooit iets soortgelijks mee gemaakt?
      Wil jij meer klanten voor jouw bedrijf? Je omzet verhogen binnen NO time!
      Stuur mij een bericht en we bespreken jouw mogelijkheden om te groeien!
      ictscripters.com/Thread/24756-Meer-Omzet-Meer-Klanten/

      Eigenaar van
      Online Marketing & Webdesign - itsucceeds.nl/
      Gaming Plaform - onetwogaming.nl/
      Banditi - https://banditi.nl/
      Criminas - criminas.nl/
    • darkshifty wrote:

      Ja, je kan al snel even kijken in je access log voor sql injecties op get requests. Daarnaast kan je een query log activeren op mysql. En je kan hotjar installeren om te kijken of sommige spelers misschien bots gebruiken op bepaalde functies.
      Hey,

      Bedankt voor je reactie! Heb wel een vraagje er over..

      Wat bedoel je met een query log activeren op mysql?

      Hotjar installeren is een goede! Thanks nogmaals voor je snelle reactie
      Wil jij meer klanten voor jouw bedrijf? Je omzet verhogen binnen NO time!
      Stuur mij een bericht en we bespreken jouw mogelijkheden om te groeien!
      ictscripters.com/Thread/24756-Meer-Omzet-Meer-Klanten/

      Eigenaar van
      Online Marketing & Webdesign - itsucceeds.nl/
      Gaming Plaform - onetwogaming.nl/
      Banditi - https://banditi.nl/
      Criminas - criminas.nl/
    • Frenzo.Brouwer wrote:

      Ik krijg nergens een foutmelding en ik zie nergens een fout..
      Welke fouten registreer je op dit moment? Worden deze alle braaf weggeschreven naar je errorlog, of veeg je alle foutmeldingen onder het tapijt? Hoe luiden jouw error_reporting(), display_errors, log_errors en error_log directives?

      Frenzo.Brouwer wrote:

      Het spel is geprogrammeerd in PHP PDO.
      Sja, maar hanteer je de principes van PDO (en daarmee prepared statements) wel juist? Plak je zelf snippets in je query in plaats van hiervoor de placeholders te gebruiken? Dan ga je mogelijk al nat. Het maakt niet uit welke methode je gebruikt; als je de principes hiervan op de verkeerde manier toepast dan levert dat zelden/nooit veilige applicaties op.

      Frenzo.Brouwer wrote:

      Wat ik me nu dus afvraag, is het mogelijk om SQL-injecties uit te voeren waardoor je dus onbeperkt geld krijgt?
      Ja, zie hierboven, maar mogelijk is er iets anders aan de hand. Maken de queries die je gebruikt voor het uitwisselen van (speel)geld wel gebruik van database-transacties waarbij je eventueel records locked? Anders is het wellicht mogelijk om de server te bombarderen met verzoeken tot het overmaken van geld, waardoor de momenten van controle of iemand wel genoeg geld heeft om iets over te maken en het overmaken zelf door elkaar gaan lopen (met alle ongewenste gevolgen van dien). Je zou voor de gein eens kunnen kijken of er spelers met negatieve geldbedragen zijn? Dit hangt natuurlijk sterk af van hoe alles is ontworpen. Maar als er dus mensen zijn met onbeperkt geld dan zit er ergens iets goed scheef in het ontwerp, de veiligheid van de site, of beide.

      Indien je geen gebruik maakt van database-transacties (hiervoor heb je de InnoDB database-engine nodig) zodat je kunt afdwingen dat dit soort geldtransacties echt als één ondeelbare actie uitgevoerd kunnen worden dan is het in zekere zin al einde oefening :p.

      Frenzo.Brouwer wrote:

      Hoe kan ik dit testen?
      Zie hierboven, of bekijk de suggesties van @darkshifty. Wat je op dit moment wilt doen is het verzamelen van "bewijs" zodat je de situatie kunt reproduceren of op zijn minst kunt verklaren.

      Je zou ook eens door je code heen kunnen rennen en zoeken op de databasetabel(len) die betrekking hebben op speelgeld en dan de bijbehorende queries eens verder onder de loep nemen.

      Wat misschien ook interessant was geweest was de toestand op het moment van de uit de hand gelopen geldbedragen te backuppen en deze eens op een testomgeving nader te bekijken, aangenomen dat deze website "verplaatsbaar" is. Je had dan waarschijnlijk een ideale testcase gehad, maar misschien is die dus nu alweer permanent verwijderd :/. Ook de database van een "gehackte" site kan zeer veel nuttige informatie bevatten.
    • Ik zou, wat hierboven ook geadviseerd wordt, beginnen met het toevoegen van logging / activity tracking.

      Never trust the user. Er zijn namelijk nog veeeeel meer manieren om een php applicatie te misbruiken:

      - SQL-Injections (testen a.d.v. een tool sqlmap).
      - Object-Injections (uploaden van een geinjecteerd bestand)
      - XSS-Injections
      - CSRF-Injections
      - Man-in-the-middle Attacks
      - etc.

      De meest voor de hand liggende methoden zijn denk ik wel SQL en Object-Injections in jou specifieke case.

      In geval van Object-Injections kun je denken aan maatregelen als het correct valideren en 'sanatizen' van het bestand. Maar ook aan het niet direct ophalen van het geüploaden bestand uit de public directory. Zo voorkom je dat gebruikers het volgende kunnen uitvoeren: phar://www.example.com/uploads/avatar.jpg, omdat er in hun geüploaden bestand een kwaadaardig phar bestand zit verstopt die vervolgens gewoon wordt uitgevoerd en het phar-protocol t.o.v. het http-protocol geen restricties heeft.

      Bij SQL-Injections moet je gewoon PDO correct te gebruiken, dus NOOIT raw-queries uitvoeren en altijd prepared statements indien er input komt van een gebruiker.

      Verder wil ik hieraan toevoegen dat het beveiligen van applicaties een vak opzicht. Ongetwijfeld genoeg websites waarbij dit niet op orde is en als je een beetje gaat zoeken er vast genoeg te vinden. Dit geldt niet alleen voor kleine maar zeker ook grote bedrijven. De voorbeelden die ik noem zijn de methoden die ik weet maar er zullen vast nog meer methoden zijn om raar gedrag te veroorzaken bij een applicatie.
      Dit was mijn spreekbeurt, zijn er nog vragen?
    • Frenzo.Brouwer wrote:

      darkshifty wrote:

      Ja, je kan al snel even kijken in je access log voor sql injecties op get requests. Daarnaast kan je een query log activeren op mysql. En je kan hotjar installeren om te kijken of sommige spelers misschien bots gebruiken op bepaalde functies.
      Hey,
      Bedankt voor je reactie! Heb wel een vraagje er over..

      Wat bedoel je met een query log activeren op mysql?

      Hotjar installeren is een goede! Thanks nogmaals voor je snelle reactie
      Op deze website vind je een duidelijke uitleg hoe je bijvoorbeeld het log naar een tabel kan laten schrijven:
      tableplus.com/blog/2018/10/how…queries-log-in-mysql.html
      En in de MySQL documentatie vind je meer informatie over de functionaliteit:
      dev.mysql.com/doc/refman/5.7/en/log-destinations.html

      Pas wel op dat je dit niet te lang laat wegschrijven naar je tabellen, dit kan binnen no time enorm groot worden.
    • Guys als eerste echt bedankt voor jullie uitgebreide informatie.

      Naar mijn weten gebruik ik PDO goed (ik heb geen opleiding tot programmeur gevolgd) Maar als ik een query maak zit dat er ongeveer zo uit.


      Source Code

      1. $OnlineUsers = $db->query('SELECT * FROM users WHERE online > :now', array(':now' => $timeOnline));
      Ook heb ik vandaag iemand betrapt op vals spelen, en ik heb wel logs alleen niet van errors... Heb ook eigenlijk geen idee hoe ik mijn php errors kan weg schrijven naar mijn database? :-o (Dit ga ik ff uitzoeken!)

      Graag kom ik met een van jullie in gesprek (Liefst via whatsapp of skype) om over de beveiliging te praten. Ik merk wel dat dit stukje minder goed door mij is uitgevoerd omdat ik mezelf hier nooit op heb gefocust...

      Nogmaals bedankt voor jullie reacties, ik zal jullie even een prive bericht sturen vandaag!
      Wil jij meer klanten voor jouw bedrijf? Je omzet verhogen binnen NO time!
      Stuur mij een bericht en we bespreken jouw mogelijkheden om te groeien!
      ictscripters.com/Thread/24756-Meer-Omzet-Meer-Klanten/

      Eigenaar van
      Online Marketing & Webdesign - itsucceeds.nl/
      Gaming Plaform - onetwogaming.nl/
      Banditi - https://banditi.nl/
      Criminas - criminas.nl/