自己动手打造Github代码泄露监控工具

0x00 背景

众说周知,Github这块肥肉很受安全人员和黑客关注。因为很多新进程序猿和老手不经意就会把他们的劳动成果分享出来,而往往这种开源精神,奉献精神会对企业带来一定的安全风险。

例如代码里面包含各种敏感信息(用户名、密码、数据库信息、内网IP,甚至程序猿的身高、体重、年龄和婚姻状况。哈哈),所以Github信息泄露监控就不得不亮剑。另外也是小弟所在的企业被第三方找出有敏感信息泄露,囧,本来打算自己找些开源工具。看了些开源工具,都不太适合,所以就有了这篇自己动手打造Github代码泄露监控工具。

0x01 撸起袖子开干

人生苦短,我用Python!

Python强大的库、简洁语言以及开发迅速等特点,深受广大程序开发者喜爱。那么我们就用Python来开发吧!

原理及步骤

我们知道Github并未开放查询搜索的API,那么我们只能通过爬虫来爬取页面,然后通过解析器对返回的内容解析,从而获取到我们想要的信息。具体步骤如下:

1.登陆Github; 2.查询关键词结果呈现; 3.邮件预警; 4.配置文件读取。

开发环境及用到的Python库

开发环境为:MacOS10.12.6, Python版本3.6.5

Python库:

requests,lxml,csv,tqdm,email,smtplib,configparser,time

请看官老爷们去了解以上Python库的用法,这里不再赘述。

0x02 步骤解析

1.登陆Github

登陆这里设置了一个坑,登陆https://github.com/login会跳转到https://github.com/session,然后提交请求主体。而主体包含了如下参数:

“commit=Sign+in&utf8=%E2%9C%93&authenticity_token=sClUkea9k0GJ%2BTVRKRYsvLKPGPfLDknMWVSd%2FyWvyGAR9Zz09bipesvXUo8ND2870Q2FEVsQWFKScyqtV0w1PA%3D%3D&login=YourUsername&password=YourPassword”

commit、uft8、login和password值相对来说是固定的,我们要做到工具登陆,那么需要获取到authenticity_token这个值,然后一起通过POST方法提交。那应该如何获取该值呢?

我们打开浏览器尝试手动正常登陆,同时按F12打开“开发者工具”,输入用户名和密码可以看到跳转到https://github.com/session,而authenticity_token的值就在如下图位置:

虽然是隐藏的,但是我们可以通过Xpath来获取它,然后跟其他参数一起提交登陆Github。看代码:

2.查询关键词及结果呈现

登陆后请求查询的URL,然后获取响应的页面,使用xpath解析节点获取想要的信息。关于xpath的语法请看这里

http://www.runoob.com/xpath/xpath-tutorial.html

我们还要将获取的信息写入表格里面,便于以后查看。详情如下:

以上代码的核心主要是采用xpath解析DOM树,然后根据需要的数据逐一获取然后写入表格中。最后请求raw.githubusercontent.com来获取源代码,根据用户提供的payload进行逐一匹配,如果匹配则记录payload、URL以及代码,然后发送邮件预警。

3.邮件预警

其实邮件发送部分不是工具的重点,但是还是有必要贴上代码部分。请看:

4.配置文件读取

我们将创建一个.ini的文件,便于工具读取我们想要传入工具的关键词、用户名、密码以及payload等等。ini配置文件定义如下:

然后我们在main函数中读取它们,然后传入工具中。

以上代码中存在另外一个send_mail函数,同样是发送邮件的功能跟send_warning功能一样,只是发送的内容不一样。这里不再赘述。这样我们就完成了整个工具的核心部分。怎么样?对于老司机来说很简单吧!

0x03 监控效果

  1. 运行效果
  1. 邮件预警

0x04 总结

该工具的特点在于它会先使用主关键词进行搜索,比如公司域名、邮箱、人员姓名等等。然后再从结果中去搜索使用者自定义的payload,如Password,User,Database等等。另外配合crontab可以做到每天进行搜索然后进行预警,但是建议每天运行2次,以防触发Github的反爬机制。其实写工具并不难,多思考,多练习,人人都是开发大佬。最后感谢@0xbug大佬的Hawkeye带来的灵感和参考。最后完整代码参考https://github.com/Hell0W0rld0/Github-Hunter。各位大佬请轻拍!谢谢!

*本文作者:ztencmcp,转载请注明来自FreeBuf.COM

本文分享自微信公众号 - FreeBuf(freebuf)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-06-06

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏人工智能头条

6月Python开源项目Top 10:如何快速找到抖音上的漂亮小姐姐……

20530
来自专栏人工智能头条

干货 | 1400篇机器学习的文章中,这10篇是最棒的!

【导读】在过去的一个月中, 作者从近 1400 篇有关机器学习的文章中挑选了最有可能帮助职业生涯发展的 10 篇推荐给大家(入选比率为0.7%)。

15940
来自专栏目标检测和深度学习

无需深度学习框架,如何从零开始用Python构建神经网络

这是一份用于理解深度学习内部运作方式的初学者指南。作者根据自己从零开始学习用 Python 构建神经网络的经验,编写了一份攻略。内容涵盖神经网络定义、损失函数、...

13420
来自专栏量子位

这里有10本书,陪你欢度机器学习的清凉暑假 | 丰盛的传送门

12210
来自专栏人工智能头条

技术 | 机器学习中Python库的3个简单实践——你的图片将由你来创造

【导读】今天为大家介绍机器学习、深度学习中一些优秀、有意思的 Python 库,以及这些库的 Code 实践教程。涉及到的理论与学术内容会附上相应的论文与博客,...

22040
来自专栏顶级程序员

为什么我要在2018年学习Python?

从网页编程到时髦的人工智能,机器学习,这个享有"瑞士军刀(万能工具)"盛誉的Python语言, 你学会了吗?

11630
来自专栏顶级程序员

Python 工匠:编写条件分支代码的技巧

我一直觉得编程某种意义上是一门『手艺』,因为优雅而高效的代码,就如同完美的手工艺品一样让人赏心悦目。

11620
来自专栏目标检测和深度学习

教程 | 从零开始PyTorch项目:YOLO v3目标检测实现(下)

25820
来自专栏顶级程序员

全面深入理解Python面向对象编程

面向过程编程最易被初学者接受,其往往用一长段代码来实现指定功能,开发过程中最常见的操作就是粘贴复制,即:将之前实现的代码块复制到现需功能处。

34250
来自专栏顶级程序员

Python与人工智能的关系原来是这样的...

人工智能掀起了世界的新一波科技浪潮,如今,你要是不懂点AI、机器学习和python都不好意思说你是现代人,那么python究竟和人工智能什么关系,为什么人工智能...

19950

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励