Web安全:代碼泄露
代碼泄露一般有SVN代碼泄露及GIT代碼泄露。例如在使用SVN管理本地代碼過程中,會自動生成一個名為SVN的隱藏文件夾,其中包含重要的代碼信息。但一些開發(fā)者在發(fā)布代碼的時候,直接復(fù)制代碼文件夾到Web服務(wù)器,這就使SVN隱藏文件夾暴露于外網(wǎng)。攻擊者可利用該漏洞下載網(wǎng)站的代碼,再從代碼里獲得數(shù)據(jù)庫的連接密碼或者通過代碼分析出新的系統(tǒng)漏洞,進(jìn)一步入侵系統(tǒng)。
另外,也有大量的開發(fā)者使用GIT進(jìn)行版本控制及對站點進(jìn)行自動部署。如果配置不當(dāng),可能會將GIT文件夾直接部署到線上環(huán)境,這就引起了GIT文件泄露。攻擊者可直接從泄露的代碼中獲取敏感配置信息(如郵箱及數(shù)據(jù)庫等),也可以進(jìn)一步審計代碼,挖掘文件上傳及SQL注入等安全漏洞。
總體來講,代碼泄露是開發(fā)者安全意識不到位造成的。
例1:某站存在SVN代碼泄露。開啟瀏覽器,輸入某站主域名/.svn/entries,Web服務(wù)器返回信息如圖1所示。
圖1 SVN代碼泄露
由圖1可見,這里可能存在SVN代碼泄露。攻擊者繼續(xù)使用SVN代碼泄露利用工具,如圖2所示。
圖2 SVN代碼泄露利用工具
我們可以看到,Web目錄結(jié)構(gòu)已經(jīng)出來了,如圖3所示。
圖3 Web目錄結(jié)構(gòu)
幾分鐘后,代碼就下載完成,打開index.php文件,可以看到是服務(wù)器代碼而非HTML代碼,如圖4所示。
圖4 服務(wù)器代碼
由圖4可見,這里確實存在SVN代碼泄露。此時,攻擊者就可以對該站點進(jìn)行目錄結(jié)構(gòu)分析、敏感信息收集(如數(shù)據(jù)庫鏈接文件)或者代碼審計,試圖尋找SQL注入、文件上傳等漏洞實施進(jìn)一步的滲透測試。
例2:某站存在GIT文件泄露。開啟瀏覽器,輸入某站主域名/.gitignore,Web服務(wù)器返回信息如圖5所示。
圖5 GIT文件下載
下載GIT文件,如圖6所示。
圖6 GIT文件泄露
可以看到,GIT文件中的內(nèi)容其實已經(jīng)泄露了Web站點的代碼的目錄結(jié)構(gòu)。訪問robots.txt文件,Web服務(wù)器返回信息如圖7所示。
圖7 GIT文件泄露
由圖7可見,這里確實存在GIT文件泄露。如果想通過該GIT文件下載該Web站點的代碼,可以使用GitHack這個工具。