插件分析|Yaklang SQL Injection 检测启发式算法

news2024/12/26 20:44:31

背景

sqlmap作为一个老牌的成熟的SQL漏洞扫描工具,在SQL注入自动化检测领域独占一壁江山。而现在的SQL注入检测往往是通过被动扫描检出,再通过sqlmap或者手工注入的方式进行进一步的漏洞确认和利用。在这种情形下,我们就需要开发一款应用于被动扫描场景下的SQL注入检测工具。而Yakit作为一个综合渗透测试平台,提供了用户友好型的API接口,可以很方便的实现SQL漏洞检测功能,和SQL注入启发式检测所需的核心功能。

sqlmap中一些概念的介绍

在sqlmap中有一个很重要的概念就是页面相似度,这个页面相似度基于python中自带的difflib模块

sqlmap 主要使用其SequenceMatcher这个类。以下是关于这个类的简单介绍:

This is a flexible class for comparing pairs of sequences of any type, so long as the sequence elements are hashable. The basic algorithm predates, and is a little fancier than, an algorithm published in the late 1980’s by Ratcliff and Obershelp under the hyperbolic name “gestalt pattern matching.” The idea is to find the longest contiguous matching subsequence that contains no “junk” elements (the Ratcliff and Obershelp algorithm doesn’t address junk). The same idea is then applied recursively to the pieces of the sequences to the left and to the right of the matching subsequence. This does not yield minimal edit sequences, but does tend to yield matches that “look right” to people.

 

简单来说这个类使用了 Ratcliff 和 Obershelp 提供的算法,匹配最长相同的字符串,设定无关字符(junk)。在实际使用中,他们应用最多的方法应该就是ratio()

根据文档中的描述,这个方法返回两段文本的相似度,相似度的算法如下:我们假设两段文本分别为text1text2,他们相同的部分长度总共为M,这两段文本长度之和为T,那么这两段文本的相似度定义为2.0 * M / T,这个相似度的值在 0 到 1.0 之间。

PageRatio 的小例子

我们通过上面的介绍,知道了对于abcdefgabce123我们计算的结果应该是2.0 * 4 / 14所以计算结果应该是:

WAF检测

在sqlmap中存在WAF检测,简单来说就是在请求中携带一些可能被WAF拦截的敏感字符。以下为sqlmap中检测目标主机潜在WAF的payload。

" AND 1=1 UNION ALL SELECT 1,NULL,'<script>alert(\"XSS\")</script>',table_name FROM information_schema.tables WHERE 2>1--/**/; EXEC xp_cmdshell('cat ../../../etc/passwd')#"

如果目标主机存在WAF,那返回的HTTP状态码和响应体和正常请求的响应状态码和响应体就会不同,结合PageRatio进行分析就能比较容易的判断目标主机是否存在WAF。这里WAF检测的主要目的是提示渗透测试人员谨慎使用payload。

转型分析

在实际的SQL注入测试和web开发中,经常遇到强制转型,在从请求中收到请求参数后往往会对其执行intval()或是类似的函数,也就是说对于开发者来说这个参数是被当成一个int来使用的,当我们尝试对该参数进行SQL注入时,显然输入的会是字符串,因此后端收到请求参数后在尝试对其进行类型转换的过程中就会报错。而这也意味着这个参数我们无法注入。参考sqlmap的注入流程图

通过将参数转型前置放在实际注入漏洞检测前可以省去无用的请求数,因为在检测到参数转型后就没必要继续接下来的检测了。

什么是启发式检测

相信用过sqlmap的读者都注意到sqlmap在扫描时会提示heuristic (basic) test shows that GET parameter 'xxx' might (not) be injectable提示启发式检测表明某个参数似乎无法注入。那么这个所谓的启发式检测的原理是什么呢。我们在刚学SQL注入的时候,都会先学习去先去寻找闭合SQL语句的符号,再通过闭合外的内容形成逃逸,从而执行我们输入的SQL语句。而这个启发式检测就是寻找SQL语句闭合方式的过程,它会根据参数类型,例如数字型和字符串型,采取不同的闭合方式尝试,例如对于数字型参数采用无闭合的方式,对于字符串采取常见的单引号闭合去检测。在sqlmap中有一个常量

HEURISTIC_CHECK_ALPHABET = [`"`, `'`, `)`, `(`, `,`, `.`]

这个常量存储的就是常见的闭合符号。通过这种办法去猜测SQL语句的闭合边界,配合一定的Bool表达式,构成所谓的positive和negative请求,也就是语句条件为真和假的情况,如果positive请求和原请求的相似度一致,而negative和positive相似度不一致,那么很大概率这个参数就是存在注入的。这里之所以强调很大概率是因为,尽管对于两种条件的相似度不一致,我们现在还没有足够证据去实锤这个点就是存在SQL注入。表现在sqlmap中就是上文提示中的might (not) be injectable

进一步确认是否存在注入过程中的优化

检测顺序优化

进一步确认就是去检测各种常见的SQL注入类型,诸如时间盲注(Time-Based Blind),有回显的报错注入(In-Band Error Based),有回显和无回显的联合注入(Inband/Outband Union)。在上一步我们通过启发式检测确认了闭合方式,现在在实际检测时我们要考虑检测的先后顺序,在这里可以做一个短路处理,比如我们首先检测报错注入,如果存在报错注入,那么后面的注入就可以通过报错注入的信息获取对应的SQL数据库类型,从而减少总请求数量。

检测方式优化

同时,我们要明确一点就是能不用sleep检测就不要用sleep进行检测,sleep检测在遇到性能较差的单线程服务器时可能会造成意想不到的阻塞和性能问题,同时在一些orm或者SQL框架中会对查询时间进行限制,一旦查询超时就会提前返回,从而导致漏检的问题出现。

所以我们尽可能要采用正则去匹配返回内容中的信息去匹配,这样不仅可以提高效率,也能保证结果精确性,同时在目标无回显的情况下保留sleep检测方法作为备用方案。

联合注入类型的检测

联合注入在常见的SQL注入类型中属于比较复杂的类型,在开发插件中借鉴了sqlmap中的做法,首先尝试使用order by进行检测,同时采用二分法进行检测。

在二分法无法检测,或者目标完全无回显的情况下,采用遍历法检测,即从lowerCountupperCount这个区间,构造Payload 为UNION SELECT (NULL,) * [COUNT]的请求,这些请求的对应 RATIO(与模版页面相似度)会汇总存储在ratios中,同时items中存储列数 和 ratio形成的tuple,经过一系列的算法,尽可能寻找出与众不同(正确猜到列数)的页面。

这里插件为了避免过于复杂,采取了UNION SELECT sleep(x)的方法进行最后的辅助检测。也就是说对于UNION注入,我们首先尝试运用ORDER BY进行检测,在其失效的情况下利用ratio去找最与众不同的页面,去判定行数,如果ratio还不起作用,便使用时间盲注的方式进行辅助检测。

使用演示

  1. 首先启动MITM劫持

  1. 勾选左侧插件以加载插件

  1. 将模式修改为被动日志界面,这样才能看到MITM插件的扫描输出,浏览器刷新,重新访问存在漏洞的靶场页面,可以看到输出信息

 

  1. 查看上方的风险与漏洞

可以看到检测到了时间盲注和联合注入

插件测试结果

pentesterlab的SQL靶场一共有9关,具体的测试报告如下

靶场案例是否检测出漏洞漏洞类型说明
example1✔️字符型单引号边界闭合,时间盲注,联合注入
example2✔️字符型单引号边界闭合,时间盲注,联合注入
exmaple3✔️字符型单引号边界闭合,时间盲注,联合注入
example4✔️数字型无边界闭合,时间盲注,联合注入
example5✔️数字型无边界闭合,时间盲注,联合注入
example6✔️数字型无边界闭合WAF规则为必须以数字结尾,此处需要手工进一步测试
example7✔️数字型无边界闭合,时间盲注,联合注入
example8未检出使用了` back tick作为闭合符
example9✔️ORDER BY无边界闭合

 

题外话

初入计算机行业的人或者大学计算机相关专业毕业生,很多因缺少实战经验,就业处处碰壁。下面我们来看两组数据:

  • 2023届全国高校毕业生预计达到1158万人,就业形势严峻;
  • 国家网络安全宣传周公布的数据显示,到2027年我国网络安全人员缺口将达327万。

一方面是每年应届毕业生就业形势严峻,一方面是网络安全人才百万缺口。

6月9日,麦可思研究2023年版就业蓝皮书(包括《2023年中国本科生就业报告》《2023年中国高职生就业报告》)正式发布。

2022届大学毕业生月收入较高的前10个专业

本科计算机类、高职自动化类专业月收入较高。2022届本科计算机类、高职自动化类专业月收入分别为6863元、5339元。其中,本科计算机类专业起薪与2021届基本持平,高职自动化类月收入增长明显,2022届反超铁道运输类专业(5295元)排在第一位。

具体看专业,2022届本科月收入较高的专业是信息安全(7579元)。对比2018届,电子科学与技术、自动化等与人工智能相关的本科专业表现不俗,较五年前起薪涨幅均达到了19%。数据科学与大数据技术虽是近年新增专业但表现亮眼,已跻身2022届本科毕业生毕业半年后月收入较高专业前三。五年前唯一进入本科高薪榜前10的人文社科类专业——法语已退出前10之列。

“没有网络安全就没有国家安全”。当前,网络安全已被提升到国家战略的高度,成为影响国家安全、社会稳定至关重要的因素之一。 

网络安全行业特点

1、就业薪资非常高,涨薪快 2021年猎聘网发布网络安全行业就业薪资行业最高人均33.77万!

2、人才缺口大,就业机会多

2019年9月18日《中华人民共和国中央人民政府》官方网站发表:我国网络空间安全人才 需求140万人,而全国各大学校每年培养的人员不到1.5W人。猎聘网《2021年上半年网络安全报告》预测2027年网安人才需求300W,现在从事网络安全行业的从业人员只有10W人。

行业发展空间大,岗位非常多

网络安全行业产业以来,随即新增加了几十个网络安全行业岗位︰网络安全专家、网络安全分析师、安全咨询师、网络安全工程师、安全架构师、安全运维工程师、渗透工程师、信息安全管理员、数据安全工程师、网络安全运营工程师、网络安全应急响应工程师、数据鉴定师、网络安全产品经理、网络安全服务工程师、网络安全培训师、网络安全审计员、威胁情报分析工程师、灾难恢复专业人员、实战攻防专业人员…

职业增值潜力大

网络安全专业具有很强的技术特性,尤其是掌握工作中的核心网络架构、安全技术,在职业发展上具有不可替代的竞争优势。

随着个人能力的不断提升,所从事工作的职业价值也会随着自身经验的丰富以及项目运作的成熟,升值空间一路看涨,这也是为什么受大家欢迎的主要原因。

从某种程度来讲,在网络安全领域,跟医生职业一样,越老越吃香,因为技术愈加成熟,自然工作会受到重视,升职加薪则是水到渠成之事。

黑客&网络安全如何学习

今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。

 1.学习路线图 

 攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。

2.视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础知识等,都是网络安全入门必知必会的学习内容。

(都打包成一块的了,不能一一展开,总共300多集)

因篇幅有限,仅展示部分资料,需要保存下方图片,微信扫码即可前往获取

3.技术文档和电子书

技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。 

 因篇幅有限,仅展示部分资料,需要保存下方图片,微信扫码即可前往获取

4.工具包、面试题和源码

“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。 

 还有我视频里讲的案例源码和对应的工具包,需要的话也可以拿走。

因篇幅有限,仅展示部分资料,需要保存下方图片,微信扫码即可前往获取

最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。

这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。

参考解析:深信服官网、奇安信官网、Freebuf、csdn等

内容特点:条理清晰,含图像化表示更加易懂。

内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…

 因篇幅有限,仅展示部分资料,需要保存下方图片,微信扫码即可前往获取 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1846472.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ATFX Connect四度加冕!荣膺2024最佳机构业务经纪商奖

近期&#xff0c;知名经纪商ATFX凭借在公益、科技、教育及媒体领域的一系列创新营销举措&#xff0c;掀起一波营销热潮&#xff0c;品牌联动效应显著。日前&#xff0c;ATFX又以实力而赢得一项新荣誉。全球知名媒体Holiston Media举办的2024环球金融大奖 (Global Forex Awards …

10个超好看的 404 页面(附源码)

今天来分享 10 个超好看的 404 页面&#xff0c;带动画效果。 代码&#xff1a;https://codepen.io/AsyrafHussin/pen/KxWRrK 代码&#xff1a;https://codepen.io/salehriaz/pen/erJrZM 代码&#xff1a;https://codepen.io/andrew-lawendy/pen/deOpMZ 代码&#xff1a;https…

如何减轻大语言模型中的幻觉?

ChatGPT、LLaMA 和 Mistral 等大型语言模型 (LLMs) 是强大的自然语言处理 (NLP) 工具&#xff0c;能够为各种应用生成流畅且连贯的文本。然而&#xff0c;他们也有一个主要缺点&#xff1a;他们倾向于产生幻觉&#xff0c;而这些事实或细节不受输入或现实世界的支持。这可能会导…

《传感器系列》温度传感器

温度传感器是一种能够测量温度并将温度信号转换为电信号或其他可输出信号的装置。 它在众多领域都有广泛应用&#xff0c;比如&#xff1a; - 工业生产&#xff1a; 用于监测生产过程中的温度&#xff0c;确保生产工艺的正常进行和产品质量的稳定。 - 智能家居&#xff1a; …

PCB设计中的via孔和pad孔

原文出自微信公众号【小小的电子之路】 在PCB设计过程中&#xff0c;经常会提到via孔和pad孔&#xff0c;下面就简单介绍一下二者的区别。 via称为过孔&#xff0c;主要起到电气连接的作用&#xff0c;用于网络在不同层的导线之间的连接。PCB设计中一般做盖油处理。 via孔 vi…

Kotlin 中的可见修饰符

Java 和 Kotlin 中的可见修饰符&#xff1a; Java&#xff1a;public、private、protected 和 default(什么都不写)&#xff1b;Kotlin&#xff1a;public、private、protected 和 internal&#xff1b; 比较&#xff1a; 对于 public 修饰符&#xff1a;在 Java 和 Kotlin 中…

Linux网络 - 再谈、详谈UDP和TCP协议

文章目录 前言预备netstatpidofcat /etc/services 一、UDP协议UDP协议端格式UDP的缓冲区基于UDP的应用层协议 二、TCP协议1.TCP协议段格式确认应答(ACK)机制三次握手疑问1 最后一次客户端发给服务端的ACK请求怎么保证服务端能够收到&#xff1f; 四次挥手疑问2 为什么挥手是四次…

openssl 命令行生成密钥对,生成hash,PSS填充签名,校验

生成密钥对 openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:4096 openssl rsa -pubout -in private_key.pem -out public_key.pem将源文件data.txt生成hash值&#xff08;sha-256&#xff09; openssl dgst -sha256 -binary data.txt > d…

利用LabVIEW项目管理和组织LabVIEW应用程序

如何利用LabVIEW项目管理和组织LabVIEW应用程序&#xff0c;提供了关于文件定义、磁盘上的文件组织、LabVIEW项目浏览器、交叉链接和相关资源的建议。这些推荐在开发前就应建立&#xff0c;以确保应用程序能扩展到大量VIs并适应多开发者环境。 目录 定义和识别应用程序文件 磁…

第106天:权限提升-WIN 系统AD域控NetLogonADCSPACKDCCVE 漏洞

目录 案例一&#xff1a;WIN-域控提权-CVE-2014-6324 案例二&#xff1a;WIN-域控提权-CVE-2020-1472 案例三&#xff1a;WIN-域控提权-CVE-2021-42287 案例四&#xff1a;WIN-域控提权-CVE-2022-26923 案例一&#xff1a;WIN-域控提权-CVE-2014-6324 首先先部署域控 项目…

神经阻滞术——慢性腰痛、颈痛与关节痛治疗的新选择

北京精诚博爱医院所实施的神经阻滞术是一种针对患者局部疼痛治疗手段&#xff0c;通过向特定部位注射局麻药或其他特定药物&#xff0c;来暂时性地阻断神经传导&#xff0c;进而达到减轻或消除疼痛的目的。这种疗法在慢性腰痛、颈痛或关节痛等常见疼痛疾病的治疗中&#xff0c;…

案例分享:同为科技与军工项目合作

国防数字化建设发展&#xff0c;同为科技提供智能PDU电源管理器系列产品与服务 项目要求描述&#xff1a; 竖装智能PDU电源管理器 63A输入 2P空气开关 SNMP协议智能型表头 3米310平方阻燃A级线缆 监测总输入电压、总负载电流、总负载视在功率、有功功率、无功功率、总负载…

构建有效的财务规划合作伙伴关系

在这个日益注重分类、定义和正规化的时代&#xff0c;财务规划与分析作为企业环境中发展最快的功能之一&#xff0c;已经从典型的数据管理角色逐步演变成企业框架中必不可少的身份。与其他新兴趋势一样&#xff0c;财务规划也开始采用更加创新的理念来吸引高技能投资&#xff0…

每个程序员都要有 3 份收入!

见字如面&#xff0c;我是军哥&#xff01; 现在这个就业环境&#xff0c;是真的冷&#xff0c;找工作也确实相比前几年难太多。 程序员人群要想没有收入危机&#xff0c;未来的生活压力&#xff0c;我的建议是一定要提前构建自己的三份收入&#xff01; 哪三份收入呢&#xff…

帮企商城PC端分销商城企业网站源码系统 带源代码包+搭建部署教程

系统概述 帮企商城 PC 端分销商城企业网站源码系统是一款集企业网站建设、商品管理、分销体系、支付系统等多种功能于一体的综合性平台。它为企业提供了一个全面的电子商务解决方案&#xff0c;帮助企业快速搭建自己的在线商城&#xff0c;并实现高效的运营和管理。 该系统采…

短视频批量下载工具源码逻辑解析(软件)

短视频批量提取第三篇关于视频提取下载的思路 一&#xff1a;概述 因为上一篇不完整&#xff0c;这里其实就是补充第二篇关于源码思路。这里不针对视频评论的提取&#xff0c;只对视频分享链接批量导入下载进行思路解析 二&#xff1a;难点 通常情况下如果直接访问详情页进行…

Hi3861 OpenHarmony嵌入式应用入门--LiteOS Thread

目录 Thread API 主要接口说明 测试代码编写 代码分析 hi3861使用的实时系统主要是基于Huawei LiteOS-M&#xff0c;这是华为针对物联网领域推出的轻量级物联网操作系统内核。LiteOS-M是Huawei LiteOS的一个分支&#xff0c;专为IoT领域构建&#xff0c;主要面向没有MMU&am…

永磁同步电机FOC调试记录(一)

永磁同步电机FOC调试记录&#xff08;一&#xff09; 前言架构硬件架构软件架构 调试过程元器件选型开环控制编码器调试速度采样电流检测中断优先级的确定电流环部分烧坏IPM速度-电流环位置-电流环 结语 前言 这是我个人从零开始尝试永磁同步电机&#xff08;PMSM&#xff09;…

别只看影响因子了!又1本毕业神刊偷偷被On Hold了!请谨慎投递

【SciencePub学术】昨日&#xff0c;2023JCR正式发布&#xff0c;现在影响因子的话题依旧是“热搜第一”。大家可以根据自己的研究方向&#xff0c;参考最新发布的JCR报告进行投稿选刊。若大家对于投稿选刊方面有任何问题&#xff0c;都可联系张老师为您解答&#xff01; 相关…

Qt源码阅读笔记:初步了解QtCore模块目录结构

Qt框架是一个跨平台的C应用程序框架&#xff0c;广泛用于开发图形用户界面程序以及用于无界面后台操作的工具和服务器。它由多个模块组成&#xff0c;其中QtCore模块提供了核心的非GUI功能。 QtCore 提供了元对象系统&#xff0c;扩展了c 在元对象系统的基础上&#xff0c;qt又…