近整理了一些奇安信&华为大佬的课件资料+课件笔记+面试课题,想要的可以私信自取,无偿赠送给粉丝朋友~
文章来源 :https://www.wljslmz.cn/1109.html
SQL 注入 (SQLi) 是一种可以访问敏感或私有数据的隐蔽攻击形式,它们最早是在上世纪末被发现的,尽管它们的年龄很大,但它们经常被用作黑客工具包中的一种有效技术。今天,给大家介绍一下顶级 SQLi 检测工具。
有很多 SQLi 检测工具,其中许多是开源的,可在 GitHub 上找到,除了专门的 SQLi 检测工具外,还有更大的套件和专有软件包将 SQLi 作为其整体漏洞检测功能的一部分。
Netsparker是一个 Web 漏洞管理解决方案,其中包括 SQLi 检测作为其众多功能之一,还专注于可扩展性、自动化和集成。
该套件围绕 Web 漏洞扫描器构建,并且可以与第三方工具集成,操作员不需要熟悉源代码。该公司还提供了一个SQL 注入备忘单来帮助缓解工作。
Netsparker 平台使用基于证明的扫描技术来识别和确认漏洞,指示绝对不是误报的结果,除了 SQL 注入之外,它还可以识别 Web 应用程序、Web 服务和 Web API 中的跨站点脚本 (XSS) 和其他漏洞。
该平台还具有安全测试工具和报告生成器,并且可以集成到 DevOps 环境中,它检查 Apache、Nginx 和 IIS 等 Web 服务器,并支持基于 AJAX 和 JavaScript 的应用程序。
SQLMap是 GitHub 上提供的自动 SQLi 和数据库接管工具,这个开源渗透测试工具可以自动检测和利用 SQLi 漏洞或其他接管数据库服务器的攻击。
它包括一个检测引擎;进行渗透测试的几种方法;以及用于数据库指纹识别、数据提取、访问底层文件系统以及通过带外连接在操作系统 (OS) 上执行命令的工具。
jSQL Injection是一种基于 Java 的工具,可帮助 IT 团队从远程服务器中查找数据库信息,它是解决 SQLi 的众多免费、开源方法中的另一种。它支持 Windows、Linux 和 Mac 操作系统以及 Java 版本 11-17。
它是如此有效的 SQLi 威慑,以至于它包含在许多其他漏洞扫描和渗透测试产品和发行版中。这包括Kali Linux、Pentest Box、Parrot Security OS、ArchStrike和BlackArch Linux。
它还提供 33 个数据库引擎的自动注入,包括 Access、DB2、Hana、Ingres、MySQL、Oracle、PostgreSQL、SQL Server、Sybase 和 Teradata。它为用户提供了解决多种注入策略和流程的方法,并提供了用于 SQL 和篡改的脚本沙箱。
Havij是由一家伊朗安全公司开发的,它提供了一个图形用户界面 (GUI),并且是一个自动化的 SQLi 工具,支持多种 SQLi 技术,它在支持渗透测试人员发现网页漏洞方面具有特殊价值,虽然它主要适用于 Windows,但也有一些变通方法可以让它在 Linux 上运行。
Burp Suite中的 Web 漏洞扫描器使用 PortSwigger 的研究来帮助用户自动发现 Web 应用程序中的各种漏洞,例如,Burp Collaborator 识别其目标和外部服务器之间的交互,以检查传统扫描程序不可见的错误,例如异步 SQL 注入和盲目的服务器端请求伪造 (SSRF)。
Burp Scanner 中的爬网引擎位于 Burp Suite Enterprise Edition 和 Burp Suite Professional 等大型套件的核心,可消除跨站点请求伪造 (CSRF) 令牌、有状态功能以及过载或易变 URL 等障碍。其嵌入式 Chromium 浏览器呈现和抓取 JavaScript。爬行算法以与测试人员类似的方式建立其目标的配置文件。
Burp 还旨在处理动态内容、不稳定的互联网连接、API 定义和 Web 应用程序。此外,可以单独或按组选择扫描检查,并且可以保存自定义配置 - 例如仅报告出现在 OWASP Top 10 中的漏洞的扫描配置。
BBQSQL是一个基于 Python 的注入利用工具,它消除了编写自定义代码和脚本以解决 SQLi 问题的大量乏味。它主要用于处理更复杂的 SQL 注入漏洞。由于它是半自动的且与数据库无关,因此它简化了定制并且相对易于使用。
它还利用基于 Python 的工具来提高性能。用户提供数据,例如受影响的 URL、HTTP 方法和其他输入作为设置的一部分。他们还必须指定注入的去向,以及注入的语法。
Blisqy处理 HTTP 标头上基于时间的盲 SQL 注入。这种漏洞利用可通过盲 SQL 注入,对可打印的 ASCII 字符进行按位运算,从而从数据库中抽取慢速数据。它支持 MySQL 和 MariaDB 数据库。
由于它是用 Python 编写的,因此可以将其导入其他基于 Python 的脚本中。Blisqy 是一种快速有效的补偿网络延迟和其他延迟的方法,因为它的时间比较是动态的,并且在每次测试的运行时计算。
Invicti 的Acunetix将 SQL 注入测试作为其整体功能的一部分,即扫描基于 Web 的应用程序。它的多线程扫描程序可以在 Windows 和 Linux 上快速爬取数十万页。它识别常见的 Web 服务器配置问题,并且特别擅长扫描 WordPress。
它会自动创建所有网站、应用程序和 API 的列表,并使其保持最新状态。该工具还可以扫描 SPA、脚本繁重的网站以及使用 HTML5 和 JavaScript 构建的应用程序,并提供宏来自动扫描受密码保护和难以到达的区域。
Blind SQL Injection via Bit Shifting通过使用位移方法计算字符而不是猜测字符来执行 SQL 盲注入。位移位将位的位置向左或向右移动。例如,00010111 可以转换为 00101110。盲 SQL 模块每个字符需要七个或八个请求,具体取决于配置。
Damn Small SQLi Scanner (DSSS) 由 SQLMap 的创建者之一组成,是一个紧凑的 SQLi 漏洞扫描器,由不到 100 行代码组成。除了用作漏洞扫描器之外,该工具还强调其执行某些与占用大量代码的工具相同的任务的能力。
但是,正如其大小所预期的那样,它具有一定的局限性。例如,它只支持 GET 参数而不支持 POST 参数。
Leviathan的特点是工具的大规模审计集合。因此,它包含一系列用于服务发现、暴力破解、SQL 注入检测和运行自定义漏洞利用功能的功能。它内部包含了几个开源工具,包括masscan、ncrack和DSSS,可以单独使用,也可以组合使用。
此外,它还可以发现在特定国家或 IP 范围内运行的 FTP、SSH、Telnet、RDP 和 MySQL 服务。然后可以通过 ncrack 对发现的服务进行暴力破解。命令可以在受感染的设备上远程运行。针对 SQLi 漏洞,它可以在带有国家扩展名的网站上检测到它们。
NoSQLMap是一个可用于审计的 Python 工具。它通常用于 SQL 注入攻击的自动化,并用于发现NoSQL 数据库和使用 NoSQL 从数据库中披露或克隆数据的 Web 应用程序中的默认配置漏洞。
这个开源工具维护得很好,可以看作是 SQLMap 的表亲。顾名思义,NoSQL 解决了与关系数据库中使用的表格方法不同的数据模型。但是 NoSQL 数据库确实支持类似 SQL 的查询语言,因此受制于 SQLi。NoSQLMap 主要关注 MongoDB 和 CouchDB。未来的版本将扩大其曲目。
Tyrant SQL是一个基于 Python 的 GUI SQL 注入工具,类似于 SQLMap。它的 GUI 允许更大的简单性。这使得初学者更容易分析易受攻击的链接并确定弱点所在。
Whitewidow是另一个开源 SQL 漏洞扫描程序。由于它是自动化的,它可以快速运行一个长文件列表或从谷歌搜索潜在易受攻击的网站。
Whitewidow 还提供其他功能,例如自动文件格式化、随机用户代理、IP 地址、服务器信息和多 SQL 注入语法。该工具还提供了从其中启动 SQLMap 的能力。
然而,Whitewidow 与其说是一种补救工具,不如说是一种教育工具。它可以帮助用户了解漏洞是什么样的,但它依赖于 SQLMap 来获得更强大的 SQLi 检测功能。
Explo是一个基本工具,旨在以人类和机器可读的格式描述 Web 安全问题。它定义了一个请求/条件工作流,允许它在无需编写脚本的情况下利用安全问题。
因此,它可以解决复杂的漏洞,并以简单的可读和可执行格式共享它们。
结构化查询语言或 SQL 是一种在Microsoft SQL Server、Oracle、IBM DB2 和 MySQL 等关系数据库中大量使用的语言。由于数据库倾向于为企业托管敏感信息,恶意 SQL 注入可能导致敏感信息泄露、Web 内容修改和数据删除。
然后,SQLi 会利用基于 SQL 的应用程序中存在的漏洞。黑客将代码注入 SQL 查询,使他们能够添加、修改和删除数据库项目。
但受影响的不仅仅是数据库。SQLi 可以传播到连接到 SQL 数据库的 Web 应用程序和网站。根据开放 Web 应用程序安全项目 (OWASP),注入是 Web 应用程序最普遍的威胁。
SQLi 攻击执行恶意 SQL 查询,可用于绕过应用程序安全性,避免授权和身份验证登录和系统。攻击因数据库引擎的类型而异。最常见的变体包括基于用户输入的 SQLi、基于 cookie 的 SQLi、基于 HTTP 标头的 SQLi 和二阶 SQLi。
SQLi 的缓解和预防最初都是为了了解哪些应用程序可能易受攻击——这意味着任何与 SQL 数据库交互的网站。漏洞扫描是评估您可能面临风险的好方法。另一种方法是进行渗透测试。这本质上是试图闯入您的系统并找到任何可以利用的缺陷。
版权申明:内容来源网络,版权归原创者所有。除非无法确认,都会标明作者及出处,如有侵权,烦请告知,我们会立即删除并致歉!
创: K 合天智汇
这篇文章,将教大家基本的手工sql注入和绕过waf的知识;分享一个实例,为了效果建议读者自己去搭建环境,因为真实环境都不怎么理想。
1. sql注入的基础
2. sql注入绕过waf
3. sql注入一个绕过实例
手工sql注入的基础
基础注入,盲注注入(时间和bool),报错注入,联合注入(union)
推荐sql-labs资源这个练习平台,推荐《mysql注入天书pdf》
1.base(基础的语句注入)
我们利用该表可以进行一次完整的注入。以下为一般的流程。
1)猜数据库
2)猜某库的数据表
3)猜某表的所有列
4)获取某列的内容
2.union注入
union注入和基础的注入相差不大,只需将前面的数据置0,即没有那个指定字段即可;当然先要确定字段,下面的文章有分析
3. 时间注入
主要用到一些截断字符对数据库的字符进行判断
1)先试数据库的长度,当数字为6时发生了延时,说明数据库名共五个字符。
2)开始猜数据库的字(当发生延时,说明当前数据库第一个字母为m):
3)其他的数据只需修改查询语句即可
4. bool注入
是根据回显,对的查询是一种回显,错的查询又是一种回显
也是字符截断函数来操作的
if(length(database())>8,1,sleep)
其他的不多说了
5. 报错注入
是通过报错函数来进行操作的
https://www.cnblogs.com/wocalieshenmegui/p/5917967.html 十种报错注入
作者常尝试的是这三个报错函数updatexml,exp,floor
sql注入绕过waf
ok,这是本篇的重点
作者就不填写那些网上普遍有的,给出几个记得到并且常用的,但是有些简单的还是要简单试下
1. 大小写混写
2. 编码试下 作者常用url编码;拿到数据库名和表名常用16进制替换他们的名字
3. 替换
and &&
or ||
相同函数的替换(这个先要过前面的引号闭合,字符过滤;前面的如果过不了,一般作者都考虑不到这,真要用到时才换)
4. 注释绕过
1)内联/*!50000*/,一般是被杀了的
2)/*!50000union/*!50000/*!(select*/~1,2,3) (过安全狗写法,亲测可用,下面实际操作我们将这样操作)
3)句末注释://, -- , /**/, #, --+,-- -, ;--a
作者常用 -- -,屡试不爽(一般+是被过滤了的)
实际运用
手工操作一波,我的测试过程:
单引号走起
这种情况gpc一般是打开了
双引号,同样如此:
ok,其实我们首先应该确定是字符型参数还是数字型
当id=2
id=1+1
这里+是被过滤了的,所以我们用-来做个运算
一切正常
ok,说明是数字型的参数,那么就不用引号闭合,可以进行接下来的注入
(这里给大家补充一点小知识:cms审计时,这种id之类的都是inval函数处理的;其他的cms地方sql注入漏洞很有一些是因为数字型参数不需要引号闭合进行操作的)
如果是字符型的怎么办,字符型的gpc情况确实不好办,作者遇到的基本是编码绕过:这里的编码是gbk的编码,sprint函数这类的编码漏洞绕过;编码漏洞情况同样适合xss漏洞,都是绕过waf。
这里,作者是先进行常规注入,id=2 order by 2
id=2 order by 1 正常
说明只能显示一列数据了
OK,我们进行union测试
发现了什么,union不见了
不急,我们有姿势
双写union(作者还真看到过只过滤一次关键词的代码)
嗯,看来是过滤那个单词大小写(虽然过时了,现在匹配函数都直接大小通杀,不妨碍随手试下)
看到UNIon被ban了
OK,不要着急,我们试下其他的方法
用过狗方法,这里就这样过了(普通内联试过无法)
但美中不足的是网站的数据库系统配置出了问题,出现下面这个错误
作者这样尝试
不指定库也是查找当前库;再尝试用limit0,1限制,效果也是如此
Illegal mix of collations for operation 'UNION'
遇到了这个问题,是数据库的编码不一样
原因参考:
https://www.cnblogs.com/google4y/p/3687901.html
ok,我们继续,作者直接or来取数据库
被ban了
|| 代替or
and呢(这比较有意思了,也是经常遇到了情况,waf特定情况才ban字符串,绕过本来就是经验和猜)
我们看到,没有语法错误,是正确的,那我们取下数据库呢
按照mysql的语法,作者原先以为没有错(其实是错的语法)
本地测试了下
错误,再多语句,分号试了下,是对的
想当然的给网址来了下分号(sqlmap中根据数据库的不同也有多语句测试)
当然是错误的
时间注入嘛,测试成功(突破口哦)
作者一开始这样测试
嗯,忘记单引号被过滤
用mysql的其他函数来解决
附上测试代码(sql时间盲注的代码除了sql的语句不同,其他的类似;bool盲注,就是修改返回判断条件,if “aaa” in res.content:,bool就没有去测试了,有兴趣自己试一下吧)
报错注入试下:
这么多报错函数,就没有一一去测试
总结
本篇文章较基础,但对于作者来说,较全面了
手工注入知识就这些,更高级的就是各种姿势了
大体也是这个流程,这也是作者的所有干货了
文章仅用于普及网络安全知识,提高小伙伴的安全意识的同时介绍常见漏洞的特征等,若读者因此做出危害网络安全的行为后果自负,与合天智汇以及原作者无关,特此声明!
018年初,一个物理专业的学生Jan Böhmer创建了一个网站,用来跟踪和记录用户的点击、鼠标移动、浏览器类型和操作系统等数据。虽然用户跟踪并不新鲜,但他的方法不需要JavaScript、插件或外部库。实际上,它只使用了普通HTML文本和一点CSS。
它是如何工作的
Böhmer的概念利用了CSS的两个特性:将内容注入HTML元素的能力,以及在用户执行操作后更改样式的能力。网站的工作方式是在执行操作时使用content属性设置URL。此URL调用一个脚本,该脚本记录有关操作的详细信息,这些操作作为URL参数进行传递。使用::before和::after CSS选择器设置这个URL可以确保只在执行操作时调用URL,而不是在页面首次加载时调用URL。
例如,下面的CSS在每次单击#link元素时调用一次URL:
跟踪脚本包含记录事件和操作执行次数的代码。它还可以用于提取用户的IP地址、用户代理和其他标识信息。
下面是这样一个脚本在PHP中的示例:
检测浏览器类型
用户可以欺骗浏览器的用户代理,但是 Böhmer绕过了这个问题,他使用@supports at-rule(at-rule 是CSS样式声明,以@开头,紧跟着是标识符(charset),最后以分号(;)结尾。)测试浏览器特定的CSS属性。例如,下面的操作通过检测--webkit-appearance是可用的,而-ms-ime-align是不可用的来检测Chrome浏览器:
检测操作系统
Böhmer甚至使用字体检测来识别用户的操作系统。例如,通过检测浏览器是否支持Calibri字体家族,我们可以假定浏览器运行在Windows中:
Böhmer关于此概念的验证可以识别其他数据点,包括浏览器窗口的大小和方向、用户是否单击了链接以及用户在一个元素上停留的时间。
这种攻击在浏览器中非常难以预防。完全防止它的唯一方法就是禁用CSS,这会使网站无法使用。然而,通过使用内容安全策略(CSP),可以减少攻击者利用此漏洞的机会。
使用内容安全策略减少CSS泄漏
CSP是一组规则,它决定浏览器可以执行哪些操作,不能执行哪些操作。CSP通常用于防止跨站脚本攻击(XSS)和由浏览器加载不信任脚本导致的其他攻击。虽然CSP通常用于JavaScript文件,但它也可以应用于CSS样式和样式表。
考虑一个使用第三方提供商托管的样式表的网站。攻击者破坏样式表并将用户跟踪代码添加到页面上的链接:
当用户点击该链接时,他们的浏览器调用evil.com上托管的跟踪脚本。由于这完全是通过浏览器完成的,网站所有者完全不知道这个漏洞。
Content-Security-Policy通过设置允许哪些样式以及样式来源等规则来防止这种情况。
禁用内联样式
禁用内联样式是CSP提供的最大安全好处之一。内联样式是直接在HTML文档中声明的样式(或使用JavaScript设置的样式),而不是从样式表加载的样式。内联样式——尤其是动态生成的样式或用户创建的样式——非常难以保护。这就是为什么CSP通常会锁定所有内联脚本和样式,并将那些已被特别批准的内联脚本和样式列入白名单。
以下规则将阻止所有内联样式以及外部托管的样式表:
使用Hash和Nonce验证样式
如果阻塞内联样式是不可行的,你仍然可以使用hash和nonce来确保CSS的完整性。
Hash是由一个文件或字符串的内容生成的单向字符串。在样式表或内联样式上执行哈希函数时,除非样式发生改变,否则它总是返回相同的结果。这对于将某些内联样式和样式表加入白名单是很有用的,只需要同时验证样式没有被修改或篡改。
Nonce的功能与hash类似。使用nonce,将为每个请求生成一个新的随机数,这使得攻击者更难猜测它的值。这避免了hash的一个关键缺点,即多个输入可能生成相同的hash值(称为冲突)。
验证外部托管的样式表
样式表通常托管在第三方服务器上,如内容交付网络(content delivery networks, CDNs),但这带来了新的攻击方向。如果CDN受到威胁,如何阻止攻击者用自己修改过的版本替换样式表?子资源完整性,也叫SRI,试图解决这个问题。
SRI使用hash值来验证脚本和样式表的内容。计算每个文件的hash值,并将其附加到HTML元素的integrity属性中。当浏览器下载脚本或样式表时,计算其hash值并将其与存储在属性中的值进行比较。如果匹配,浏览器将加载脚本或样式。
这是在假设web页面是从受信任的源(如源服务器)提交的情况下运行的,而当资源是从不受信任的源(如第三方)提交的时候,就无法正常运行。如果web页面和资源都由第三方托管,攻击者只需要简单地修改web页面来匹配其CSS替换文件的hash值即可。
结论
虽然通过CSS跟踪用户的能力并不新鲜,但它确实要求我们以不同的方式考虑网页上的隐私和安全性。CSS是现代网页的基本语言之一,禁用网站的CSS将使网页的大部分内容无法使用。内容安全策略是阻止XSS攻击和CSS泄漏的最佳方法。Templarbit创建了一个“灵活的内容-安全-策略工作流”,以便于维护CSP头文件。如果你的团队正在努力为你的应用程序推出CSP,请立即注册一个免费试用版,并学习更多关于Templarbit如何解决CSS泄露的方法.
你可以在GitHub上找到Böhmer的概念验证的源代码。
相关连接:
网站——http://crookedss.bplaced.net/
最大的安全好处——https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/style-src#Unsafe_inline_styles
通常锁定所有内联脚本——https://developers.google.com/web/fundamentals/security/csp/
加入白名单——https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/style-src
并不新鲜——https://www.smashingmagazine.com/2014/10/css-only-solution-for-ui-tracking/
现在就注册获取免费版——https://www.templarbit.com/signup
GitHub——https://github.com/jbtronics/CrookedStyleSheets
相关知识:
SRI,Subresource Integrity 的缩写,中文:子资源完整性,由 Web 应用安全工作组(Web Application Security Working Group)发布。
英文原文:https://www.templarbit.com/blog/2018/03/20/tracking-users-with-css/
译者:忧郁的红秋裤
*请认真填写需求信息,我们会在24小时内与您取得联系。