許多客戶在網(wǎng)站,以及APP上線的同時,都會提前的對網(wǎng)站進行全面的滲透測試以及安全檢測,提前檢測出存在的網(wǎng)站漏洞,以免后期網(wǎng)站發(fā)展過程中出現(xiàn)重大的經(jīng)濟損失,前段時間有客戶找到我們SINE安全公司做滲透測試服務(wù),在此我們將把對客戶的整個滲透測試過程以及安全測試,發(fā)現(xiàn)的漏洞都記錄下來,分享給大家,也希望大家更深的去了解滲透測試。
在對客戶的網(wǎng)站進行服務(wù)的同時,我們首先要了解分析數(shù)據(jù)包以及網(wǎng)站的各項功能,有助于我們在滲透測試中發(fā)現(xiàn)漏洞,修復(fù)漏洞,綜合客戶網(wǎng)站的架構(gòu),規(guī)模,以及數(shù)據(jù)庫類型,使用的服務(wù)器系統(tǒng),是windows還是linux,前期都要收集信息,做到知彼知己百戰(zhàn)不殆。只有真正的了解了網(wǎng)站,才能一層一層的找出漏洞所在。網(wǎng)站使用的是php語言開發(fā),采用是mysql數(shù)據(jù)庫,客戶服務(wù)器用的是linux centos系統(tǒng),用phpstudy一鍵環(huán)境搭建,PHP的版本是5.5,mysql數(shù)據(jù)庫版本是5.6.客戶網(wǎng)站是一個平臺,采用會員登錄,功能基本都是一些交互性的,會員資料修改,銀行卡添加,充值與提現(xiàn),在線反饋等等。
下面開始我們的整個滲透測試過程,首先客戶授權(quán)我們進行網(wǎng)站安全測試,我們才能放開手的去干,首先檢測的是網(wǎng)站是否存在SQL注入漏洞,我們SINE安全在檢測網(wǎng)站是否有sql注入的時候都會配合查看mysql數(shù)據(jù)庫的日志來查詢我們提交的SQL語句是否成功的執(zhí)行,那么很多人會問該如何開啟數(shù)據(jù)庫的日志,如何查看呢?首先連接linux服務(wù)器的SSH端口,利用root的賬號密碼進服務(wù)器,打開mysql的配置文件mysqld.cnf編輯general_log_file=(log日志的地址),general_log=1,在服務(wù)器里輸入tail -f (log地址),來查看實時的數(shù)據(jù)庫語句執(zhí)行日志。當(dāng)我們SINE安全技術(shù)在測試SQL注入漏洞的時候,就會實時的看到是否有惡意的SQL語句執(zhí)行成功,如果有那么數(shù)據(jù)庫日志就會出現(xiàn)錯誤提示,在滲透測試中是很方便的,也更利于查找漏洞。
這里不詳細(xì)的分析代碼了,我們在測試中發(fā)現(xiàn)平臺的后臺管理頁面存在SQL注入漏洞,當(dāng)管理員登錄后臺的時候我們看到guanlilogin.php里POST到guanlicheck.php來對管理員的賬號密碼進行驗證,在驗證的過程中g(shù)uanlicheck.php并沒有對傳入過來的參數(shù)進行安全效驗,導(dǎo)致SQL注入漏洞的產(chǎn)生,具體代碼如下
代碼里的getenv參數(shù)是獲取前端用戶的https頭信息,通過數(shù)據(jù)比對,如果頭信息大那么久返回0值然后再將IP賦值進去,通俗來講就是沒有任何的安全效驗與攔截,直接將變量的IP帶入到mysql據(jù)庫。所以造成了SQL注入漏洞的產(chǎn)生。那么滲透測試中發(fā)現(xiàn)SQL注入漏洞就是高危漏洞,帶來的危害較大,可以篡改數(shù)據(jù),修改數(shù)據(jù)庫,可以將管理員的密碼重置,或者是獲取所有的用戶賬號密碼等信息。發(fā)生用戶信息泄露,利用數(shù)據(jù)庫的權(quán)限修改管理員密碼登錄后臺進行下一步的提權(quán)操作,上傳webshell,控制網(wǎng)站代碼。
接下來還得檢測網(wǎng)站的各項功能以及APP功能是否存在邏輯漏洞,越權(quán)漏洞,水平垂直等等,我們SINE安全技術(shù)詳細(xì)的對每一個功能都測試很多遍,一次,兩次,多次的反復(fù)進行,在用戶重置密碼功能這里發(fā)現(xiàn)有漏洞,正常功能代碼設(shè)計是這樣的流程,首先會判斷用戶的賬號是否存在,以及下一步用戶的手機號碼是否與數(shù)據(jù)庫里的手機號一致,這里簡單的做了一下安全效驗,但是在獲取手機號驗證碼的時候并沒有做安全效驗,導(dǎo)致可以修改post數(shù)據(jù)包,將手機號碼修改為任意手機號來獲取驗證碼,利用驗證碼來修改重置密碼。
如何修復(fù)滲透測試中的SQL注入漏洞呢?
在對前端輸入過來的值進行安全判斷,確認(rèn)變量值是否存在,如果存在將不會覆蓋,杜絕變量覆蓋導(dǎo)致?lián)饺霅阂鈽?gòu)造的sql注入語句代碼在GET請求,以及POST請求里,過濾非法字符的輸入。 '分號過濾 --過濾 %20特殊字符過濾,單引號過濾,%百分號, and過濾,tab鍵值等的的安全過濾。如果對代碼不是太懂的話,也可以找專業(yè)網(wǎng)站安全公司來處理,國內(nèi)SINESAFE,啟明星辰,綠盟都是比較專業(yè)的。邏輯漏洞的修復(fù)辦法,對密碼找回功能頁面進行安全效驗,檢查所屬賬號的身份是否是當(dāng)前的手機號,如果不是不能發(fā)送驗證碼,其實就是代碼功能的邏輯設(shè)計出了問題,邏輯理順清楚了,就很容易的修復(fù)漏洞,也希望我們SINE安全分享的這次滲透測試過程能讓更多的人了解滲透測試,安全防患于未然。
申請創(chuàng)業(yè)報道,分享創(chuàng)業(yè)好點子。點擊此處,共同探討創(chuàng)業(yè)新機遇!