diff --git a/core/command/config/listconfigs.php b/core/command/config/listconfigs.php
new file mode 100644
index 0000000000000000000000000000000000000000..d25495a55d13274da7d2a5267a00d8b0aa207c4e
--- /dev/null
+++ b/core/command/config/listconfigs.php
@@ -0,0 +1,103 @@
+<?php
+/**
+ * @author Joas Schilling <nickvergessen@owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OC\Core\Command\Config;
+
+use OC\Core\Command\Base;
+use OC\SystemConfig;
+use OCP\IAppConfig;
+use Symfony\Component\Console\Input\InputArgument;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+
+class ListConfigs extends Base {
+	/** * @var SystemConfig */
+	protected $systemConfig;
+
+	/** @var IAppConfig */
+	protected $appConfig;
+
+	/**
+	 * @param SystemConfig $systemConfig
+	 * @param IAppConfig $appConfig
+	 */
+	public function __construct(SystemConfig $systemConfig, IAppConfig $appConfig) {
+		parent::__construct();
+		$this->systemConfig = $systemConfig;
+		$this->appConfig = $appConfig;
+	}
+
+	protected function configure() {
+		parent::configure();
+
+		$this
+			->setName('config:list')
+			->setDescription('List all configs')
+			->addArgument(
+				'app',
+				InputArgument::OPTIONAL,
+				'Name of the app ("system" to get the config.php values, "all" for all apps and system)',
+				'system'
+			)
+		;
+	}
+
+	protected function execute(InputInterface $input, OutputInterface $output) {
+		$app = $input->getArgument('app');
+		switch ($app) {
+			case 'system':
+				$configs = $this->getSystemConfigs();
+			break;
+
+			case 'all':
+				$apps = $this->appConfig->getApps();
+				$configs = [];
+				foreach ($apps as $appName) {
+					$configs[$appName] = $this->appConfig->getValues($appName, false);
+				}
+				$configs['system'] = $this->getSystemConfigs();
+			break;
+
+			default:
+				$configs = $this->appConfig->getValues($app, false);
+		}
+
+		$this->writeArrayInOutputFormat($input, $output, $configs);
+	}
+
+	/**
+	 * Get the system configs
+	 * @return array
+	 */
+	protected function getSystemConfigs() {
+		$keys = $this->systemConfig->getKeys();
+
+		$configs = [];
+		foreach ($keys as $key) {
+			$value = $this->systemConfig->getValue($key, new \Exception('Not set'));
+			if (!($value instanceof \Exception)) {
+				$configs[$key] = $value;
+			}
+		}
+
+		return $configs;
+	}
+}
diff --git a/core/register_command.php b/core/register_command.php
index 925d3d8ade1e59c896a7ae3a3d1ca58279b8133e..b4c3576bb4dc18e6fdf7db9ea783baf3f7307b0c 100644
--- a/core/register_command.php
+++ b/core/register_command.php
@@ -40,6 +40,8 @@ if (\OC::$server->getConfig()->getSystemValue('installed', false)) {
 	$application->add(new OC\Core\Command\Background\WebCron(\OC::$server->getConfig()));
 	$application->add(new OC\Core\Command\Background\Ajax(\OC::$server->getConfig()));
 
+	$application->add(new OC\Core\Command\Config\ListConfigs(\OC::$server->getSystemConfig(), \OC::$server->getAppConfig()));
+
 	$application->add(new OC\Core\Command\Db\GenerateChangeScript());
 	$application->add(new OC\Core\Command\Db\ConvertType(\OC::$server->getConfig(), new \OC\DB\ConnectionFactory()));