软件系统设计方案-sqlmap安全工具复现
前言
sql注入是一种目前较为常见的web应用网络攻击。由于web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,以此来实现欺骗数据库服务器执行非授权的操作。
sqlmap是一个开源渗透测试工具,利用sql注入漏洞可以自动检测和接管数据库服务器。
粗略地阅读了sqlmap目录及部分源码,发现这个工具严谨且庞大,感觉复现难度很大,本工程实践尝试复现sqlmap部分功能。
参考资料:https://gitee.com/mengning997/se/tree/master/ppt
https://github.com/sqlmapproject/sqlmap
http://www.91ri.org/13785.html
https://www.anquanke.com/post/id/159260
一、接口API
Target:定义目标(必须至少定义一项)
Request:指定如何连接到目标URL
Optimization:用于优化sqlmap的性能
Injection:指定要测试的参数、提供自定义注入有效负载和可选篡改脚本
Detection:自定义检测阶段
Techniques:调整特定SQL注入技术的测试
Fingerprint:执行扩展的DBMS版本
Enumeration:枚举后端数据库管理系统的信息、结构和表中包含的数据。此外还可以运行自己的SQL语句
Brute force:运行暴力检查
User-defined function injection:创建自定义的用户定义函数
File system access:访问后台数据库管理系统底层文件系统
Operating system access:访问后台数据库管理系统底层操作系统
Windows registry access:访问后端数据库管理系统Windows注册表
General:设置一些常规工作参数
Miscellaneous:其他一些功能
Output verbosity:设置输出消息的详细程度
二、视图
分解视图:
checks:利用载荷对对发现的sql注入点进行注入检测
action:进行sql注入
takeover:注入成功后接管受害者机器的shell
boolean_blind:基于布尔的盲注
time_blind:基于时间的盲注
error_based:基于错误信息的注入
union_query:UNION联合查询注入
stacked_queries:堆查询注入
inline_query:内联注入
执行视图:
实现视图:
doc:使用文档,有十余种翻译版本
extra:一些额外功能
lib:多种连接库
plugins:各种数据库的信息和数据库通用事项
tamper:绕过脚本
thirdparty:一些第三方的插件,例如:优化,保持连接,颜色等等
.travis.yml:标记python版本和设置sqlmap的脚本
README.md:说明
sqlmap.conf:sqlmap配置文件
sqlmap.py:主程序
sqlmapapi.py:api接口,可以将sqlmap集成到其他平台
三、技术选型
开发语言:python3.6
IDE:pycharm
四、核心工作机制
sql注入检测:检查是否存在WAF,若存在则识别WAF,并使用绕过脚本,启发式检测漏洞,存在漏洞则进行sql注入检测并记录结果