記一次黑入盜號網站後臺
事件起因:
某學校群聊又有人被騙了,發了類似這樣的內容,點進去一看就是偽裝成QQ郵箱或者QQ空間後臺的網站,騙取QQ號碼。
隨便填寫賬號密碼後,有一個假的學籍查詢表單,讓你填一些敏感資訊啥的(黑入後臺後發現居然真有人寫了,汗)。突然心生一意:要不試試SQL隱碼攻擊看看?
過程
1、分析後臺介面
直接瀏覽器F12,點開網路,然後隨便輸個賬號密碼,點登入,就抓到登入介面了。
負載payload裡可以看到請求的引數為u、p、step三個引數,此處圖片就不展示了。
2、利用apipost或者postman,嘗試對後臺進行SQL隱碼攻擊:
設定u為‘and 1=1 即出現select的報錯提示:
再設定為'and 1=1 #10086,此時出現insert插入失敗的提示
看來後臺是先select一遍資料庫確定該使用者此前不存在,再insert到資料庫裡的。從insert內容可以看出會記錄ip和地址等資訊,因此單ip下傳送大量垃圾資訊也可以輕鬆過濾掉。
3.既然有個select 那自然有很大的操作空間
關於如何注入,可以看:(SQL隱碼攻擊實戰之報錯注入篇(updatexml extractvalue floor)_bckBCK的部落格-CSDN部落格_updataxml報錯注入
SQL隱碼攻擊之PHP+Mysql - Byskkip - 部落格園 (cnblogs.com)
SQL隱碼攻擊-攻入Apple ID釣魚網站實錄 - msp的昌偉哥哥 - 部落格園 (cnblogs.com)
我使用以下SQL隱碼攻擊套取資訊(替換使用者名稱引數如下):
' and updatexml(1,concat(0x7e,(select database()),0x7e),1) -- 1008611
以上這條可以套取到database()的資訊,套取出來結果是d149
同理替換select database()為其他語句可以套出MySQL版本資訊,本人套出來為5.6
根據此前套出來的select和insert語句還可以套出來cc_users表中的其他資訊,操作如下:
' and updatexml(1,concat(0x7e,(select group_concat(username) from d149.cc_users),0x7e),1) -- 1008611
需要使用concat語句連線查詢結果,否則會因為子查詢的row數量>1而報錯。或者使用limit語句,一個一個的套出來也可以。
我嘗試使用drop table cc_users.報錯。
注意預設情況下能套出來的資訊長度有限制,不能直接全部套出來,只能套一點點。
只有這些內容當然沒什麼用,我打算用SET語句
SET GLOBAL group_concat_max_len = 10240
修改concat語句預設的長度,但是報錯。
嘗試獲取information_shcema.tables或information_schema.columns,來套取其他表或其他列的資訊,結果請求不響應了,看來後臺有防備啊。
4.重磅的來了:群裡有位大佬直接套出了整個網站的原始碼
怎麼套的?直接原網站後面加上某個神祕數字.rar,下載下來就是原始碼....
結構大概如下:
其中有幾個重要檔案:
1.根目錄login.php wap資料夾下的login.php
偽造的登入頁面。裡面可以直接看到後臺所執行的SQL語句。
2.config資料夾下的_config.php檔案
包括資料庫名稱設定,使用者名稱設定,密碼設定,可以看到資料庫表的字首為cc_
3.重點之一:通過搜尋cc_users關鍵字,找到了資料庫備份所在的資料夾:config/sbak/bdata,其下有一個資料夾,內部居然是全部的資料庫備份!完整的資料庫建表SQL赫然在內。
分析可知管理員表名稱為cc_admins,內有f_userName,f_psw兩個欄位,分別對應賬號、密碼。還有一個f_userPwd,應該是密碼MD5加密後的結果。
4.重點來了
通過搜尋admin關鍵詞,鎖定了以下檔案:
d141/admin.php
這就是整個系統的後臺
直接在瀏覽器裡域名+d141/admin.php,報了404?
考慮到此前套出來資料庫名字為d149,訪問域名+d149/admin.php,成功進入後臺登入頁面!
5.套取管理員賬號和密碼
此前通過分析原始碼已經得知管理員表名稱和結構,直接通過以下SQL套取關鍵資訊:
' and updatexml(1,concat(0x7e,(select group_concat(f_userName) from d149.cc_admins),0x7e),1) -- 1008611
' and updatexml(1,concat(0x7e,(select group_concat(f_psd) from d149.cc_admins),0x7e),1) -- 1008611
' and updatexml(1,concat(0x7e,(select group_concat(f_userPwd) from d149.cc_admins),0x7e),1) -- 1008611
套取出來的資訊居然和前面資料庫備份的資訊一模一樣。(userPwd由於過長,後面有個字母f沒套出來)
直接利用使用者名稱和密碼,成功進入後臺:
後臺可以直接看到資料庫中的內容,由於此前已經被我刪庫過一輪,所剩資訊已經不多。
但是可以看到仍然有幾位同學上當受騙,甚至填寫了自己包括自己父母的真實資訊,包括手機號,沒刪庫前這樣的資訊大概有一百多條。
點選刪除按鈕,就刪除了一條記錄
那肯定不能這樣一條一條點呀,能不能SQL隱碼攻擊呢?答案是可以。
F12檢視網路,可以發現刪除的url如下:
/users.php?act=delete&user_id=1234
GET請求,可以直接在瀏覽器中輸入
分析原始碼中相關語句
直接後面拼接上or 1=1
變成
/users.php?act=delete&user_id=1234 or 1=1
瀏覽器位址列中輸入,回車,可以看到整個資料已經全部被清空
(瀏覽器會自動把空格轉為%20)
後臺還可以進行修改密碼、設定網頁標題等操作。
改密碼什麼的事情就不幹了,就這樣吧。嘗試ssh連線後臺linux伺服器,嘗試mysql遠端連線資料庫均失敗。
最後決定就SQL隱碼攻擊刪庫就好了,其他事就不幹了。
6.後記
希望大家提升安全意識,不要在來歷不明的網站隨便輸入自己的真實資訊!尤其是QQ群裡發的一些什麼教務處通知啥的,千萬不要點選。即使有這種網站,一定要檢查是否官方網站,是否https,是否境外網站(可以去站長之家等查詢網站的資訊),一般這種網站的域名都是奇奇怪怪的,並且IP都位於海外。
盜號網站原始碼不放出,以免有人利用原始碼禍害更多人。
SQL隱碼攻擊這種操作在Java的ORM框架下(mybatis等)基本失效,但是仍然是一個值得關注的安全問題,稍有不慎就會被套出全部資訊,平時一定要注意。
最後正告原作者:
你用的CN域名,可以直接查到你的姓名。還能查到你名下其他的域名。
請立即停止你的行為,既然是CN域名必然備案,你應該也知道這樣做的後果。希望不要等落網了才知道後悔!