SVN源碼泄露漏洞

    SVN(subversion)是源代碼版本管理軟件,形成SVN源代碼漏洞的主要緣由是管理員操做不規範。「在使用SVN管理本地代碼過程當中,會自動生成一個名爲.svn的隱藏文件夾,其中包含重要的源代碼信息。但一些網站管理員在發佈代碼時,不肯意使用‘導出’功能,而是直接複製代碼文件夾到WEB服務器上,這就使.svn隱藏文件夾被暴露於外網環境,黑客能夠藉助其中包含的用於版本信息追蹤的‘entries’文件,逐步摸清站點結構。」(能夠利用.svn/entries文件,獲取到服務器源碼、svn服務器帳號密碼等信息)nginx

   更嚴重的問題在於,SVN產生的.svn目錄下還包含了以.svn-base結尾的源代碼文件副本(低版本SVN具體路徑爲text-base目錄,高版本SVN爲pristine目錄),若是服務器沒有對此類後綴作解析,黑客則能夠直接得到文件源代碼。web

 

利用

一、漏洞利用工具: Seay SVN漏洞利用工具服務器

二、添加網站urlsvn

在被利用的網址後面加 /.svn/entries,列出網站目錄,甚至下載整站。工具

修復

一、在web服務器配置文件中增長一段代碼,過濾到.svn文件,返回404網站

nginx服務器:url

location ~ ^(.*)\/\.svn\/開發

{rem

return 404;源碼

}

重啓nginx

Apache服務器:

 

Order allow,deny

Deny from all

 

重啓Apache

二、查找服務器上全部.svn隱藏文件夾,刪除

如下命令刪除當前目錄下.svn文件夾

find . -type d -name ".svn"|xargs rm -rf

rm -rf `find . -type d -name .svn`

find . -name ".svn" -type d | xargs rm -fr

find . -name ".svn" -type d | xargs -n1 rm -R

使用腳本刪除

#!/bin/sh

cd /home/web/

find ./ -name ".svn" |xargs -n1 echo > /dev/null 2>&1

find ./ -name ".svn" -print0 | xargs -0 rm -fr

if [ $? -ne 0 ]; then

echo "remove .svn dirs failed!"

fi

以上文件保存爲.sh

執行以後,會刪除 /home/web目錄及其子目錄中 全部 .svn 隱藏文件夾

防護

開發人員在使用SVN時,嚴格使用導出功能。禁止直接複製代碼。

相關文章
相關標籤/搜索