欢迎来到 无奈人生 安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

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

来源: 作者: 时间:2019-02-24 21:00 点击: 我要投稿
广告位API接口通信错误,查看德得广告获取帮助

众说周知,Github这块肥肉很受安全人员和黑客关注。因为很多新进程序猿和老手不经意就会把他们的劳动成果分享出来,而往往这种开源精神,奉献精神会对企业带来一定的安全风险。
例如代码里面包含各种敏感信息(用户名、密码、数据库信息、内网IP,甚至程序猿的身高、体重、年龄和婚姻状况。哈哈),所以Github信息泄露监控就不得不亮剑。另外也是小弟所在的企业被第三方找出有敏感信息泄露,囧,本来打算自己找些开源工具。看了些开源工具,都不太适合,所以就有了这篇自己动手打造Github代码泄露监控工具。
0×01 撸起袖子开干
人生苦短,我用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库的用法,这里不再赘述。
0×02 步骤解析
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。看代码:
def login_github(username,password):#登陆Github
      #初始化参数
      login_url = 'https://github.com/login'
      session_url = 'https://github.com/session'
      try:
          #获取session
          s = requests.session()
          resp = s.get(login_url).text
          dom_tree = etree.HTML(resp)
          #获取authenticity_token
          key = dom_tree.xpath('//input[@name="authenticity_token"]/@value')
          user_data = {
              'commit: 'Sign in',
              'utf8': '✓',
              'authenticity_token':key,
              'login': username,
              'password': password
          }
          #发送数据并登陆
          s.post(session_url,data=user_data)
          #验证是否登陆成功
          s.get('https://github.com/settings/profile')
          return s
      except:
          print('产生异常,请检查网络设置及用户名和密码')
2.查询关键词及结果呈现
登陆后请求查询的URL,然后获取响应的页面,使用xpath解析节点获取想要的信息。关于xpath的语法请看这里
http://www.runoob.com/xpath/xpath-tutorial.html
我们还要将获取的信息写入表格里面,便于以后查看。详情如下:
def hunter(gUser,gPass,keyword,payloads):
    global sensitive_list
    global tUrls
    sensitive_list = []
    tUrls = []    try:
        #创建表格
        csv_file = open('leak.csv','w',encoding='utf-8',newline='')
        writer = csv.writer(csv_file)
        #写入表头
        writer = writerow(['URL','Username','Upload Time','Filename'])

[1] [2] [3]  下一页

众说周知,Github这块肥肉很受安全人员和黑客关注。因为很多新进程序猿和老手不经意就会把他们的劳动成果分享出来,而往往这种开源精神,奉献精神会对企业带来一定的安全风险。
例如代码里面包含各种敏感信息(用户名、密码、数据库信息、内网IP,甚至程序猿的身高、体重、年龄和婚姻状况。哈哈),所以Github信息泄露监控就不得不亮剑。另外也是小弟所在的企业被第三方找出有敏感信息泄露,囧,本来打算自己找些开源工具。看了些开源工具,都不太适合,所以就有了这篇自己动手打造Github代码泄露监控工具。
0×01 撸起袖子开干
人生苦短,我用Python!
Python强大的库、简洁语言以及开发迅速等特点,深受广大程序开发者喜爱。那么我们就用Python来开发吧!
原理及步骤
我们知道Github并未开放查询搜索的API,那么我们只能通过爬虫来爬取页面,然后通过解析器对返回的内容解析,从而获取到我们想要的信息。具体步骤如下:
1.登陆Github;
2.查询关键词结果呈现;
3.邮件预警;
4.配置文件读取。
开发环境及用到的Python库
开发环境为:MacOS10.12.6, Python版本3.6.5 www.wnhack.com
Python库:requests,lxml,csv,tqdm,email,smtplib,configparser,time
请看官老爷们去了解以上Python库的用法,这里不再赘述。
0×02 步骤解析
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的值就在如下图位置:

copyright 无奈人生

虽然是隐藏的,但是我们可以通过Xpath来获取它,然后跟其他参数一起提交登陆Github。看代码:
def login_github(username,password):#登陆Github
      #初始化参数
      login_url = 'https://github.com/login'
      session_url = 'https://github.com/session'
      try:
          #获取session
          s = requests.session()
          resp = s.get(login_url).text
          dom_tree = etree.HTML(resp)
          #获取authenticity_token
          key = dom_tree.xpath('//input[@name="authenticity_token"]/@value')
          user_data = {
              'commit: 'Sign in', 内容来自无奈安全网
              'utf8': '✓',
              'authenticity_token':key,
              'login': username,
              'password': password
          }
          #发送数据并登陆
          s.post(session_url,data=user_data)
          #验证是否登陆成功
          s.get('https://github.com/settings/profile')
          return s
      except:
          print('产生异常,请检查网络设置及用户名和密码')

本文来自无奈人生安全网


2.查询关键词及结果呈现
登陆后请求查询的URL,然后获取响应的页面,使用xpath解析节点获取想要的信息。关于xpath的语法请看这里
http://www.runoob.com/xpath/xpath-tutorial.html
我们还要将获取的信息写入表格里面,便于以后查看。详情如下:
def hunter(gUser,gPass,keyword,payloads):
    global sensitive_list
    global tUrls
    sensitive_list = []
    tUrls = []    try:
        #创建表格
        csv_file = open('leak.csv','w',encoding='utf-8',newline='')
        writer = csv.writer(csv_file)
        #写入表头
        writer = writerow(['URL','Username','Upload Time','Filename'])
内容来自无奈安全网

[1] [2] [3]  下一页

无奈人生安全网

。 (责任编辑:admin)
【声明】:无奈人生安全网(http://www.wnhack.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱472701013@qq.com,我们会在最短的时间内进行处理。