Question légèrement peu orthodoxe ici:
J’essaie actuellement de casser un Apache avec une poignée de modules personnalisés.
Ce qui a donné naissance aux tests est qu’Apache transfère en interne les requêtes jugées trop volumineuses (par exemple, une corbeille de 1 Mo) vers les modules connectés, les forçant à gérer les données inutiles et le manque de manipulation des modules personnalisés. monter en flammes. Aïe, aïe, aïe.
Heureusement, ce problème particulier a été résolu, mais la question se pose de savoir s’il existe ou non d’autres vulnérabilités similaires.
En ce moment, j’ai un outil à ma disposition qui me permet d’envoyer une requête HTTP brute au serveur (ou plutôt des données brutes via une connexion TCP établie qui pourrait être interprétée comme une requête HTTP si elle en suivait une, par exemple “GET … “) et j’essaie de trouver d’autres idées. (Les attaques de niveau TCP comme Slowloris et Nkiller2 ne sont pas mon objective pour le moment.)
Quelqu’un at-il quelques idées intéressantes sur la façon de confondre les modules personnalisés du serveur avec l’auto-immolation des serveurs?
Je ne me considère pas comme un très bon testeur (je le fais par nécessité et par manque de main-d’œuvre; je n’ai malheureusement même pas une compréhension plus simple des internes d’Apache qui m’aiderait), c’est pourquoi je J’espère une réponse perspicace ou deux ou trois. Peut-être certains d’entre vous ont-ils effectué des tests similaires pour vos propres projets?
(Si stackoverflow n’est pas le bon endroit pour cette question, je m’excuse. Je ne sais pas où le mettre.)
Selon les autres modules que vous avez connectés, et quels autres éléments les activent (ou s’agit-il uniquement de requêtes trop volumineuses?), Vous pouvez essayer certaines des solutions suivantes:
Apache est l’un des projets logiciels les plus rigoureux de la planète. Trouver une vulnérabilité dans HTTPD d’Apache ne serait pas une mince affaire et je vous recommande de vous faire les dents sur des proies plus faciles. Par comparaison, il est plus courant de voir des vulnérabilités dans d’autres HTTPD tels que celui-ci dans Nginx que j’ai vu aujourd’hui (pas de blague). Il y a eu d’autres vulnérabilités de divulgation de code source qui sont très similaires, je regarderais ceci et en voici une autre . lhttpd a été abandonné sur sf.net pendant presque une décennie et il existe des débordements de tampons connus qui l’affectent, ce qui en fait une application amusante à tester.
Lorsque vous attaquez un projet, vous devez examiner quel type de vulnérabilités ont été détectées par le passé. Il est probable que les programmeurs commettront les mêmes erreurs encore et encore et souvent, des modèles apparaissent. En suivant ces modèles, vous pouvez trouver plus de défauts. Vous devriez essayer de rechercher des bases de données de vulnérabilités telles que la recherche de Cist par Nist . Une chose que vous verrez est que les modules Apache sont le plus souvent compromis.
Un projet comme Apache a été lourdement fuzzé. Il existe des frameworks de fuzzing tels que Peach . Peach vous aide à créer des problèmes de plusieurs manières, notamment en vous fournissant des données de test désagréables. Fuzzing n’est pas une très bonne approche pour les projets matures. Si vous optez pour cette voie, je ciblerais les modules Apache avec le moins de téléchargements possible. (Les projets d’avertissement avec des téléchargements très faibles peuvent être endommagés ou difficiles à installer.)
Lorsqu’une entreprise s’inquiète de la sécurité, elle paie souvent beaucoup d’argent pour un outil d’parsing automatisé de sources tel que Coverity. Le Department Of Homeland Security a donné à Coverity une tonne d’argent pour tester des projets open source et Apache en est un . Je peux vous dire de première main que j’ai trouvé un débordement de tampon avec fuzzing que Coverity n’a pas détecté. La couverture et d’autres outils d’parsing du code source, tels que les Rats open source , génèrent beaucoup de faux positifs et de faux négatifs, mais ils aident à réduire les problèmes qui affectent une base de code.
(Lorsque j’ai lancé RATS pour la première fois sur le kernel Linux, j’ai failli tomber en panne parce que mon écran répertoriait des milliers d’appels à strcpy () et strcat (), mais lorsque je travaillais avec du texte statique, ce qui est sûr.)
La recherche de vulnérabilités dans un développement d’exploitation est très amusante . Je recommande d’exploiter les applications PHP / MySQL et d’explorer The Whitebox . Ce projet est important car il montre que certaines vulnérabilités réelles ne peuvent être trouvées que si vous lisez manuellement le code ligne par ligne. Il a également des applications réelles (un blog et une boutique) très vulnérables aux attaques. En fait, ces deux applications ont été abandonnées en raison de problèmes de sécurité. Un fuzzer d’applications Web comme Wapiti ou acuentix violera ces applications et d’autres. Il y a un truc avec le blog. Une nouvelle installation n’est pas vulnérable à beaucoup. Vous devez utiliser l’application un peu, essayez de vous connecter en tant qu’administrateur, créez une entrée de blog et parsingz-la. Lorsque vous testez une application d’application Web pour une injection SQL, assurez-vous que le rapport d’erreur est activé. Dans php, vous pouvez définir display_errors=On
dans votre php.ini.
Bonne chance!