扫描网段,确认靶机ip:
扫描端口及服务:
扫描服务:
访问80:
尝试万能密码:
Admin和root都提示密码错误:
遍历目录,发现/database.sql:
访问,发现账户:
尝试使用john为账户,密码框使用万能密码:
成功登陆,且发现用户名及密码:
尝试ssh到靶机:
查询资料,发现OpenSSH 8.8 版本开始默认禁用了 ssh-rsa客户端和服务端 SSH 实现版本差太远时有可能出现上述问题
解决方法:
- 执行ssh时添加如下参数
ssh -o HostkeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa username@xx.xx.xx.xx
- 修改ssh/config文件,添加以下内容
Host old-host
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
成功登陆,但命令无法执行:
使用echo命令突破shell限制:
echo os.system('/bin/bash'),并尝试直接提权,失败
查看系统内核:
查询哪些进程具有root权限,发现mysql具有root权限:
ps -ef | grep root
/var/www目录下发现了数据库连接文件,查看连接文件,并发现root用户为空密码:
使用root账户登录mysql:
mysql -u root -p
Udf提权
UDF:(User Defined Function) 用户自定义函数,MySQL数据库的初衷是用于方便用户进行自定义函数,方便查询一些复杂的数据,同时也有可能被攻击者利用,使用udf进行提权。
提权原理:攻击者通过编写调用cmd或者shell的共享库文件(window为.dll,linux为.so),并且导入到一个指定的文件夹目录下,创建一个指向共享库文件的自定义函数,从而在数据库中的查询就等价于在cmd或者shell中执行命令。
执行过程:本质上还是利用了MySQL能够执行系统命令的特点。具体过程如下
(1)攻击者编写一些可以调用cmd或者shell的共享库文件(window为.dll,linux为.so),将共享库导入指定的函数目录中。
(2)在MySQL中创建指向共享库文件的自定义函数。
(3)通过刚刚创建的函数执行系统命令,实现提权。
查看udf表:
sys_exec命令是MySQL中的一个功能,允许用户在MySQL环境中执行系统命令
命令使用方式:sys_exec(command)
使用sys_exec命令将john账户添加到admin组中:
select sys_exec("usermod -a -G admin john");
usermod:这是一个用于修改用户账户的命令行工具。
-a:表示“附加”选项,通常与 -G 一起使用。它确保将用户添加到指定的组时不会移除用户已经属于的其他组。
-G:指定用户将要添加的组。
admin:这是用户将被添加到的组的名称。在这个例子中,用户将被添加到 admin 组。
john:这是需要被修改的用户名。用户名是 john。
返回靶机,提权,提权成功: