YesWiki/yeswiki

ActionBuilder et OSSEC ne font pas bon ménage !

Closed this issue · 6 comments

Type of issue (keep only one) / Type de demande (ne garder qu'une ligne)
Bug / Bogue

Description
Pour ceux qui ne connaissent pas OSSEC est un détecteur d'intrusion pour les serveurs. Nous l'utilisons sur nos serveurs et nous avons remarqué une requête en particulier avec le ActionBuilder qui nous supprime directement l'accès au serveur pendant une dizaine de minutes.

Voici comment le reproduire qd on a une instance OSSEC de configuré :

  • éditer une page
  • cliquer dans la barre du haut sur “Composant” / “Mise en forme”, puis choisir "Encadré”
  • aller sur "Couleur" et changer de couleur

C'est à ce moment que OSSEC nous jette.

En regardant de plus près les logs d'OSSEC voici la requête posant problème : /communs/?root/render&content=%7B%7Bpanel%20title%3D%22Titre%20de%20mon%20encadr%C3%A9%22%20%7D%7DTexte%20de%20votre%20encadr%C3%A9%20%C3%A0%20modifier%20par%20la%20suite%0A%7B%7Bend%20elem%3D%22panel%22%7D%7D : Rule: 31106 (level 6) -> 'A web attack returned code 200 (success).' (Referer : https://wiki.jardiniersdunous.org/communs/?PagePrincipale/edit)

Voici les suggestions de notre admin sys qui a reproduit la requête :
image (6)

  • Le paramètre root/render ne devrait pas contenir le mot root et semble ne servir à rien car il n’a pas de valeur (mais peut-être qu’il sert quand même sans valeur)
  • Le paramètre content qui devrait être envoyé en POST et non en GET car ça rallonge trop l’URL

Le paramètre root/render sert-il dans certains cas ? Pourait-on changer de nom de paramètre, le supprimer quand il n'est pas utilisé ? et passer la requête en POST ?

Vous auriez d'autres idées ?
@seballot @mrflos entre autres vu que vous connaissez bien cette partie...

Additionnal informations / Informations complémentaires
Doryphore 4.4.0 et précédentes

salut !

root il sert juste de placeholder comme non de page afin d'appeler le handler render. Peut etre maintenant y'a une route plus propre qui passe par ?api ?

En tout cas, le problème me semble plus lié à OSSEC, je vois pas en quoi c'est problématique pour un site web d'avoir une url avec "root" dedans et un params un peu long en "GET". C'est plutot sur les règles de config de OSSEC qu'il faudrait revoir non?

A+

merci pour ton retour.

oui t'as raison, je n'avais pas bien regardé la requête... en effet, c'est simplement le nom de page, le "root" m'avait perturbé... mais ça aurait pu être PagePrincipale. Je ne savais d'ailleurs pas que les handlers fonctionnaient avec des noms arbitraires.

et puis j'ai essayé avec un autre nom que root, et ça se met aussi en sécurité. Je pense plus que c'est dû à la longueur de content (le render fonctionne bien avec des actions plus courtes) et vu que c'est du code yeswiki, il doit croire à une injection genre SQL injection.

bref, je vais voir pour qu'on ajoute plutôt une exception à OSSEC pour gérer le cas.

Merci @seballot pour ton expertise !

Le souci vient du mot clé root dans l'URL. Voici la règle OSSEC:

<!-- Attempt to do directory transversal, simple sql injections,
      -  or access to the etc or bin directory (unix). -->
    <url_pcre2>%027|%00|%01|%7f|%2E%2E|%0A|%0D|\.\./\.\.|\.\.\\\.\.|echo;|</url_pcre2>
    <url_pcre2>cmd\.exe|root\.exe|_mem_bin|msadc|/winnt/|/boot\.ini|</url_pcre2>
    <url_pcre2>/x90/|default\.ida|/sumthin|nsiislog\.dll|chmod%|wget%|cd%20|</url_pcre2>
    <url_pcre2>exec%20|\.\./\.\.//|%5C\.\./%5C|\./\./\./\./|2e%2e%5c%2e|\\x5C\\x5C</url_pcre2>
    <description>Common web attack.</description>

Si j'autorise le mot clé root, j'expose le serveur (qui héberge d'autres sites non YesWiki) à ce type d'attaque.
Serait-il possible de remplacer root par un autre mot clé ou c'est compliqué ?

Merci !

oui c'est facile j'ai fait un fix sur doryphore-dev

et puis j'ai essayé avec un autre nom que root, et ça se met aussi en sécurité.

merci @seballot, c'est juste que ça ne change rien. Je viens de réessayer au cas où avec ton fix mais non, pas mieux.

J'imagine qu'une exception ajoutée à OSSEC pour les urls contenant ?root/render& ou ?wiki/render& devraient suffire.

Merci @seballot !
Du coup, on laisse tomber et je rajouterai un exception OSSEC, mais dans tous les cas c'est bien d'avoir enlevé ce mot clé qui fait partie des mots clés suspects, car il n'y a pas que OSSEC comme logiciel de blockage des tentatives de piratage.