我創建了一個簡單的HTML/PHP頁面,僅用於獲取unsanitized用戶輸入。SQL Server:帶有隻讀用戶的unsanitized用戶輸入
它位於:http://109.201.140.29/mssql/
我這樣做只是爲了好玩,我用這個窗口服務器沒有別的當前。
當用戶只有(只讀)訪問數據庫test_db時是否有任何風險?
它還會將失敗/成功的請求,錯誤日誌的樣品(因爲你可以看到,DROP TABLE不工作):
[2014-07-08 14:27:41] (query) Execution of query: "DROP TABLE users;" Failed.
src IP: <snip>
err: SQLSTATE[42S02]: [Microsoft][SQL Server Native Client 11.0][SQL Server]Cannot drop the table 'users', because it does not exist or you do not have permission.
從成功的查詢示例日誌:
[2014-07-08 14:17:38] (query) Executed: "select * from users;".
src IP: <snip>.
Returned rows: 100.
[2014-07-08 14:17:45] (query) Executed: "select @@version;".
src IP: <snip>.
Returned rows: 1.
[2014-07-08 14:19:12] (query) Executed: "SELECT * FROM information_schema.tables".
src IP: <snip>.
Returned rows: 1.
簡單我想的問題;但這裏有風險嗎?除了用戶輸入作爲查詢的明顯缺陷。
用戶有我說的只讀訪問,並不是任何數據庫的所有者。
我問,因爲這是我的第一次使用SQL Server的經驗,但從我的測試中,至少查詢似乎只允許讀取(SELECT
),這對於此目的而言是可以的。
隨意測試查詢當然 - 因爲可能有一些查詢可能,我不知道。
'EXEC xp_dirtree'C:\''給了我一個結果....以及一半的結果 –
是的,我在錯誤日誌中看到hehe,編輯:我也打印捕獲的異常,無論它失敗。因此,有一半的結果:) – dusz
當然存在風險,攻擊者可以看到數據庫中包含的所有數據。更何況@ElectricLlama已經有了一個骯髒。 – esqew