IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Sqlmap 代码执行漏洞报告

    niubl发表于 2015-12-09 12:52:04
    love 0

    Author: Nixawk (知道创宇404安全实验室)

    Date: 2015-12-09

    一、漏洞概述

    于2015年01月27日, 我在阅读最新版本Sqlmap代码时,发现其存在代码执行问题。安全问题由python的pickle导致。

    pickle 模块实现了一个基础而强劲的算法,用于序列化和反序列化Python对象结构,常用于跨平台及网络应用。在进行反序列化操作时,pickle会执行精心构造的python代码。

    二、漏洞演示

    1.代码执行

    测试数据:

    python sqlmap.py --pickled-options "Y29zCnN5c3RlbQooUydkaXInCnRSLg=="

    测试结果:

    图片1

    2.代码分析

    存在代码执行问题的代码文件如下:

    QQ20151209-34@2x

    以 /path/to/sqlmap/lib/core/convert.py 文件中的 base64unpickle 函数为例,进行说明。经过分析,我们可以清晰了解,恶意数据可通过参数 --pickled-options 传入 Sqlmap,流程如下:

    QQ20151209-35@2x

    恶意数据通过参数 --pickled-options 传入 base64unpickle,函数解码数据时, 执行Python代码。

    59 def base64unpickle(value): 
    60 """ 
    61 Decodes value from Base64 to plain format and deserializes (with pickle) its content 
    62 
    63 >>> base64unpickle('gAJVBmZvb2JhcnEALg==') 
    64 'foobar' 
    65 """ 
    66 
    67 retVal = None 
    68 
    69 try: 
    70 retVal = pickle.loads(base64decode(value)) 
    71 except TypeError: 
    72 retVal = pickle.loads(base64decode(bytes(value))) 
    73 
    74 return retVal

    pickle 漏洞触发演示:

    QQ20151209-36@2x

    三、修复补丁

    更新到 Sqlmap 最新版,相关补丁 commit 信息:

    https://github.com/sqlmapproject/sqlmap/commit/31d250f98e087585dad3af58ff00ca90d143676

    四、英文详情

    《Sqlmap Code Execution Vulnerability》

    参考

    • https://media.blackhat.com/bh-us-11/Slaviero/BH_US_11_Slaviero_Sour_Pickles_Slides.pdf
    • https://media.blackhat.com/bh-us-11/Slaviero/BH_US_11_Slaviero_Sour_Pickles_WP.pdf
    • https://docs.python.org/2/library/pickle.html
    • https://blog.nelhage.com/2011/03/exploiting-pickle/
    • https://github.com/sqlmapproject/sqlmap/issues/1592
    • https://github.com/sqlmapproject/sqlmap/issues/1599
    • https://github.com/sqlmapproject/sqlmap/commit/31d250f98e087585dad3af58ff00ca90d1436760
    • https://www.sebug.net/vuldb/ssvid-90021


沪ICP备19023445号-2号
友情链接