不安全的配置-----從webgoat到nginx的四大漏洞

webgoat

不安全的配置

攻擊如何進行:
強制瀏覽是攻擊者用來獲取未引用但仍可訪問的資源的技術。 一種技術是通過從末尾刪除部分直到找到不受保護的目錄來操縱瀏覽器中的URL。

總體目標:

*您的目標應該是嘗試猜測“配置”界面的URL。
*“配置” URL僅對維護人員可用。
*該應用程序不檢查橫向特權。

在這裏插入圖片描述

由於不安全的配置,攻擊者可通過蠻力破解配置目錄並查看敏感信息,無非就是config\configure\conf等等暴力猜解,最後是conf完成本課題

不安全的存儲

教學的概念/主題:
出於不同的原因,可以在Web應用程序中使用不同的編碼方案。

總體目標:

本課將使用戶熟悉不同的編碼方案。

1.Base64編碼是一種簡單的可逆編碼,用於將字節編碼爲ASCII字符。 使字節成爲可打印的字符串很有用,但不提供安全性。
2.實體編碼對特殊字符使用特殊序列。 這可以防止大多數解釋器解釋這些字符。
3.基於密碼的加密(PBE)是使用文本密碼的強加密。沒有密碼無法解密

4.MD5哈希是一種校驗和,可用於驗證字符串或字節數組,但不能反向查找原始字符串或字節。出於模糊的原因,如果可以選擇,最好使用SHA-256。

5.SHA-256哈希是一種校驗和,可用於驗證字符串或字節數組,但不能反向查找原始字符串或字節。

6.Unicode編碼是一種爲支持全世界所使用的各種編寫系統而設計的字符編碼標準,它採用各種編碼方案,其中一些可用於表示web應用程序中的不常見字符

7.URL編碼

8.十六進制編碼

9.Rot13編碼是一種使文本不可讀的方法,但是很容易反轉並且不提供安全性。

10.具有密碼編碼的XOR是將密碼混入數據中的弱加密方案。

11.雙unicode編碼

12.Double URL編碼

不安全的溝通

課程要求

絕不應該以明文形式發送敏感數據! 授權後,應用程序通常會切換到安全連接。 攻擊者可能只是嗅探登錄名並使用收集到的信息闖入一個帳戶。 一個好的Web應用程序始終會負責加密敏感數據。

總體目標:

看看以純文本格式嗅探密碼有多麼容易。
瞭解加密登錄數據的優勢!

Stage1:在此階段,您必須嗅探密碼。 並在登錄後回答問題。

在這裏插入圖片描述
調式器下很容易發現密碼

Stage2:現在,您必須更改爲安全連接。 該URL應該以https://開頭。如果您的瀏覽器抱怨該證書,請忽略它。 再次嗅探並回答問題
在這裏插入圖片描述
在這裏插入圖片描述
這裏只需要將密碼傳輸修改爲非明文傳輸以及傳輸協議修改爲TLS即可,這裏只是告誡我們明文傳輸的危險性

SSL(Secure Sockets Layer 安全套接層),及其繼任者傳輸層安全(Transport Layer Security,TLS)是爲網絡通信提供安全及數據完整性的一種安全協議。TLS與SSL在傳輸層對網絡連接進行加密。

nginx不安全的配置

CRLF注入

CRLF即回車加換行的簡稱

-----首先是http和https通信之間的轉換,比如說之前學習會話管理的時候,在實現登錄功能的時候,有些網站會通過302重定向(響應包的location字段)實現HTTP和HTTPS功能的轉換。

在這裏插入圖片描述

因爲如上配置,每次訪問此網站時會自動重定向到https的網址,而這裏的並沒有對uri即資源標識符進行過濾的操作,並且$uri是解碼後的路徑。
在這裏插入圖片描述
所以這裏直接構造一個網址http://192.168.11.147:8080/%0aSet-cookie:a%3D1

在這裏插入圖片描述

如圖,這裏實現了換行的目的並對訪問者設置了一個cookie,也就是之前學習會話管理的“會話固定”的攻擊方式

正如上所訴,uriuri是解碼後的路徑,一種方案是將配置文件中host/後設置爲request_uri,因爲request_uri解碼前的。

nginx的目錄穿越

nginx在配置別名(Alias)的時候,如果忘記加/,將造成一個目錄穿越漏洞。

錯誤的配置文件示例(原本的目的是爲了讓用戶訪問到/home/目錄下的文件):

在這裏插入圖片描述

如圖,一般來說只要與文件系統交互的地方都有可能存在目錄遍歷漏洞,這裏的情況是需要nginx做反向代理的情況,動態文件交給後端處理,靜態文件自己去處理,而這是不能把敏感文件夾公之於衆吧(個人理解不知道是對是錯),所以就要爲/home文件設置一個別名用files代替,但是這裏files沒有’/'home卻有/,所以當我們訪問:http://192.168.11.147:8081/files../

在這裏插入圖片描述

就會產生任意文件下載漏洞。

nginx–add_header被覆蓋

Nginx配置文件子塊(server、location、if)中的add_header,將會覆蓋父塊中的add_header添加的HTTP頭,造成一些安全隱患。

在這裏插入圖片描述

  • CSP(Content-Security-Policy)是一種內容安全策略,這裏設置了js的同源策略,但是由於子塊中的文件覆蓋了此配置,將會導致安全漏洞

  • X-Frame-Options HTTP響應頭是用來確認是否瀏覽器可以在frame或iframe標籤中渲染一個頁面,網站可以使用此功能,來確保自己網站的內容沒有被嵌到別人的網站中去,也從而避免了點擊劫持 (clickjacking) 的攻擊。

  • x-content-type-options–當服務器響應頭X-Content-Type-Options:nosniff則script和styleSheet元素會過濾非指定的MIME文件

由於覆蓋了CSP策略,xss漏洞也易而實現。


不安去的配置導致解析漏洞

該漏洞與Nginx、php版本無關,屬於用戶配置不當造成的解析漏洞。是owasp中不安全的配置漏洞

----查看nginx的配置文件–圖一

在這裏插入圖片描述

nginx支持php文件解析,當我們以http://your-ip/uploadfiles/nginx.png/test.php去訪問nginx,nginx獲得URI之後識別到是php文件,而nginx本身是不能解析php文件的,此時會交給php-fpm去處理,但是此時並不存在test.php這個文件會丟棄繼續識別上一個文件,但上一個文件是png文件所以會返回錯誤–如圖

在這裏插入圖片描述

當然,這裏解析了,是因爲在php-fpm中的配置文件修改了–如圖

在這裏插入圖片描述

這裏security.limit_extensions = 這裏設置了可以解析png文件

還需要提一下的是–如圖

在這裏插入圖片描述

cgi.fix_pathinfo = 1這裏默認設置爲1,字面上的意思就應該很明確了,是修復其路徑使其規範化,它是用來對設置cgi模式下爲php是否提供絕對路徑信息或PATH_INFO信息。沒有這個參數之前PHP設置絕對路徑PATH_TRANSLATED的值爲SCRIPT_FILENAME,沒有PATH_INFO值。設置cgi.fix_pathinfo=1後,cgi設置完整的路徑信息PATH_TRANSLATED的值爲SCRIPT_FILENAME,並且設置PATH_INFO信息;如果設爲cgi.fix_pathinfo=0則只設置絕對路徑PATH_TRANSLATED的值爲SCRIPT_FILENAME。cgi.fix_pathinfo的默認值是1。nginx默認是不會設置PATH_INFO環境變量的的值,需要通過正則匹配設置SCRIPT_FILENAME,但這樣會帶來安全隱患。這裏參考了https://taobig.org/?p=650

最後可以通過此漏洞上傳圖片馬getshell。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章