【一起玩蛇】Python代码审计中的那些器I

曾今向前辈请教过,如何学习代码审计;

曾今向大牛问起过,如何学好代码审计……

得到的答案总是出乎的一致:多读,多审,多写;php,python,java;变量,函数,框架;赋值,传递,覆盖;……只要用心,就能学好。其实很多看起来很专的技术,只要把心静下来,用心去学习--总结--沉淀,就一定不会差。

1、前言

作为【一起玩蛇】系列的文章,突发奇想到python代码审计。纵观目前主流的代码审计,关于审计PHP的文章很多,java代码的也逐渐增加,至于python相关的却相对较少。本文作为开篇,首先介绍一些python代码审计工具及使用相关感受,包括bandit、pyvulhunter、cobra等。Python代码审计资源包括但不仅限于:

  • Python安全编码和代码审计(http://xxlegend.com/2015/07/30/Python%E5%AE%89%E5%85%A8%E7%BC%96%E7%A0%81%E5%92%8C%E4%BB%A3%E7%A0%81%E5%AE%A1%E8%AE%A1/)
  • Python eval的常见错误封装及利用原理(http://xxlegend.com/2015/07/31/Python%20eval%E7%9A%84%E5%B8%B8%E8%A7%81%E9%94%99%E8%AF%AF%E5%B0%81%E8%A3%85%E5%8F%8A%E5%88%A9%E7%94%A8%E5%8E%9F%E7%90%86/)
  • Code Review For Python-Based Web Apps(Code Review For Python-Based Web Apps)
  • Django 安全最佳实践(http://www.atjiang.com/2scoopsdjango1.8-26-security-best-practices/)

2、bandit

2.1 项目地址

bandit是一个OpenStack Security下的python代码审计项目,最牛的是通过AST模块将源代码转换为Python语法树并对语法树节点进行测试的思路。其项目地址为:https://github.com/openstack/bandit

2.2 环境部署

操作系统 Kali2.0 Rolling

语言环境 python 2.7.13 (该工具适用于Py2.x或Py3.x)

(1) 创建虚拟环境

virtualenv bandit-env

(2) 安装bandit

pip install bandit

2.3 静态扫描

安装成功后,直接执行bandit -r code’s path

bandit -r /home/Yxiu/Desktop/xxyy

可以添加 
-f 参数指明文件格式  {csv,custom,html,json,screen,txt,xml,yaml}
-o 将扫描结果保存本地 {OUTPUT_FILE}
bandit -r /home/Yxiu/Desktop/xxyy -f html -o xxyy.html

2.4 结果分析

如果没有指定格式输出报告,则可以在运行界面查看静态扫描结果,包括漏洞级别、代码路径、修复意见等。

如果不清楚漏洞,可以访问More Info继续查看并在搜索框中搜索B101:

http://docs.openstack.org/developer/bandit/plugins/assert_used.html

3、pyvulhunter

3.1 项目地址

pyvulhunter是一款python注入 inject 工具,但作者已经2年没更新。主要是通过递归查找出所有可控参数,判断是否为危险函数,若是则报漏洞,其项目地址为:

https://github.com/shengqi158/pyvulhunter

3.2 环境部署

直接下载到本地,运行judge_injection.py即可

3.3 静态扫描

运行脚本judge_injection.py,使用帮助参数-h

pythonjudge_injection.py -h

根据提示对代码尝试进行SQL注入扫描,

pythonjudge_injection.py -s -d /home/Yxiu/Desktop/xxyy

3.4 结果分析

查看终端界面中返回的内容,主要是一些untrited_func_name、func,record_param等信息,结合源码判断不存在危险函数与参数。

4、cobra

4.1 项目地址

Cobra定位是自动化发现源代码中大部分显著的安全问题,对于一些隐藏较深或特有的问题建议人工审计。据了解,针对python支持基础的匹配规则,但还不支持语法语义的解析。其项目地址为:

https://github.com/WhaleShark-Team/cobra

4.2 环境部署

Kali-rolling中进行最新cobra的部署

4.2.1 安装特殊依赖

apt-get installflex bison

4.2.2 下载安装cobra

git clonehttp://github.com/WhaleShark-Team/cobra.git && cd cobra

pip install -r requirements.txt

4.3 静态扫描

最新版cobra安装部署已经很简单,直接执行cobra.py文件查看运行方式

python cobra.py --help

使用server版本运行:python cobra.py -H 127.0.0.1 -P 8888

打开浏览器,本地即可访问http://127.0.0.1:8888/

上传压缩源码包时,报错:Nosection:’cobra’

No section:‘upload’

经过和作者沟通,需要配置config文件。(http://cobra.feei.cn/config)

再次上传成功,且上传页面后跳转至报告页面http://127.0.0.1:8888/?t=&sid=a580fd6rct8h&s_sid=s580fd61s3dd

4.4 结果分析

可在命令行查看到扫描结果:

5、初步分析

上面三款工具仅在一个小程序中试用,不能代表各个业务场景,故不能立马做出好坏的判断,不过可以提供下表仅供参考:

在平常的审计工作中,不防用各个工具都跑一边,综合起来看结果。再加上人工参与审计,想必会事半功倍,毕竟python代码审计相对来说还算是稍微简单。

原文发布于微信公众号 - 我的安全视界观(CANI_Security)

原文发表时间:2018-03-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

3 条评论
登录 后参与评论

相关文章

来自专栏向治洪

携程React Native实践

React Native(下文简称 RN)开源已经一年多时间,国内各大互联网公司都在使用,携程也在今年 5 月份投入资源开始引入,并推广给多个业务团队使用,本文...

2827
来自专栏C/C++基础

google C++编程风格指南之头文件的包含顺序

(1)为了加强可读性和避免隐含依赖,应使用下面的顺序:C标准库、C++标准库、其它库的头文件、你自己工程的头文件。不过这里最先包含的是首选的头文件,即例如a.c...

761
来自专栏互联网数据官iCDO

Google代码管理工具101 部分5-表单

主编前言: 很多朋友都听说过Tag Management(监测代码管理),但其强大的功能和实现方式,了解的朋友不多。本系列以Google Tag Manager...

3325
来自专栏Android点滴积累

AccessibilityService+WindowManager+SurfaceView开系统权限

  本文是基于辅助功能+悬浮窗+SurfaceView来实现自动获取用户权限的具体方案设计与实现。辅助功能抢红包插件相信大家并不陌生,但是微信官方不允许,但是在...

2598
来自专栏磨磨谈

查询OSD运行在哪些cpu上

在看CPU相关的文章的时候,想起来之前有文章讨论是否要做CPU绑定,这个有说绑定的也有说不绑定的,然后就想到一个问题,有去观测这些OSD到底运行在哪些CPU上面...

1031
来自专栏腾讯Bugly的专栏

微信小程序开发思考总结——腾讯“信用卡还款”项目实践

小程序概述 昨天晚上,微信团队对外宣布,微信小程序开放公测。开发者可登陆微信公众平台申请,开发完成后可以提交审核,公测期间咱不能发布。 我们前一段时间也进行了小...

3393
来自专栏Python攻城狮

pycharm中以中文命名py文件不能正常运行解决办法

最近pycharm中以中文命名py文件,不能正常运行折腾了很久,最后发现原来是系统编码的问题,附解决办法。此方法也可解决Win7 系统记事本乱码及cmd闪退

1063
来自专栏landv

16位和32位的80X86汇编语言的区别

1132
来自专栏小特工作室

Navi.Soft31.任务管理器(定时同步+数据采集)

1系统简介 1.1功能简述 在众多的软件分类中,有几类的软件不是很重要,但也很重要。它们有的是每隔一段时间需要执行一些任务的软件,我们叫它定时类软件;还有一种软...

1988
来自专栏xingoo, 一个梦想做发明家的程序员

PowerCMD——cmd的命令行工具

之前就想整理一下程序员经常使用的一些工具,最近有时间正好整理一下。 有句话叫做:“工欲善其事必先利其器”,而我就算是搜集工具组装成一个系列——善事利器,来记...

1907

扫码关注云+社区