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

短網(wǎng)址安全淺談! 這些你該了解

安全 應(yīng)用安全
何謂短網(wǎng)址(Short URL)?顧名思義,就是形式上比較短的網(wǎng)址,當前主要是借助短網(wǎng)址來替代原先冗長的網(wǎng)址,方便傳輸和分享。短網(wǎng)址服務(wù)也就是將長網(wǎng)址轉(zhuǎn)換為短網(wǎng)址的服務(wù),這種服務(wù)在方便了廣大網(wǎng)民的同時也帶來了一定的安全風險。

前言

何謂短網(wǎng)址(Short URL)?顧名思義,就是形式上比較短的網(wǎng)址,當前主要是借助短網(wǎng)址來替代原先冗長的網(wǎng)址,方便傳輸和分享。短網(wǎng)址服務(wù)也就是將長網(wǎng)址轉(zhuǎn)換為短網(wǎng)址的服務(wù),這種服務(wù)在方便了廣大網(wǎng)民的同時也帶來了一定的安全風險。

Tencent Blade Team專門對短網(wǎng)址的安全問題進行過研究,也在KCON 2018上進行過分享過部分成果,本文也是對議題《短網(wǎng)址的攻擊與防御》的解讀和補充。

一、短網(wǎng)址基礎(chǔ)

短網(wǎng)址服務(wù)可以提供一個非常短小的URL以代替原來的可能較長的URL,將長的URL地址縮短。用戶訪問縮短后的URL時,通常將會重定向到原來的URL。短網(wǎng)址服務(wù)主要起源于一些具有字數(shù)限制的微博客服務(wù),但是現(xiàn)在廣泛用于短信、郵件等。

很多安全問題是跟安全場景相關(guān)的,隨著場景的不斷變化,安全問題也是變化的。短網(wǎng)址的初衷是在微博這種限制字數(shù)的公共平臺使用,也就是說它基本是公開的,但是后續(xù)在個人短信和郵件之中,其實有部分已經(jīng)是私密的。 這直接引發(fā)了短網(wǎng)址第一個比較大的潛在風險。

在了解短網(wǎng)址風險和漏洞之前,我們首先應(yīng)該了解下短網(wǎng)址是什么以及如何工作。

短網(wǎng)址服務(wù)的基本流程:用戶將長網(wǎng)址提交到短網(wǎng)址服務(wù)中,之后短網(wǎng)址服務(wù)經(jīng)過URL處理之后,利用轉(zhuǎn)換算法對長網(wǎng)址進行轉(zhuǎn)換,最后分別將長網(wǎng)址和短網(wǎng)址存儲到數(shù)據(jù)庫之中。部分短網(wǎng)址服務(wù)為了防止出現(xiàn)對短地址進行連續(xù)轉(zhuǎn)化或者提供一些展示長網(wǎng)址TITLE的功能,所以會對長網(wǎng)址進行訪問。

 

其實對于短網(wǎng)址服務(wù)最核心的問題就是短網(wǎng)址的轉(zhuǎn)換算法。那么常用的短網(wǎng)址算法有哪些呢?我們分析了GitHub上star數(shù)量最多的十個短網(wǎng)址服務(wù)對應(yīng)的算法,大致分為三類:進制算法、隨機數(shù)算法和HASH算法。

下面我利用簡單的三個小例子介紹下對應(yīng)的算法:

(1)進制算法:

算法簡述:一個以數(shù)字、大小寫字母共62個字符的任意進制的算法。

數(shù)據(jù)庫中ID遞增,當ID為233,則對應(yīng)短網(wǎng)址計算過程如下:

  • ①設(shè)置序列為“0123456789abcdefghijklmnopqrstuvwxyz”
  • ② 233/36=6
  • ③ 233%36= 17
  • ④依次取上述字符的6位,17位,則為6h

其生成之后的短網(wǎng)址為xx.xx/6h

(2)隨機數(shù)算法:

算法簡述:每次對候選字符進行任意次隨機位數(shù)選擇,拼接之后檢查是否重復

若要求位數(shù)為2,則其對應(yīng)短地址為計算過程如下:

  • ①設(shè)置字符序列“0123456789abcdefghijklmnopqrstuvwxyz”
  • ②根據(jù)字符個數(shù)設(shè)置最大值為35,最小值為0,取2次隨機數(shù)假設(shè)為:6,17
  • ③依次取上述字符的6位和17位,則為6h

其生成之后的短網(wǎng)址為xx.xx/6h

(3)HASH算法:

算法簡述:對id進行hash操作( 可選:利用隨機數(shù)進行加鹽),并檢查是否重復

設(shè)置ID自增,若ID=233,則其對應(yīng)短地址為計算過程如下:

  • ①取隨機數(shù)為鹽
  • ②對233進行sha1加密為: aaccb8bb2b4c442a7c16a9b209c9ff448c6c5f35:2
  • ③要求位數(shù)為7,直接取上述加密結(jié)果的前7位為:aaccb8

其生成之后的短網(wǎng)址為xx.xx/2e8c027

了解完長網(wǎng)址轉(zhuǎn)為短網(wǎng)址的流程之后,我們下邊主要簡單說明下短網(wǎng)址轉(zhuǎn)化為長網(wǎng)址的流程,用戶訪問短網(wǎng)址,短網(wǎng)址服務(wù)返回一個302或者301的響應(yīng),從而跳轉(zhuǎn)到長網(wǎng)址。這個地方,幾乎所有短網(wǎng)址服務(wù)商會選擇302,因為302方便統(tǒng)計和分析用戶屬性等數(shù)據(jù)。

 

二、短網(wǎng)址服務(wù)風險

由于短網(wǎng)址服務(wù)自身存在的設(shè)計缺陷問題,尤其是一般短網(wǎng)址采用6位或者7位字母和數(shù)字的集合,可以被很好的預測,從而被針對性的爆破。

而在爆破中最重要的一個步驟就是如何檢測當前短網(wǎng)址使用的算法,從而生成該算法對應(yīng)的字典,下邊我們給出一些常見的算法檢測過程:

1、進制算法

(1)第三方短網(wǎng)址服務(wù)

針對第三方的短網(wǎng)址服務(wù),可以多次輸入網(wǎng)址,查看返回短網(wǎng)址是否連續(xù),連續(xù)則為進制算法,如下:

 

此外注意,由于個別為分布式短網(wǎng)址服務(wù),id非單一遞增,會出現(xiàn)多個字符規(guī)律變化,如:87BNwj、87BO82、87BOqw、87BOGz、87BPpD

(2)自營短網(wǎng)址服務(wù):

對于自營短網(wǎng)址服務(wù)可以采用以下兩個步驟進行,,

  • ① 直接訪問xx.xxx/1及xx.xxx/2低位等后綴,若均存在基本可以判定使用了進制算法進行轉(zhuǎn)換。
  • ② 對存在記錄的后綴進行增加或減少嘗試,若均存在記錄或者規(guī)律間隔存在記錄則基本認為使用了進制算法。

即:若某短網(wǎng)址存在http://xxx.xx/Abzc4 ,對Abzc4中最后一個單字符{0-Z}共62次變化。若均存在記錄或存在a,c,e等有規(guī)律間隔情況,則同樣可以認為使用了進制算法。

2、hash算法&隨機數(shù)算法

(1)第三方短網(wǎng)址服務(wù)

對于第三方可以多次輸入網(wǎng)址,查看返回短網(wǎng)址是否連續(xù),不連續(xù)無規(guī)律則為HASH算法&隨機數(shù)算法。如下圖:

 

(2)自營短網(wǎng)址服務(wù)

  • ① 直接訪問xx.xxx/1及xx.xxx/2低位等后綴,若均不存在則進行步驟2。
  • ② 對存在記錄的后綴進行增加或減少嘗試,若非均勻間隔存在記錄則基本認為使用了進制算法。

即:若某短網(wǎng)址存在http://xxx.xx/Abzc4 ,對Abzc4中最后一個單字符{0-Z}共62次變化。若無明顯規(guī)律則基本認為為HASH&隨機數(shù)算法

接下來,我們分享一下短網(wǎng)址的兩個攻擊場景,第一個是由于部分短網(wǎng)址在傳輸過程使用了含有敏感權(quán)限和敏感信息的長網(wǎng)址,由此造成大量個人信息泄露:,第二個是由于短網(wǎng)址的可預測和可爆破,有時候可能會產(chǎn)生一些想象不到的效果。

案例一:爆破短網(wǎng)址服務(wù)獲取大量服務(wù)、系統(tǒng)敏感信息:

1、獲取個人信息

http://xx.xx/auth?contractId=d57f17139247036b72******b5554a830305ec139d

2、獲取合同

https://xx.xx/get.action?transaction_id=290414****03784&msg_digest=RUQ2MUQ5NjcxQzc5MjcxQ*******4QTExNTZFNjgzQTJENEExQjc5Nw==

3、重置密碼

https://xx.xx/resetPassword?emailType=RESET_PASSWORD&encryptionEmail=***GHOsR%2FMfiNEv8xOC29.&countersign=eyJhbGciOiJIUzUxMiJ9.eyJBQlNPTFVURV9FWFBJUkVfVElNRV9NSUxMUyI6IjE1M******zA1OTMxNjU4OTQiLCJORVdfRU1BSUwiOiJ5YW54aXUwNjE0QGdtYWlsLmNvbSIsIlRPS0VOX1RZUEUiOiJSRVNFVF9QQVNTV09SRCIsIkVNQUlMIjoieWFueGl1MDYxNEBnbWFpbC5jb20ifQ

其實單從上邊的爆破出來的鏈接來看,每一個都極其的難以猜解,但是正是因為使用了短網(wǎng)址,從而把一些非常難猜解的高維度信息降低成了非常容易預測的低維度信息,就像你造了很堅固的房門,但是別人手里卻有備用鑰匙。

案例二:業(yè)務(wù)安全攻擊鏈

  1. 邀請鏈接直接發(fā)送給邀請人,邀請人點擊即可完成注冊;
  2. 邀請鏈接以短網(wǎng)址發(fā)送;
  3. 批量邀請,爆破短網(wǎng)址,批量點擊注冊,即可完成薅羊毛;

某個應(yīng)用有老用戶邀請新用戶的賺賞金活動,邀請鏈接以短網(wǎng)址形式發(fā)送給新用戶,新用戶點擊鏈接之后,則賞金會放到老用戶賬戶之中。那么在這個活動中,攻擊者用戶A可以隨機選擇兩個手機號,我們分別用用戶B和用戶C來代替這兩個用戶,那么攻擊用戶A邀請隨機選擇的這兩個手機號,之后直接爆破短網(wǎng)址進行確認,則在B和C不知情的情況下完成了賞金的領(lǐng)取。

三、短網(wǎng)址服務(wù)漏洞

其實當短網(wǎng)址出現(xiàn)短網(wǎng)址被猜解、爆破的問題,那么是不是會出現(xiàn)其他的問題,所以我們還對其進行了其他的安全測試。

1、SSRF安全問題

遠程訪問功能在過濾不嚴謹?shù)那闆r下會造成SSRF,測試時使用自定義域名綁定一個內(nèi)網(wǎng)地址之后進行訪問,該短網(wǎng)址服務(wù)展示了長網(wǎng)址的TITLE,如下成功訪問到了內(nèi)網(wǎng)地址:

 

2、獲取TITLE功能和展示長網(wǎng)址頁面,在過濾不嚴謹?shù)那闆r下,造成XSS。

部分短網(wǎng)址服務(wù)提供了長網(wǎng)址TITLE的展示功能和在當前頁展示長網(wǎng)址的功能,在過濾不嚴謹?shù)那闆r下也會造成xss。

 

如上圖中cve為在展示長網(wǎng)址頁面造成了xss問題。而同時取title并在頁面上展示也會造成xss,比如可以構(gòu)造payload:“</title><script>alert(1)<script><title>“。

3、sql注入問題

進行拼接查詢時會造成SQL注入。在測試中我們先進行了and 1=1的測試,發(fā)現(xiàn)可以正常讀取,如下圖:

 

之后再進行數(shù)據(jù)庫版本的聯(lián)合注入,如下圖:

 

四、短網(wǎng)址防御實踐

對于短網(wǎng)址服務(wù),建議以下措施提升安全性:

  1. 增加單IP訪問頻率和單IP訪問總量的限制,超過閾值進行封禁。
  2. 對包含權(quán)限、敏感信息的短網(wǎng)址進行過期處理。
  3. 對包含權(quán)限、敏感信息的長網(wǎng)址增加二次鑒權(quán)。

五、影響范圍

秉承“負責任的漏洞披露過程”,我們在測試過程中發(fā)現(xiàn)的短網(wǎng)址安全問題,均已通過對應(yīng)SRC通知相關(guān)廠商,廠商均已快速修復完畢。

精力有限,未能一一測試,還請各廠商自測修復。

責任編輯:未麗燕 來源: 騰訊安全響應(yīng)中心
相關(guān)推薦

2021-01-04 08:37:53

動態(tài)規(guī)劃DP

2021-02-09 09:55:24

動態(tài)規(guī)劃

2022-01-17 13:31:53

value背包解法

2021-07-13 14:03:24

二叉樹滿二叉樹完全二叉樹

2021-01-19 05:46:45

背包數(shù)組容量

2017-10-12 15:34:17

2021-06-06 18:22:04

PprofGopher邏輯

2020-10-29 10:43:24

網(wǎng)絡(luò)安全支付寶電子錢包

2021-04-27 07:52:18

跳槽數(shù)據(jù)分析

2015-08-12 15:12:56

黑客攻擊云安全云服務(wù)

2021-05-18 08:02:40

面試面試問題職業(yè)規(guī)劃

2021-03-29 09:37:17

SpringBoot常用注解Spring Boot

2019-09-18 17:35:52

2022-02-25 14:11:48

短網(wǎng)址Java算法

2020-04-03 18:43:21

大數(shù)據(jù)Hadoop數(shù)據(jù)

2021-05-11 07:39:58

跳槽談薪工作

2020-10-29 10:26:28

DevOps軟件自動化

2020-02-11 17:39:44

RSAC信息安全會議RSA大會

2023-12-07 08:13:58

Java開發(fā)

2017-11-22 10:53:22

點贊
收藏

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