python代码审计案例_【一起玩蛇】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 项目地址

2.2 环境部署

操作系统  Kali2.0 Rolling

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

(1)创建虚拟环境

virtualenv bandit-env

3523da566c92c4d4654dfec508622802.png

(2)安装bandit

pip install bandit

b5b5c35d256a8fbbe98e6fdd8684ddf9.png

2.3 静态扫描

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

bandit -r /home/Yxiu/Desktop/xxyy

630ab713e68598c201ea69de65c6b5a8.png

可以添加

-f 参数指明文件格式  {csv,custom,html,json,screen,txt,xml,yaml}

-o 将扫描结果保存本地 {OUTPUT_FILE}

bandit -r /home/Yxiu/Desktop/xxyy -f html -o xxyy.html

4c2cbecfdb66fdf74095e21395ab1835.png

2.4 结果分析

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

6f22499f71a82db197c75b3c57e60c3d.png

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

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

e6f0ea2ed2c7f11a6d2a482abe69e1fc.png

3、pyvulhunter

3.1 项目地址

https://github.com/shengqi158/pyvulhunter

3.2 环境部署

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

592d08b2aac8bea3f1f778b82a34cf98.png

3.3 静态扫描

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

pythonjudge_injection.py -h

968268b2eb903b00314b491aae450f3a.png

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

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

f4bfb647cc0b8312090880f07e3c6f43.png

3.4 结果分析

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

4ead2f19e5d3baabbbeb9eda3386139c.png

4、cobra

4.1 项目地址

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

4.2 环境部署

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

6b76ffec68e1f29bf65075b60fd3a046.png

4.2.1 安装特殊依赖

apt-get installflex bison

ae2878bda8883c9693597279ef7c4c29.png

4.2.2 下载安装cobra

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

pip install -r requirements.txt

99ea0000bf5efbd8046627261cae30f5.png

4.3 静态扫描

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

python cobra.py --help

794a7d1f42b4616383d35555191f31f9.png

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

670f7c0067838fb0bbb934eefa96c380.png

cf479e22a9c2ad399e0023c16cab96c7.png

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

339a6977f8478420a4b8d7e64f622371.png

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

980b08f8193c69703727691fb4306d8a.png

No section:‘upload’

633dbb0b0fc50a14f714b5805ec30dfa.png

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

e56017022a5c00b045071091c6bd6043.png

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

508ceea8058db9205e41707af07675d5.png

4.4 结果分析

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

5、初步分析

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

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

---------------------------- 往期回顾 -----------------------------

【1】

【2】

【3】

【4】

【5】

【6】

【7】

【8】

【9】

【10】

【11】

【12】

【13】

【14】

【15】

【16】

【17】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值