拿下了一个美女图片网站!
原文鏈接:https://www.freebuf.com/articles/web/250308.html
大家好,我是鳥哥,一個(gè)半路出家的程序員。
這幾天一直再出搭建個(gè)人網(wǎng)站的文章,為了進(jìn)一步提高大家的積極性,我準(zhǔn)備搭建一個(gè)美女圖片的網(wǎng)站,于是就開始找相關(guān)的主題,結(jié)果就看到了今天要分享的這篇文章。很不錯(cuò),也很刺激,決定分享給大家。希望大家本著技術(shù)第一,看圖第二的態(tài)度認(rèn)真閱讀。
某天在無聊的瀏覽網(wǎng)頁的過程中,偶然間,偶然的點(diǎn)進(jìn)了某個(gè)美女圖片網(wǎng)站。
想著也是無聊,就隨便看看唄。結(jié)果一個(gè)圖集就放出3張圖,剩余的就要VIP(充錢),太可惡了!無聊的我就想看看能不能繞過限制,直接看到整個(gè)圖集。
一. 基本判斷
這個(gè)網(wǎng)站看上去沒有使用一些現(xiàn)成的網(wǎng)站框架,比如wordpress,所以有可能出現(xiàn)低級(jí)錯(cuò)誤。
如果使用的是網(wǎng)站框架,那我基本就直接放棄了,低版本框架雖然會(huì)有通用的漏洞(我沒能力利用),但低級(jí)錯(cuò)誤基本沒有的。
先創(chuàng)建了個(gè)賬戶,登錄之后查看了下存儲(chǔ),發(fā)現(xiàn)沒有使用cookie,反而使用了sessionStorage和localStorage:
cookie
sessionStorage
localStorage:略,沒什么有價(jià)值的內(nèi)容。
從這里以及文章最開始的圖來判斷,這個(gè)網(wǎng)站使用了不少前端的東西,很可能有些功能就是在前端實(shí)現(xiàn)的,或者使用了ajax技術(shù)。
二. 登錄、權(quán)限認(rèn)定
登錄賬戶后,先判斷圖集加載頁面怎么認(rèn)定用戶的權(quán)限的,看看會(huì)不會(huì)用到sessionStorage的uid或者token。
這里就要介紹下怎么使用火狐瀏覽器分析前端的代碼了。
按F12打開開發(fā)者工具,然后按照圖中的說明,查看加載圖集頁面時(shí)所發(fā)起的ajax請求:
從上圖得知,一共發(fā)起了4次ajajx請求,根據(jù)相應(yīng)的內(nèi)容,getContentInfo接口返回了圖集的數(shù)據(jù)。
從url這個(gè)字段來看,也剛好返回了3個(gè)圖片的url(用英文逗號(hào)分隔即可),也就是可以免費(fèi)看的那3張圖。
那看看發(fā)起請求的代碼是怎么樣的吧,選中堆棧跟蹤,可以看到請求代碼的調(diào)用過程,從下至上:
意思就是,在windows.onload中調(diào)用了getContentInfo函數(shù),getContentInfo函數(shù)中又調(diào)用了ajaxGetUser函數(shù)……
具體的位置,我們通過點(diǎn)擊堆棧跟蹤函數(shù)名右側(cè)的藍(lán)色鏈接,就可以直接跳轉(zhuǎn)過去:
window.onload
getContentinfo
這里可以看到傳入了一個(gè)object,就是getData,里面的token就是sessionStorage的token:
至于cid,就是圖集的id,這里我懶得去找在哪賦值的了。
如果前端代碼編寫不規(guī)范(比如這里對前端代碼都沒有混淆),那么變量很可能暴露在全局環(huán)境中。
直接在開發(fā)者工具的控制臺(tái)中輸出cid就能看到值了:
那其實(shí)到這我又沒法進(jìn)行下去了,傳入token是為了判斷用戶身份,傳入cid是判斷是哪一個(gè)圖集。
而對于token我也沒辦法對它做什么事情,也沒法冒充其他用戶的身份。
如果他傳入的是uid,也就是用戶id,那倒還可以試一試。
最后跟著代碼走下去的結(jié)果果然是這樣,沒有什么可以插手的地方。
三. 碰運(yùn)氣
我的思路都是建立在對方犯低級(jí)錯(cuò)誤的前提下的,那么這種不在后端實(shí)現(xiàn)全部的數(shù)據(jù)處理,而是在前端實(shí)現(xiàn),限制對方觀看的某些資源的,還有哪些低級(jí)錯(cuò)誤呢?
想了下,有沒有可能接口返回的數(shù)據(jù)是完整的,然后只是用js代碼將其隱藏而已……
但是最開始查看的返回?cái)?shù)據(jù)的時(shí)候,返回的圖片的url就3個(gè):
哦,另外,圖片的加載雖然不需要任何權(quán)限,基本沒有多少的防盜鏈措施(意思就是可以直接通過圖片地址訪問圖片),但圖片的地址是沒有規(guī)則可言的,如果是按照數(shù)字順序命名,那就可以直接獲取到整個(gè)圖集的圖片了。
我不死心,把所有的字段都看了遍,還真有發(fā)現(xiàn),在圖集的下面,有一個(gè)推薦圖片:
所以也返回了這部分的數(shù)據(jù):
點(diǎn)開一看,終于發(fā)現(xiàn)低級(jí)錯(cuò)誤了,url沒做處理,返回了整個(gè)圖集圖片的url:
也就是說,雖然這頁面的圖集本身的其余圖片我沒法看到,但是它頁面中推薦的圖集的圖片我全都可以看到:
注意:直接使用圖片地址其實(shí)還是不能查看到圖片,需要在地址后面加上一個(gè)參數(shù):
但是這個(gè)參數(shù)每次登錄后都是固定的,可以從localStorage中得到,也可以從免費(fèi)可觀看的圖片地址中得到,意義不大。
四. 弱口令
理論上有這招就可以把查看到大部分圖集的所有圖片了,不過我不是無聊嗎,又閑著看了看有沒有其他可以做的。
在圖集的下面,有一個(gè)評(píng)論區(qū),當(dāng)然,也是接口返回的數(shù)據(jù)。
在這里還是沒進(jìn)行處理,把所有評(píng)論用戶的用戶名全暴露了(手機(jī)號(hào)碼),當(dāng)然這些客戶的口令一般也不會(huì)出現(xiàn)很弱的口令,所以我沒去嘗試。
但是上傳這些圖集的賬戶的口令,那就不好說了,關(guān)注圖集上傳者后:
在個(gè)人主頁的關(guān)注部分,接口返回的數(shù)據(jù)中依然沒進(jìn)行處理,可以直接看到被關(guān)注者的用戶名:
我也就隨便一試,居然還真使用了弱口令,下圖是登錄成功后”我的作品“頁面:
點(diǎn)擊一個(gè)作品進(jìn)去,顯示已購買:
五. 對后臺(tái)管理的滲透
這個(gè)就不截圖詳細(xì)說明了,思路和上面的差不多,也主要是發(fā)現(xiàn)對方在前端的低級(jí)錯(cuò)誤。
僅僅知道登錄頁面A的地址,然后查看登錄頁面的Js文件。
發(fā)現(xiàn)登錄成功后使用js進(jìn)行跳轉(zhuǎn),跳轉(zhuǎn)到主頁面B,并且登錄成功后的在sessionStorage中設(shè)置了一些字段。
先直接訪問主頁面B,發(fā)現(xiàn)會(huì)先將頁面的框架加載完畢后,再跳轉(zhuǎn)回頁面A。由此可以得出判斷,B頁面的跳轉(zhuǎn)語句和A頁面差不多,都是使用Js語句實(shí)現(xiàn)的。禁用Js功能,再進(jìn)入B頁面,發(fā)現(xiàn)果然停止了跳轉(zhuǎn)。但是雖然頁面框架正常加載,但卻沒載任何數(shù)據(jù)。查看B頁面加載的Js文件,在跳轉(zhuǎn)回A頁面的代碼前后找到了判斷語句,使用sessionStorage中的字段進(jìn)行判斷。
于是設(shè)置sessionStorage中的相關(guān)字段,繞過了登錄的過程,數(shù)據(jù)正常加載了,達(dá)到了滲透的目的。
六. 感想
其實(shí)從開發(fā)的角度,如果要保證代碼至少在邏輯方面沒有明顯的漏洞,還是有些繁瑣的。
舉個(gè)簡單的例子,如網(wǎng)站的數(shù)據(jù)檢驗(yàn)功能,不允許前端提交不符合當(dāng)前要求規(guī)范的數(shù)據(jù)(比如年齡文本框部分不能提交字母)。
那么為了實(shí)現(xiàn)這個(gè)功能,首先開發(fā)者肯定要在前端實(shí)現(xiàn)該功能,直接在前端阻止用戶提交不符規(guī)范的數(shù)據(jù),否則用戶體驗(yàn)會(huì)很差,且占用服務(wù)器端的資源。但是沒有安全意識(shí)或覺得麻煩的開發(fā)者就會(huì)僅僅在前端用Js進(jìn)行校驗(yàn),后端沒有重復(fù)進(jìn)行校驗(yàn)。
這樣就很容易給惡意用戶機(jī)會(huì):比如不通過前端頁面,直接向后端接口發(fā)送數(shù)據(jù):或者,前端代碼編寫不規(guī)范,用戶可以直接在瀏覽器控制臺(tái)中用自己寫的Js代碼覆蓋原有的Js代碼;或者,用戶還可以直接在瀏覽器中禁用Js;等等。總之,前端的傳過來的數(shù)據(jù)可信度基本上可以認(rèn)為比較低,太容易被利用了。
而我的思路都是很簡單的,就是關(guān)注比較重要的幾個(gè)節(jié)點(diǎn),看看有沒有可乘之機(jī)。如登錄、權(quán)限判定、數(shù)據(jù)加載等前后,對方是怎么做的,用了什么樣的技術(shù),有沒有留下很明顯的漏洞可以讓我利用。像這兩個(gè)網(wǎng)站,加載的Js文件都沒有進(jìn)行混淆,注釋也都留著,還寫得很詳細(xì)。比較湊巧的是,這兩個(gè)網(wǎng)站都用到了比較多的前端的技術(shù),也都用到了sessionStorage。特別的,它們都把很多的業(yè)務(wù)功能放在前端實(shí)現(xiàn),于是存在明顯漏洞的可能性就比較大,就值得我去嘗試。
END
推薦閱讀牛逼!Python常用數(shù)據(jù)類型的基本操作(長文系列第①篇) 牛逼!Python的判斷、循環(huán)和各種表達(dá)式(長文系列第②篇)牛逼!Python函數(shù)和文件操作(長文系列第③篇)牛逼!Python錯(cuò)誤、異常和模塊(長文系列第④篇)總結(jié)
以上是生活随笔為你收集整理的拿下了一个美女图片网站!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VS Code,请还我文件!!!
- 下一篇: 一个悄然成为世界最流行的操作系统诞生!