freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

雷石安全实验室Python安全工具开发的小思路
2023-06-20 16:31:18
所属地 浙江省

前言:

安全的起点是脚本小子,安全的路程是代码,安全终点是自动化。我最开始要去写代码的时候是因为想用一个工具,但是全网资源找不到,于是一狠心,自己去做一个这样的工具。最开始就是简单学习代码知识,个人建议最开始还是Python或者Go,Python在数据处理和Ai这里其实都很有优势,Go的优势是比Python快,同时线程高并发。
我的理解是工具的自动化其实就是代替人去做重复工作的事情,比如一个漏洞扫描器,常规的漏扫工具的原理就是通过已知的poc,代替人工去尝试,通过特定的请求和返回特征去判断是否存在。
简单来说就是输入,请求,响应,判断,处理。

输入:

第一步是输入,自动化的工具等待用户输入相关参数和信息,比如url、可选选项。这里拿Find-something的源码来做演示:

image

Python常用的命令行脚本模块是argparse,这个是一个接受命令行参数的Python模块。
parse_args()函数定义了脚本可以接受的参数。例如-u用于目标URL,entrance()函数调用parse_args()来解析命令行参数并将它们存储在args变量中。
如果提供了-f参数,则脚本会读取文件并将其传递给

frame.check_frame(file).fileDeal()

`deal.Deal(file).fileDeal()`
具体取决于提供的其他参数
如果提供了-m,则调用 
frame.check_frame(file).fileDeal()
如果提供了-p,则调用
deal.Deal(file).fileDeal()
如果既没有提供-m也没有提供-p,则两个函数都会按顺序调用。

请求:

第二步是请求,这里主要讲一个方法的参数,常用的就是requests。

image

Requsets是一个Python的第三方库,一般用这个的理由是因为它可以定制化请求参数。
一般在工具中核心参数如下:
第一个参数,url,一般是目标加上poc的url,也就是请求路径。
第二个参数,header, 请求过程中的请求头这里有个小技巧:

image

在定义请求头的过程中可使用随机值,来随机X-Real-IP,这样能绕过一些防火墙的限制,提高准确率。
第三个参数,data,用来定义POST请求的body,post的内容。
第四个参数,verify,如果目标https请求中需要ssl认证,加入这个参数可以绕过认证。
第五个参数,time,主要控制一次请求的超时,如果请求在规定时间内没有响应则会报错。

相应:

请求完毕后会获得一个响应的对象,对应上述图中的respone。响应体分为respone.header响应体的头,通常包括一些响应信息。
repone.status_code也就是响应的返回值,通常200就是响应,301跳转。
还有就是响应的内容,repone.text,它通常是判断的依据。

判断:

判断,是一个自动化脚本准确性的依据,也就是特征值,在一个脚本中,通过是通过响应的所有内容来判断。

image

例如通过判断响应中是否有204来判断漏洞是否存在。

处理:

处理数据是很重要的部分。比如异常的处理,如果超时就会产生报错,报错后程序就会中断,导致后边的内容无法执行。另外还有结果保存的处理等场景。

小结:

以上就是Python安全工具开发的一条思路分享。现在主流的开发模式都是来写框架,用yaml来写轮子,这样便于维护。
最后想给大家推荐一款工具cursor,我愿称它为编程界的魔法海螺!有一些东西我都可以交给它去做,亲测好用,能大大节省开发过程中的时间。
# web安全 # 网络安全技术 # Python工具
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者