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

強(qiáng)加密算法下,SQL注入案例

安全 應(yīng)用安全 算法
密碼學(xué)具有各種優(yōu)點(diǎn),包括信息的機(jī)密性。然而,過度依賴密碼學(xué)來保護(hù)應(yīng)用程序是一個(gè)壞主意。今天我們就通過一個(gè)案例研究,來認(rèn)識一下通過加密的有效載荷識別和利用SQL注入漏洞。

密碼學(xué)具有各種優(yōu)點(diǎn),包括信息的機(jī)密性。然而,過度依賴密碼學(xué)來保護(hù)應(yīng)用程序是一個(gè)壞主意。今天我們就通過一個(gè)案例研究,來認(rèn)識一下通過加密的有效載荷識別和利用SQL注入漏洞。

SQL注入也許很多人都知道或者使用過,如果沒有了解或完全沒有聽過也沒有關(guān)系,因?yàn)榻酉聛砦覀儗⒔榻BSQL Injection。

SQL注入,就是通過把SQL命令插入到Web表單遞交或輸入域名或頁面請求的查詢字符串,最終達(dá)到欺騙 服務(wù)器 執(zhí)行惡意的SQL命令。

具體來說,它是利用現(xiàn)有應(yīng)用程序,將惡意的SQL命令注入到后臺 數(shù)據(jù)庫 引擎執(zhí)行的能力,它可以通過在Web表單中輸入惡意SQL語句得到一個(gè)存在安全漏洞的網(wǎng)站上的數(shù)據(jù)庫,而不是按照設(shè)計(jì)者意圖去執(zhí)行SQL語句。

那SQL注入會在什么時(shí)候發(fā)生呢?

假設(shè)我們在瀏覽器中輸入U(xiǎn)RL www.sample.com,由于它只是對頁面的簡單請求無需對數(shù)據(jù)庫動(dòng)進(jìn)行動(dòng)態(tài)請求,所以它不存在SQL Injection,當(dāng)我們輸入www.sample.com?testid=23時(shí),我們在URL中傳遞變量testid,并且提供值為23,由于它是對數(shù)據(jù)庫進(jìn)行動(dòng)態(tài)查詢的請求(其中?testid=23表示數(shù)據(jù)庫查詢變量),所以我們可以在該URL中嵌入惡意SQL語句。

不過要提前說明一下,我們不會在本文中討論加密問題,而是只討論應(yīng)用程序缺陷,我們會先生成加密的有效載荷,然后將其用于識別和利用SQL注入。

在最近我們接觸到的一個(gè)電子商務(wù)應(yīng)用程序中,觀察了該網(wǎng)站的大多數(shù)請求參數(shù)值已被加密。當(dāng)請求參數(shù)被加密時(shí),很難對應(yīng)用程序進(jìn)行模糊測試,除非我們可以去除加密,不過這需要知道密鑰和加密算法。

下圖就是我們所找的樣本網(wǎng)站的詳細(xì)信息頁面,該頁面就是以加密格式發(fā)送id(orderid)參數(shù)的。

注意:參數(shù)值(BDKfx3xNKsc =)是加密的,而不是簡單的base64編碼。ID參數(shù)的加密值以base64編碼格式表示。

我們還注意到,如果我們退出應(yīng)用程序,然后以相同的用戶登錄并導(dǎo)航到完全相同的頁面,則加密參數(shù)(nPBri1km2ic =)的值現(xiàn)在不同,如下所示。

正如上圖所示,隨機(jī)密鑰在每個(gè)成功的登錄或會話ID(cookie的一部分)中用于加密,以某種方式用作密鑰的一部分。這看起來很安全,不過還是讓我們嘗試著SQL注入。

首先,我們嘗試在多個(gè)位置注入單引號(')以測試輸入驗(yàn)證,但請求參數(shù)被拒絕,因?yàn)檫@些參數(shù)需要加密格式(即有效的密文)。

不過我們在這里可以使用購物車的一個(gè)分享功能,此功能允許用戶與其他人共享購物車項(xiàng)目。當(dāng)用戶保存購物車進(jìn)行共享時(shí),會產(chǎn)生一個(gè)帶有隨機(jī)查詢令牌的鏈接。通過訪問此鏈接(URL),用戶可以訪問彼此的購物車。在購物車被要求保存之前,用戶被要求在購物車上標(biāo)記一個(gè)名字。

由于這是接受明文輸入的罕見輸入字段之一,所以我們將其編碼為SQLi,XSS。在更深入的檢測中,我們發(fā)現(xiàn)生成的URL中的令牌共享購物車實(shí)際上是我們?yōu)橘徫镘囘x擇的購物車名稱的密碼。

不過請注意,共享購物車功能可不會輕易受到任何攻擊的影響,但可以用于為給定輸入(明文)生成加密的有效內(nèi)容(密文)。現(xiàn)在,可以共享購物車功能的鏈接就可以生成一個(gè)加密的攻擊有效載荷來檢查應(yīng)用程序?qū)QL注入,繞過授權(quán)等漏洞行為進(jìn)行驗(yàn)證了。為了測試SQL注入,生成了單引號(')的加密值。

加密的有效載荷用于模糊僅接受密文值作為輸入的各種應(yīng)用參數(shù)。我們花了一些時(shí)間來打到正確的位置,但是最終,orderitem頁面的ID參數(shù)返回一個(gè)SQL錯(cuò)誤消息,確認(rèn)該漏洞。

該錯(cuò)誤消息證明應(yīng)用程序生成動(dòng)態(tài)查詢,并可能容易受到SQL注入攻擊。現(xiàn)在是從數(shù)據(jù)庫中提取信息的時(shí)候了,基于UNION的SQL查詢用于從數(shù)據(jù)庫中提取數(shù)據(jù),聯(lián)合運(yùn)算符用于組合兩個(gè)或多個(gè)select語句的結(jié)果。

第一個(gè)任務(wù)是確定作為SQL查詢的一部分返回的列數(shù),使用試錯(cuò),我們在查詢中返回了一些列(30)?,F(xiàn)在是時(shí)候從數(shù)據(jù)庫中提取信息了,我們創(chuàng)建了一個(gè)加密的有效載荷來提取數(shù)據(jù)庫版本信息,如下所示。

然后,把上述有效載荷的輸出生成的密文作為頁面上易受攻擊的ID參數(shù)輸入。

然后我們使用這個(gè)漏洞來構(gòu)建數(shù)據(jù)庫系統(tǒng),最終得到一個(gè)shell。

總結(jié)

由上面的分析可知,用加密參數(shù)來實(shí)現(xiàn)應(yīng)用程序中的安全性其實(shí)并不像想象中的那么安全,比如用強(qiáng)加密算法加密的數(shù)據(jù),惡意攻擊者可以使用加密的有效載荷的方式來進(jìn)行攻擊。 目前,加密仍被認(rèn)為是保護(hù)數(shù)據(jù)免遭篡改或欺騙的有力機(jī)制,不過由于加密執(zhí)行不力和缺乏明確的使用隱私保護(hù),所以仍有可能會造成相當(dāng)危險(xiǎn)的安全漏洞。

責(zé)任編輯:趙寧寧 來源: 嘶吼網(wǎng)
相關(guān)推薦

2023-10-16 19:05:20

2021-11-22 23:20:01

加密算法架構(gòu)

2023-08-02 07:27:53

2009-08-13 18:12:11

C#數(shù)據(jù)加密

2012-09-13 09:58:38

2023-07-30 17:44:24

CryptoJS加密字符串

2009-08-21 15:02:31

C#加密算法

2020-12-16 05:46:58

算法加密算法MD5

2011-08-18 12:12:29

2009-08-04 11:08:33

ASP.NET數(shù)據(jù)加密

2020-07-30 07:58:36

加密算法

2015-05-27 16:35:59

2024-01-10 14:29:08

2013-10-17 13:20:34

2010-09-09 10:06:56

Zigbee協(xié)議棧加密算法

2020-05-08 11:13:28

Python數(shù)據(jù)技術(shù)

2018-07-10 10:29:27

2024-12-31 08:00:00

SpringBoot開發(fā)加密

2015-06-23 11:11:55

2020-05-09 14:20:11

信息安全加密
點(diǎn)贊
收藏

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