記一次黑入盜號網站

JessieLin發表於2022-03-23

記一次黑入盜號網站後臺

事件起因:

某學校群聊又有人被騙了,發了類似這樣的內容,點進去一看就是偽裝成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域名必然備案,你應該也知道這樣做的後果。希望不要等落網了才知道後悔!

相關文章