您的位置:首頁>正文

Django在Web開發中可能產生的安全問題!不知道你是否有碰到過?

既然Django已經足夠“安全”了, 那當我們真的遇到這類網站就真的束手無策了麼?其實不然, 在真實的生產環境中我就遇到過這些安全問題:小編推薦大家加一下這個群:103456743這個群裡好幾千人了!大家遇到啥問題都會在裡面交流!而且免費分享零基礎入門料資料web開發 爬蟲資料一整套!是個非常好的學習交流地方!也有程式師大神給大家熱心解答各種問題!很快滿員了。 欲進從速哦!各種PDF等你來下載!全部都是免費的哦!只為幫助大家快速入門, 所以小編在群裡等你們過來一起交流學習呢!

如圖所示, 已成功安裝Django。

Django的安裝目錄在C:Python36Libsite-packagesdjango中

Django框架在Web開發中的應用及可能產生的安全問題匯總(一)

童話

4 天前

0x00 前言

最近在搞站的時候遇到過一些基於Django開發的Web項目,黑盒挖出來了一些漏洞。恰好之前在學校的時候也拿Django寫過一些東西,but由於挺長時間沒動過也忘得差不多了,於是整理一份筆記。一來是對Django開發基礎的回顧,順手寫點小專案啥的,二來就其可能產生的安全問題以及如何避免做一些總結。

為了方便還原漏洞現場,做複盤,我會將詳細的環境及操作步驟記錄在文中,可能會有些冗餘,但一定會足夠詳細。希望同樣在學習這方面知識的同學,偶然看到了這篇文章,能有所收穫。當然,如有謬誤,還請不吝賜教。

其實像Django這類『現代Web框架(Web Framework)』,通過URL路由將用戶請求分發至指定的視圖函數(View function)去處理,不直接的對檔進行操作,已經不能像搞PHP的網站一樣,通過利用檔上傳漏洞很輕鬆的getshell。以及其自有的ORM框架,想寫出SQL注入漏洞還是挺費勁的(但並不是沒有了,Django框架仍然支持原生的SQL語句)。Django框架其自有的CSRF中介軟體(CSRF middleware)和範本標籤(template tag)又極大的避免了POST型的CSRF問題。

既然Django已經足夠“安全”了,那當我們真的遇到這類網站就真的束手無策了麼?其實不然,在真實的生產環境中我就遇到過這些安全問題:

1、邏輯漏洞(越權、邏輯混亂、設計不合理導致的驗證碼繞過等業務邏輯層面的漏洞)

2、GET型CSRF漏洞

3、SQL注入漏洞

4、DEBUG模式未關閉導致的敏感資訊洩露

5、條件競爭漏洞

之後我又做了一些功課,在特定的場景下,基於Django開發的應用還開可能存在這些問題:

1、XSS

2、檔上傳覆蓋指定檔getshell(上傳路徑可控、指定目錄具有寫許可權、Web服務需重啟)

3、框架本身的安全問題(0day、低版本漏洞)

4、命令、代碼執行(敏感的命令、代碼執行函數,反序列化漏洞)

0x01 基礎環境

Windows 7 SP1

Python 3.6.3

Django 2.0

Pycharm 2017.3.2(Professional Edition)

Notepad++ v7.5.2

0x02 說一說Django的MTV設計模式

Django採用了MTV設計模式,即Model(模型)、Template(範本)、View(視圖)。類比MVC,其實它倆除了名字不一樣,本質上沒有任何區別。

參考官方文檔,MTV分別承擔的角色如下,

Model(模型):

Django provides an abstraction layer (the “models”) for structuring and manipulating the data of your Web application.

Model(模型)層是Django提供的抽象層,其構建、操作Web應用的資料。即負責業務物件和資料庫表段、欄位的關係映射(ORM)。

Template(範本):

The template layer provides a designer-friendly syntax for rendering the information to be presented to the user.

Template(範本)層提供了設計友好的語法渲染資訊以呈現給使用者。即結合靜態的資源檔(HTML)渲染資料並回應內容到用戶端流覽器。

View(視圖):

Django has the concept of “views” to encapsulate the logic responsible for processing a user’s request and for returning the response.

View(視圖)層主要寫內容為業務邏輯,處理使用者的請求,經過業務邏輯後,再將處理後的結果返回。

整體的執行流程如下:

1、URL路由:使用者通過流覽器向服務端發起請求

2、View:業務邏輯。通過URL路由分發到指定的視圖函數(View function)處理使用者請求

3、Model:若需要資料庫操作則View層的View function去Model層(通過ORM建立資料庫表、欄位與Python物件的對應關係)中取資料,並將資料返回至View function。簡單來講就是處理資料庫相關操作(增刪改查等)。

4、Template:渲染數據。經過View層的處理,將需要返回給用戶端的處理結果(資料)發給Template層,經過Template(範本)渲染後,將HTML字串回應至用戶端。

至此就是一個簡單的MTV設計模式執行流程。

0x03 Django的安裝初始化及Hello World!

『Talk is cheap,show me the code.』吹牛逼沒啥意思,說了那麼多理論,還是先動動手吧。我比較喜歡的學習方式是,先搭個demo體會下,再學習原理,再思考其可能產生的安全問題。

這篇文章主要先說下Django的安裝及初始化,結合Demo說一下MTV設計模式。再之後的文章中就其可能產生的安全問題,結合實例,step by step的進行記錄。

一、Django的安裝及初始化

使用pip3 install django命令下載Django。

如圖所示,已成功安裝Django。

Django的安裝目錄在C:Python36Libsite-packagesdjango中

定義URL路由,將/showtime/請求分發至show_time()視圖函數進行處理。

啟動專案觀察結果。

謝謝閱讀!如有侵權請聯繫小編刪除!

Django框架在Web開發中的應用及可能產生的安全問題匯總(一)

童話

4 天前

0x00 前言

最近在搞站的時候遇到過一些基於Django開發的Web項目,黑盒挖出來了一些漏洞。恰好之前在學校的時候也拿Django寫過一些東西,but由於挺長時間沒動過也忘得差不多了,於是整理一份筆記。一來是對Django開發基礎的回顧,順手寫點小專案啥的,二來就其可能產生的安全問題以及如何避免做一些總結。

為了方便還原漏洞現場,做複盤,我會將詳細的環境及操作步驟記錄在文中,可能會有些冗餘,但一定會足夠詳細。希望同樣在學習這方面知識的同學,偶然看到了這篇文章,能有所收穫。當然,如有謬誤,還請不吝賜教。

其實像Django這類『現代Web框架(Web Framework)』,通過URL路由將用戶請求分發至指定的視圖函數(View function)去處理,不直接的對檔進行操作,已經不能像搞PHP的網站一樣,通過利用檔上傳漏洞很輕鬆的getshell。以及其自有的ORM框架,想寫出SQL注入漏洞還是挺費勁的(但並不是沒有了,Django框架仍然支持原生的SQL語句)。Django框架其自有的CSRF中介軟體(CSRF middleware)和範本標籤(template tag)又極大的避免了POST型的CSRF問題。

既然Django已經足夠“安全”了,那當我們真的遇到這類網站就真的束手無策了麼?其實不然,在真實的生產環境中我就遇到過這些安全問題:

1、邏輯漏洞(越權、邏輯混亂、設計不合理導致的驗證碼繞過等業務邏輯層面的漏洞)

2、GET型CSRF漏洞

3、SQL注入漏洞

4、DEBUG模式未關閉導致的敏感資訊洩露

5、條件競爭漏洞

之後我又做了一些功課,在特定的場景下,基於Django開發的應用還開可能存在這些問題:

1、XSS

2、檔上傳覆蓋指定檔getshell(上傳路徑可控、指定目錄具有寫許可權、Web服務需重啟)

3、框架本身的安全問題(0day、低版本漏洞)

4、命令、代碼執行(敏感的命令、代碼執行函數,反序列化漏洞)

0x01 基礎環境

Windows 7 SP1

Python 3.6.3

Django 2.0

Pycharm 2017.3.2(Professional Edition)

Notepad++ v7.5.2

0x02 說一說Django的MTV設計模式

Django採用了MTV設計模式,即Model(模型)、Template(範本)、View(視圖)。類比MVC,其實它倆除了名字不一樣,本質上沒有任何區別。

參考官方文檔,MTV分別承擔的角色如下,

Model(模型):

Django provides an abstraction layer (the “models”) for structuring and manipulating the data of your Web application.

Model(模型)層是Django提供的抽象層,其構建、操作Web應用的資料。即負責業務物件和資料庫表段、欄位的關係映射(ORM)。

Template(範本):

The template layer provides a designer-friendly syntax for rendering the information to be presented to the user.

Template(範本)層提供了設計友好的語法渲染資訊以呈現給使用者。即結合靜態的資源檔(HTML)渲染資料並回應內容到用戶端流覽器。

View(視圖):

Django has the concept of “views” to encapsulate the logic responsible for processing a user’s request and for returning the response.

View(視圖)層主要寫內容為業務邏輯,處理使用者的請求,經過業務邏輯後,再將處理後的結果返回。

整體的執行流程如下:

1、URL路由:使用者通過流覽器向服務端發起請求

2、View:業務邏輯。通過URL路由分發到指定的視圖函數(View function)處理使用者請求

3、Model:若需要資料庫操作則View層的View function去Model層(通過ORM建立資料庫表、欄位與Python物件的對應關係)中取資料,並將資料返回至View function。簡單來講就是處理資料庫相關操作(增刪改查等)。

4、Template:渲染數據。經過View層的處理,將需要返回給用戶端的處理結果(資料)發給Template層,經過Template(範本)渲染後,將HTML字串回應至用戶端。

至此就是一個簡單的MTV設計模式執行流程。

0x03 Django的安裝初始化及Hello World!

『Talk is cheap,show me the code.』吹牛逼沒啥意思,說了那麼多理論,還是先動動手吧。我比較喜歡的學習方式是,先搭個demo體會下,再學習原理,再思考其可能產生的安全問題。

這篇文章主要先說下Django的安裝及初始化,結合Demo說一下MTV設計模式。再之後的文章中就其可能產生的安全問題,結合實例,step by step的進行記錄。

一、Django的安裝及初始化

使用pip3 install django命令下載Django。

如圖所示,已成功安裝Django。

Django的安裝目錄在C:Python36Libsite-packagesdjango中

定義URL路由,將/showtime/請求分發至show_time()視圖函數進行處理。

啟動專案觀察結果。

謝謝閱讀!如有侵權請聯繫小編刪除!

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示