自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何“組合拳”滲透開發(fā)者的本地數(shù)據(jù)庫

安全 黑客攻防
如果你是一名開發(fā)人員,平時可能在本地會運行一些數(shù)據(jù)庫服務,比如Redis,、Memcached、Elasticsearch之流。相信很多產(chǎn)品都會依賴這一類的服務,但是你可能不知道,這些本地運行的服務能跟你在外網(wǎng)訪問的網(wǎng)站進行通信,黑客也許能借此從你本地服務中竊取數(shù)據(jù)。

 [[171265]]

如果你是一名開發(fā)人員,平時可能在本地會運行一些數(shù)據(jù)庫服務,比如Redis,、Memcached、Elasticsearch之流。相信很多產(chǎn)品都會依賴這一類的服務。

但是你可能不知道,這些本地運行的服務能跟你在外網(wǎng)訪問的網(wǎng)站進行通信,黑客也許能借此從你本地服務中竊取數(shù)據(jù)。

攻擊如何生效的

雖然筆者下面要講的并不是新的東西,但攻擊利用方法其實還是比較新穎的,因為以前很少有人把這些攻擊組合在一起。在這里,我將結(jié)合兩種不同技術(shù)進行測試,即“跨協(xié)議腳本”+“DNS重新綁定”。

跨協(xié)議腳本(cross protocol scripting)

第一種技術(shù)我們稱之為“跨協(xié)議腳本”,有人在2001年曾經(jīng)放出過這種攻擊的細節(jié)。簡單解釋下攻擊原理,那就是Redis、Memcached都存在一個簡單的命令行協(xié)議,它會忽略無效的命令內(nèi)容。這意味著,你的瀏覽器如果發(fā)送下面的HTTP請求到你本地的redis(localhost:6379),redis就會執(zhí)行相應的SET命令。

  1. POST / HTTP/1.1  
  2. Host: localhost:6379  
  3. SET abc 123  
  4. QUIT 

惡意站點可以通過下面的form表單,借助你的手給你本地的redis發(fā)送惡意請求:

  1. <form enctype="text/plain"method="POST" action="http://localhost:6379">  
  2. <textarea name="abc">  
  3. SET abc 123  
  4. QUIT  
  5. </textarea>  
  6. <input type="submit"value="Submit" />  
  7. </form> 

而Elasticsearch協(xié)議則完全是基于HTTP,所以在通信時沒有什么特別的技巧和需要注意的地方。

但是我們在執(zhí)行上面的測試命令時,實際上是不能直接收到結(jié)果的。這是因為瀏覽器的同源策略,會在你發(fā)送請求給另一個域時,能進行限制讓你無法取得返回的數(shù)據(jù)。那么,現(xiàn)在我們就需要用到上面講的另外一門技術(shù)了。

DNS重綁定(DNS Rebinding)

簡單解釋下,DNS重綁定的攻擊原理就是字面的意思,我們采用某種手段重新更新一下DNS A記錄,綁定為別的地址。

為了繞過同源策略的保護,我們可以使用DNS重綁定技術(shù),這種攻擊需要一臺跟你相對TTL值很低的服務器作為域名站點。一旦你瀏覽器訪問了惡意網(wǎng)站,站點上的惡意代碼會在特定的時刻,突然將站點DNS記錄更改到另外一個的IP地址,比如你私有的IP地址(127.0.0.1),該惡意站點就能借此竊取你本地服務里面的數(shù)據(jù)。當然,這前提是在它訪問你本地的服務時,能夠通過相應的認證授權(quán)。

POC代碼

我在extractdata.club網(wǎng)站上插入了攻擊的POC代碼,它會主動嘗試連接你本地默認端口的Redis, Memcached和Elasticsearch服務。

大約一分鐘后,這個網(wǎng)站會返回類似于下面的頁面。

logo.jpg

這里的POC只會接收服務的版本信息,并不會去漫游你整個數(shù)據(jù)庫,咱們的POC代碼在這里。

修復方案

很遺憾其實沒有特別好的辦法來解決這個問題,但是我們可以試著為本地運行的服務設置密碼。筆者還想出了一個辦法,那就是對于Redis和Memcached這兩種服務,只要檢測到連接是通過HTTP請求發(fā)送來的,就可以立即阻止并退出。

對于瀏覽器方面來講,廠商可以在瀏覽器里面實現(xiàn)“DNS阻塞(DNS pinning)”。簡單來說就是,一旦某個網(wǎng)站被加載完成,瀏覽器就需要忽略其DNS的變化。

瀏覽器廠商也可以把Redis和Memcached端口加入它們阻塞的端口列表中,現(xiàn)在已經(jīng)在列表中的常見協(xié)議有SMTP和IRC。當然,這辦法是治標不治本,如果出現(xiàn)了新的服務還是會出現(xiàn)漏洞的。

后記

Chromium開發(fā)人員正在致力于移除對HTTP/0.9的支持,這樣瀏覽器就不能從Redisand和Memcached讀取數(shù)據(jù)了。然而,即使這樣是這樣做,黑客仍然可以進行遠程命令執(zhí)行。

對某些開發(fā)者來講,本地使用的測試數(shù)據(jù)庫里可能不會有太多有價值的東西。但黑客一旦擁有了讀寫權(quán)限,可能會對開發(fā)者的電腦進行遠程代碼執(zhí)行操作。比如,黑客可以用惡意的payload覆蓋疑似Ruby marshalled或者Python pickled數(shù)據(jù),這樣開發(fā)者的電腦就可能會淪陷。

結(jié)論

這個POC證明了計算機安全是很難得到絕對的保證的。有的時候,軟件單獨工作的時候看起來會很安全,但它們在交互時就可能就會產(chǎn)生一定的漏洞。

責任編輯:趙寧寧 來源: 黑客與極客
相關(guān)推薦

2017-04-01 18:00:08

開發(fā)者數(shù)據(jù)庫

2017-11-23 15:06:14

前端數(shù)據(jù)庫開發(fā)

2011-03-16 09:33:45

數(shù)據(jù)庫開發(fā)錯誤

2011-03-16 09:38:05

2022-07-25 09:46:25

React數(shù)據(jù)庫

2022-01-16 22:16:59

數(shù)據(jù)庫Sentry開發(fā)者

2023-12-08 09:35:37

2013-03-28 10:22:33

數(shù)據(jù)庫關(guān)系型數(shù)據(jù)庫數(shù)據(jù)庫設計

2018-08-19 14:45:10

甲骨文云服務數(shù)據(jù)庫

2010-07-08 15:48:34

開源

2010-03-18 14:23:28

SQL Azure

2014-12-24 09:51:22

WebNoSQL

2014-12-24 09:48:13

NoSQL關(guān)系數(shù)據(jù)庫

2013-07-23 14:18:24

2012-06-13 01:23:30

開發(fā)者程序員

2021-03-01 09:00:00

數(shù)據(jù)庫Web開發(fā)

2023-10-04 11:16:03

數(shù)據(jù)庫MySQL

2009-07-20 10:46:09

Ingres數(shù)據(jù)庫

2014-02-01 21:31:10

JavaScriptJS框架
點贊
收藏

51CTO技術(shù)棧公眾號