2017.W46 - No SQL Injection in No SQL ? - 資安

Catherine avatar
By Catherine
at 2017-11-14T22:14

Table of Contents

2017.W46 - No SQL Injection in No SQL?
> 雖然 No-SQL 已死(?) 但這問題還蠻有趣的

## 前言 ##
最近在查資料 突然看到一篇文章[0]

提到 mongo DB 的 SSJI (Server-Side JavaScript Injection) 進而 RCE 攻擊

也順便學一下 NoSQL 的一些語法跟概念



## 內容 ##
NoSQL [1] 是一種不同於傳統關聯式資料庫[2] 的一種資料儲存型態

跟一般 DB 相較起來 更強調 Key-Value 形式的資料儲存

在大量資料的狀況下更可以平行處理


以 mongo DB[3] 為例 他提供多種類似 SQL 的語法[4]

像是 $where 後面就可以接 NoSQL 語法的條件

可能是簡單的條件成立 "this.credits == this.debits || this.credits > this.debits"

或者是函數的方式 function() { return obj.credits - obj.debits < 0; }

更甚之 可以使用巢狀式的 $and: [ { price: { $ne: 1.99 } }, { price: { $exists: true } }



而在研究者提出來的 SSJI to RCE 文章中

主要是提到 mongodb 提供了 run() [5] 這個內部使用的函數

這個函數可以被用來執行系統指令

透過一連串的分析之後 run() -> nativeHelper.apply(run_, arguments) -> nativeHelper.apply({"x": 135246144})

最後就可以在 NoSQL 的查詢語法中 執行惡意的 JavaScript

藉由分析 source code [6] 來建立相關的 payload



OWASP [7] 也針對 NoSQL 來提供簡單判斷是否存在 SQL Injection 的方式

除了上面那種透過 nativeHelper 執行惡意 payload 之外

也可以簡單 [8] 地透過上面提到的巢狀指令來做 SQL Injection


[0]: https://blog.scrt.ch/2013/03/24/mongodb-0-day-ssji-to-rce/
[1]: https://zh.wikipedia.org/wiki/NoSQL
[2]: https://en.wikipedia.org/wiki/Relational_database
[3]: https://www.mongodb.org/
[4]: https://docs.mongodb.com/manual/reference/operator/query/where/
[5]: https://docs.mongodb.com/manual/reference/method/run/
[6]: https://github.com/mongodb/mongo
[7]: https://www.owasp.org/index.php/Testing_for_NoSQL_injection
[8]: http://cyrilwang.blogspot.tw/2012/06/nosql-no-injection.html

--
Tags: 資安

All Comments

2017.W44-45 - Privileges Escalation

Aaliyah avatar
By Aaliyah
at 2017-11-07T22:37
2017.W44-45 - Privileges Escalation ## 前言 ## 上禮拜外出取材 不巧遇到 PTT 大斷線就停刊一天 今天的內容我會更加充實的 (握拳) 話說 推薦已滿 18 歲的人可以去看淺草的 ROCKZA 目前已經三刷 ROCKZA 感覺都滿有趣的 內容也相當有水 ...

2017.W43 - L(R)FI

Elizabeth avatar
By Elizabeth
at 2017-10-24T22:17
2017.W43 - L(R)FI andgt; 最近沒有愛 上班都在玩 OSCP ## 前言 ## PHP 是最好的語言 沒有之一[1] ## 內容 ## 在 CWE 的分類中 (98)[2] 介紹了 不正確檔案引用 的類別 在 PHP 跟其他 script language 中 可以動態引 ...

我可以查某段時間電腦連線紀錄嗎?

Tom avatar
By Tom
at 2017-10-21T19:57
打個比方,我可以查我的電腦隨意某個時間區間的上網紀錄嗎? 有點像netstat可以看目前電腦的狀態,然後運用wmic來產生log嗎? 還是說有什麼其他的方法可以達成一樣的事? 麻煩大家了!! - ...

2017.W42 - OAuth 2

Andrew avatar
By Andrew
at 2017-10-17T23:43
2017.W42 - OAuth 2 andgt; 感謝師 (ㄏㄞˋ) 傅 (ㄎㄜˋ) 賜我吃穿 ## 前言 ## 認證系統真的很多 每個服務都需要記帳號密碼實在是很煩惱 既擔心 EYNY 論壇的密碼洩漏 影響 gmail 的安全性 又擔心密碼太多 會忘記 FC2 ...

資安人才

Caroline avatar
By Caroline
at 2017-10-15T18:47
感覺只有x逸,x匠有相關證照考試課程 做滲透測試人員的多嗎 大多都有什麼樣的基礎呢 - ...