在【一起玩蛇】Python代码审计中的那些器I中,已经对一些常见的python安全知识与代码审计工具进行介绍,其中包括bandit、pyvulhunter、cobra,此外本篇将继续分享另一款工具pyt的使用心得。
在此之前,回顾一下Python代码审计的一些资源:
1、一起读书
首先,依旧是一些零碎的读书笔记分享,更多地,留给大家思考与回味。
在困惑,迷惘,徘徊,失望......各种悲观消极情绪出现的时候,总想一个人静静,喜欢不时地仔细思考,然后随手翻阅一番诸葛亮的《诫子书》以作警醒:
夫君子之行:
静以修身,俭以养德。
非淡泊无以明志,非宁静无以致远。
夫学须静也,才须学也。
非学无以广才,非静无以成学。
淫慢则不能励精,险躁不能治性。
年与时驰,意与岁去。
遂成枯落,多不接世。
悲守穷庐,将复何及!
项目地址:
https://github.com/python-security/pyt
查看kali中是否存在py3相关文件夹
ls/usr/bin/python
在/home/Yxiu/下创建py3虚拟环境,目录为py3env
virtualenv -p/usr/bin/python3.6 py3env
激活python3环境
source /home/Yxiu/py3env/bin/activate
进入根目录/home/Yxiu,下载源码
git clonehttps://github.com/python-security/pyt.git
进入源码文件夹下,安装依赖包
python setup.pyinstall
在项目文件夹中,执行pyt -h,查看使用方法
如果被扫描文件在本地且没有建项目,那么只能是用-f文件进行单个文件的扫描:
python -m pyt -f /home/Yxiu/Desktop/../../xx.py |
---|
扫描结果便于查看,若不存在漏洞则显示: 0 vulnerabilities
当面对扫描结果 0 vulnerabilities时,开始有点产生质疑。于是乎,几经周折之后找到一款简易的python靶场--DSVW轻量级漏洞靶场(https://github.com/stamparm/DSVW)。
直接pull项目到本地,查看文件夹内容特别简单,仅一个py文件
在python 2.6.x或2.7.x环境中,直接运行即可启动漏洞环境
访问本地地址+端口65412,即可出现漏洞靶场,其中包括三种类型的SQL注入、万能密码、四种XSS、XML实体攻击…各种漏洞尽在<100Loc 的代码中。此外,每个漏洞都会有exp和漏洞info,对于使用者来说极其便利。
比如本地XML实体攻击:
http://127.0.0.1:65412/?xml=%3Croot%3E%3C%2Froot%3E
本地XML实体攻击的Exploit:
http://127.0.0.1:65412/?xml=%3C!DOCTYPE%20example%20%5B%3C!ENTITY%20xxe%20SYSTEM%20%22file%3A%2F%2FC%3A%2FWindows%2Fwin.ini%22%3E%5D%3E%3Croot%3E%26xxe%3B%3C%2Froot%3E
经受住各种漏洞环境检验的工具,才是好兵器。于是乎,忍不住想用DSVW来检验pyt的静态代码扫描功能。
明明是千疮百孔的漏洞靶场,竟然也是0漏洞!
无论是从自研系统的扫描结果,还是漏洞靶场DSVW,pyt的表现并不好。除了目前没有发现任何问题外,它对文件扫描只支持单文件,所以对于复杂的跨文件函数调用、类,效果堪忧。但是为什么在github上的star和fork如此之高?我想,还值得继续从源码层面来研究。
只有经过试错验证和所谓的“踩坑”,才能有所收获。
如果你有发现什么问题或有更好的想法,不防留言来撩~