謹慎的客戶在網站及APP上線的同時,會找白帽駭客提前的對網站進行全面的入侵滲透測試以及安全檢
測,提前檢測出存在的網站漏洞,以免後期網站發展過程中出現重大的經濟損失,前段時間有客
戶找到我們ESAFE安全公司做入侵滲透測試服務,在此我們將把對客戶的整個入侵滲透測試過程以及安全
測試,發現的漏洞都記錄下來,分享給大家,也希望大家更深的去瞭解入侵滲透測試。
在對客戶的網站進行服務的同時,我們首先要瞭解分析資料包以及網站的各項功能,有助於我們
在入侵滲透測試中發現漏洞,修復漏洞,綜合客戶網站的架構,規模,以及資料庫類型,使用的服務
器系統,是windows還是linux,前期都要收集資訊,做到知彼知己百戰不殆。只有真正的瞭解了
網站,才能一層一層的找出漏洞所在。
網站使用的是php語言開發,採用是mysql資料庫,客戶伺服器用的是linux centos系統,用
phpstudy一鍵環境搭建,PHP的版本是5.5,mysql資料庫版本是5.6.客戶網站是一個平臺,采
用會員登錄,功能基本都是一些交互性的,會員資料修改,銀行卡添加,充值與提現,線上回饋
等等。
下面開始我們的整個入侵滲透測試過程,首先客戶授權我們進行網站安全測試,我們才能放開手的去幹
,首先檢測的是網站是否存在SQL注入漏洞,我們ESAFE安全在檢測網站是否有sql注入的時候都會
配合查看mysql資料庫的日誌來查詢我們提交的SQL語句是否成功的執行,那麼很多人會問該如何
開啟資料庫的日誌,如何查看呢?首先連接linux伺服器的SSH埠,利用root的帳號密碼進伺服器
,打開mysql的設定檔mysqld.cnf編輯general_log_file=(log日誌的位址
),general_log=1,在伺服器裡輸入tail -f (log位址),來查看即時的資料庫語句執行日誌。
當我們ESAFE安全技術在測試SQL注入漏洞的時候,就會即時的看到是否有惡意的SQL語句執行成
功,如果有那麼資料庫日誌就會出現錯誤提示,在入侵滲透測試中是很方便的,也更利於查找漏洞。
這裡不詳細的分析代碼了,我們在測試中發現平臺的後臺管理頁面存在SQL注入漏洞,當管理員登
錄後臺的時候我們看到guanlilogin.php裡POST到guanlicheck.php來對管理員的帳號密碼進行驗
證,在驗證的過程中guanlicheck.php並沒有對傳入過來的參數進行安全效驗,導致SQL注入漏
洞的產生,具體代碼如下:
代碼裡的getenv參數是獲取前端使用者的https頭資訊,通過資料比對,如果頭資訊大那麼久返回
0值然後再將IP賦值進去,通俗來講就是沒有任何的安全效驗與攔截,直接將變數的IP帶入到
mysql據庫。所以造成了SQL注入漏洞的產生。那麼入侵滲透測試中發現SQL注入漏洞就是高危漏
洞,帶來的危害較大,可以篡改資料,修改資料庫,可以將管理員的密碼重置,或者是獲取所
有的使用者帳號密碼等資訊。發生使用者資訊洩露,利用資料庫的許可權修改管理員密碼登錄後臺進
行下一步的提權操作,上傳webshell,控制網站代碼。
接下來還得檢測網站的各項功能以及APP功能是否存在邏輯漏洞,越權漏洞,水準垂直等等,我們
ESAFE安全技術詳細的對每一個功能都測試很多遍,一次,兩次,多次的反復進行,在使用者重置密碼
功能這裡發現有漏洞,正常功能代碼設計是這樣的流程,首先會判斷使用者的帳號是否存在,以及下
一步使用者的手機號碼是否與資料庫裡的手機號一致,這裡簡單的做了一下安全效驗,但是在獲取手
機號驗證碼的時候並沒有做安全效驗,導致可以修改post資料包,將手機號碼修改為任意手機號
來獲取驗證碼,利用驗證碼來修改重置密碼。
如何修復入侵滲透測試中的SQL注入漏洞呢?
在對前端輸入過來的值進行安全判斷,確認變數值是否存在,如果存在將不會覆蓋,杜絕變數覆蓋
導致摻入惡意構造的sql注入語句代碼在GET請求,以及POST請求裡,過濾非法字元的輸入。 '分
號過濾 --過濾 %20特殊字元過濾,單引號過濾,%百分號, and過濾,tab鍵值等的的安全過濾。
如果對代碼不是太懂的話,也可以找專業網站安全公司來處理。
邏輯漏洞的修復辦法,對密碼找回功能頁面進行安全效驗,檢查所屬帳號的身份是
否是當前的手機號,如果不是不能發送驗證碼,其實就是代碼功能的邏輯設計出了問題,邏輯理順
清楚了,就很容易的修復漏洞,也希望我們ESAFE安全分享的這次入侵滲透測試過程能讓更多的人瞭解滲
透測試,安全防患於未然。