我正在審計一個項目,我發現了一種在查詢中注入數據的方法。 該項目使用Hibernate和這段代碼Session.createSqlQuery()
然後.list()
Hibernate SQL注入
的SQL是這樣的:「SELECT * FROM tablename ORDER BY column XXXXXX
」
XXXXXX
可以使用招進行修改。所以,我想
SELECT * FROM tablename ORDER BY column DESC; truncate table tablename;
不幸的是(也只爲我注射的嘗試),它不工作,我越來越:
您的SQL語法錯誤;檢查對應於你的MySQL服務器版本使用附近的正確語法手冊「截斷表的表名」
我的問題是,因爲他們使用createSQLQuery,他們是從注射安全。如果他們不是,你能舉個例子來強調這個問題。
我試着用08%(退格字符)想我將能夠刪除以前的查詢字符,例如(它沒有工作;))
感謝。
一些研究似乎我將無法與這個安全漏洞來修改數據,但是使用ORDER BY (CASE WHEN ...)
將允許「掃描」表和數據之後。
非常好的問題,看起來像HQL和SQL都不是安全的從注入,但你可以避免它,讀取這裏的文章http://software-security.sans.org/developer-how-to/fix -sql -injection-java-hibernate – Zeus