软件系统设计方案-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注入检测并记录结果

 

posted @ 2020-12-29 23:17  test271  阅读(248)  评论(0编辑  收藏  举报