Ankündigung

Einklappen
Keine Ankündigung bisher.

Manipulierte Hexa-werte erkennen und ersetzen...

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Manipulierte Hexa-werte erkennen und ersetzen...

    Hallo Forum,

    ich bin dabei die Sicherheit meines Systems zu überarbeiten. Dazu nehme ich mir gerade diese Liste zur Hilfe....
    Somit besteht meine erste Aufgabe darin, erst einmal die klare Zeichen herzustellen (decoden).

    Bin da auch schon recht weit, hätte aber ne kleine Frage zur Sicherheit.

    PHP-Code:
    $desc $_POST['description'];

    // whitlist of html-elements
    // 'abbr','acronym','cite','code','caption','dd','del','dfn','dl','dt','em','ins','kbd','pre','sub','sup','img',
    $tagWithlist = ['style','script','a','b','blockquote','br','div','font','h1','h2','h3','h4','h5','h6','i','li','ol','p','s','span','strike','strong','table','tbody','td','tfoot','th','thead','tr','tt','u','ul'];

    $desc preg_replace('/^[ \t]*[\r\n]+/m'''$desc); // remove blank lines

    // as first find correct codes and replace to plain ("&<>')
    $desc urldecode(html_entity_decode($desc));

    // remove manipulation on NCR-decimal with added zeros (zeros after &# will be removed, then we can run the next filter)
    // $desc = preg_replace('/(&#X|&#x|&#)(0*)([A-z,0-9]{2})/i', '$1$3', $desc); // beachtet nicht ob Semikolon am Ende ist oder nicht
    $desc preg_replace('/(&#X|&#x|&#)(0*)([A-z,0-9]*)(;|)/i''$1$3;'$desc); // NCR hex und dezimal mit und ohne endendes Komma

    // replace case-insensitive to normalize this codes
    $desc str_ireplace(['&quot''&quot;;'], '&quot;'$desc); // "
    $desc str_ireplace(['&amp''&amp;;'], '&amp;'$desc); // &
    $desc str_ireplace(['&lt''&lt;;'], '&lt;'$desc); // <
    $desc str_ireplace(['&gt''&gt;;'], '&gt;'$desc); // >
    $desc str_ireplace(['&apos''&apos;;'], '&apos;'$desc); // '
    $desc iconv('ASCII''UTF-8//IGNORE'$desc); // decode ascii

    // is case-insensitive replacecing finished we can replace codes again to plain chars
    $desc html_entity_decode($desc);
    $desc htmlspecialchars_decode($descENT_HTML5);
    // $desc ist nun leserlich 
    Funktioniert soweit einwandfrei, habe aber noch folgende Zeichen die noch immer nicht umgewandelt wurden:
    Code:
    \0075\0072\006C\0028'\006a\0061\0076\0061\0073\0063\0072\0069\0070\0074\003a\0061\006c\0065\0072\0074\0028.1027\0058.1053\0053\0027\0029'\0029
    \x3c
    \x3C
    \u003c
    \u003C
    Wäre schön wenn man mir da noch fix helfen könnte, weshalb die nicht umgewandelt wurden, fehlendes Semikolon oder wieder ganz ne andere Formatierung/Sprache?
    Ansonsten hätte ich noch ne Frage was mit den den codierten zeichen passiert mitten im Zeilen Umbruch?

    Code:
    <IMG SRC=&#0000106&#0000097&#0000118&#0000097&#0000115&#0000099&#0000114&#0000105&#0000112&#0000116&#0000058&#0000097&
    #0000108&#0000101&#0000114&#0000116&#0000040&#0000039&#0000088&#0000083&#0000083&#0000039&#0000041>
    wurde dann zu das hier:
    Code:
    <IMG SRC=javascript:alert(
    &#39;XSS&#39;)>
    Also sollte das Script eigentlich zuverlässig arbeiten oder? Denn es wurde ja trotz unterbrochener Zeichenfolge decodiert bzw. das & rutschte nach unten, das Zeichen wäre ein ' muss noch schauen wie ich mit diesem verfahre, aber ich denke werde es wohl auch decodieren müssen damit ich entsprechend tags und scripte hinterher besser raus filtern kann!?

    MfG: Paykoman

  • #2
    Was heißt Sicherheit? Was ist die konkrete Zielsetzung hier?

    Kommentar


    • #3
      Zitat von Paykoman Beitrag anzeigen
      ich bin dabei die Sicherheit meines Systems zu überarbeiten. Dazu nehme ich mir gerade diese Liste zur Hilfe....
      Somit besteht meine erste Aufgabe darin, erst einmal die klare Zeichen herzustellen (decoden).
      Was hast das mit Sicherheit zu tun? Sieht für mich so aus, als werden da bunt irgendwelche Funktionen zusammengewürfelt ohne ein definiertes Ziel zu haben. Diese ganzen decode- und replace-Geschichten bereiten mir Bauchweh. Würd mich nicht wundern, wenn da mal Datenmüll rauskommt. Das ganze Verhalten von diesem wirren Code ist schwer überschau- und nachvollziehbar. Das ist so, als würde man beim Kochen alle Gewürze, in deren namen der Buchstabe "R" vorkommt, zusammenmischen. Das Ergebnis ist dann sehr experimentell und wahrscheinlich ungenießbar.

      Kommentar

      Lädt...
      X