?劇情是這么展開的拳缠,從發(fā)現(xiàn)微信通訊錄多了個新好友(我老爹)小紅點到老爹給我電話咨詢他微信幾十萬的零錢為毛變成零余額烙丛,前后間隔不會超過三十分鐘么伯。所以今兒我們就用菜場賣菜的語言,來簡單的談談應用系統(tǒng)主要的安全漏洞/控制绝骚。
為什么要做安全控制?
所謂安全控制,并不是說有無安全控制的概念祠够。只是因為時代不斷發(fā)展压汪,軟件系統(tǒng)的安全級別需要不斷上升的一個過程。在過去古瓤,國內(nèi)互聯(lián)網(wǎng)剛剛起步止剖,接觸的人都少之又少,根本不需要過多的安全級別限制落君。后來隨著互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展和傳播穿香,人們對于計算機的認識程度越來越高,也有越來越多的不良分子投身于這一行業(yè)绎速,才有了下面我們所有說的各種安全防范手段皮获。
這個過程就好比二十年前,水果市場前翻了輛運送水果的集卡纹冤,根本沒有人哄搶洒宝,眾人拾柴幫司機歸位了四散的水果兄弟,送到老板那一過稱萌京,哎呀媽呀雁歌!竟然多了十來斤!(很多人在幫忙的同時也許就忘了手上拎的是自己買的水果知残,一并給了司機)
現(xiàn)在車翻了靠瞎,說不定四個輪子都讓丫一哄而散,司機車拉起來還得找道路救援借四個備胎橡庞。
所以說较坛,隨著大環(huán)境的發(fā)展,軟件系統(tǒng)的安全級別不得不被動的提升扒最,以保護自身利益不受損害丑勤。畢竟,保險他也不賠不是吧趣。
從何說起?
前面我們也說了法竞,安全級別的提升耙厚,一定是基于大環(huán)境的。也就是說岔霸,你去菜場買菜薛躬,要是菜場全是良心商人,根本不可能短斤少兩呆细,你其實根本就不需要留心眼帶個電子秤什么的型宝。有一天出現(xiàn)了一個黑心商販,那么我們把它叫做攻擊者絮爷,所以說我們今天要說的安全趴酣,一定都是從攻擊方來談起。我們所說的漏洞其實也容易理解坑夯,就我們的菜場理論來說岖寞,比如你是個盲人、是個弱智或者是個菜場新面孔柜蜈,這些統(tǒng)統(tǒng)都可以稱為安全漏洞仗谆。
有哪些攻擊方式?
今天我們不談多大也不談多深。
第一心哥粉絲基數(shù)真的忒少淑履,公眾號本就是業(yè)余時間和大家一起分享人生的一副業(yè)隶垮,所以專注度肯定有限。
第二說白了心哥也就一個被吐槽連單例都寫不好的行業(yè)小白鳖谈,實在無臉裝逼岁疼。
最后,最后缆娃,最后捷绒,重要的事情說三遍:心哥小學時,也就是QICQ剛創(chuàng)業(yè)時贯要,郵箱里面躺著一大波(至少兩百來個)密碼鍵盤記錄發(fā)來的五位數(shù)QQ賬號密碼啥的暖侨,二十多年前就是一個本可富可敵國的天才黑客,現(xiàn)在長成了一個屌絲碼農(nóng)崇渗,心哥實在無顏回江東字逗。
今天,我們簡單談談以下幾個攻擊方式/安全相關(guān):
二次放號
密碼加密
驗證碼
提權(quán)攻擊
重放攻擊
跨站腳本攻擊
菜場好戲開場了
馬上要開始準備晚餐宅广,上午游戲打得手疼葫掉,所以腿不太方便走路了,只能讓我那個八百度近視雙耳失聰外加先天性小兒麻痹的室友前往了跟狱。走之前我丟給他他一張黑金VIP卡俭厚,菜場三折優(yōu)惠。
二次放號
室友到了菜場驶臊,直奔羊肉鋪要了三斤羊腿挪挤,一百二大洋叼丑。他把黑卡一亮君臨天下,老板諾諾的收了36塊了事扛门。剛想走鸠信,身邊的老頭從柜臺下給他遞過來10塊錢,眼神示意借卡一用论寨。最后老頭用他的卡一次買了20斤羊腿星立,凈省560塊。
這就是典型的變種二次放號事件葬凳,因為不記名或者記名信息的不同步贞铣,導致肉鋪老板(系統(tǒng))無法識別VIP卡(登錄手機號)的具體所有者,從而導致只要是持卡人的人沮明,都能享受屌炸天的折扣優(yōu)惠。
這一情況理論上不屬于安全攻擊或是安全控制的范疇窍奋,他只能算是一種漏洞荐健,在國內(nèi)的運營商和各個系統(tǒng)間,這一現(xiàn)象是普遍現(xiàn)象琳袄。
就比如我老爹江场,換號了但是他根本不知道需要微信解綁手機號再重新綁定新手機號碼,這樣一來只要是幾個月后之前的手機號注銷窖逗,號碼被運營商重新分配給新的號碼所有者址否,然后這丫通過微信短信驗證碼登錄。哐當碎紊!瞬間發(fā)現(xiàn)登進去的賬號里竟然有幾十萬的零錢余額佑附,炸不炸裂!仗考?(當然微信沒那么傻音同,肯定做了類似常用設(shè)備、安全問題等風控策略)
再反過來說秃嗜,二次放號對于新號碼擁有者权均,也同樣有著各種不爽。比如說用新手機號注冊各類用戶時锅锨,發(fā)現(xiàn)其實這號碼已經(jīng)被綁定注冊過了叽赊,更蛋疼的是也許綁定的應用壓根就不允許短信找回密碼。(當然必搞,多數(shù)情況不會)
基于以上必指,二次放號實際上一種挺危險(傻逼)的事情,它存在巨大的安全風險顾画,不管是對原號碼持有者還是新號碼擁有者取劫。而這一切匆笤,都是運營商挖的坑!
最最關(guān)鍵的是谱邪,它不是沒有解決策略炮捧,并且它的解決策略相當簡單。只需要運營商開放客戶手機號開戶時間API惦银,這樣咆课,第三方系統(tǒng)在登錄/注冊等功能環(huán)節(jié),只需要拿手機號注冊時間和系統(tǒng)用戶注冊時間比較一下:晚于系統(tǒng)注冊時間的扯俱,肯定是二次放號用戶书蚪;反之為正常用戶。
然并卵迅栅,你覺得哪個運營商會鳥你?
密碼加密
室友又買了一斤豌豆殊校,突然發(fā)現(xiàn)有點尿急,給完錢把三斤羊腿一起放在老板那读存,跟老板打了聲招呼說回頭來拿就直奔糞坑而去为流。
結(jié)局很現(xiàn)實,一斤豌豆和三斤羊腿丟了让簿。老板也不知道是誰拿走了敬察,總之就是有人拿走了。室友和老板吵了許久尔当,無果莲祸,只能自認倒霉。他們的爭吵也不是沒有結(jié)論椭迎,最后老板妥協(xié)的和他約法數(shù)章
要是室友下次再到老板這買菜需要寄存服務锐帜,老板給他提供口令服務,必須說對了和老板約定的口令畜号,才能拿走東西
東西買的多抹估,老板提供更安全的密碼寄存服務,老板在事先準備的專用紙張寫上室友說出的取菜碼弄兜,把專用紙張給室友保存药蜻,必須紙張和口令都對了,老板才讓他取走替饿。
室友雖然有點腦殘语泽,但腦洞那也是無限巨大,又寫了一條附加條款
寄東西的時候视卢,老板也需要留個口令給他踱卵,免得認錯人
室友的腦洞巨大那是后話,雖然這場景有些傻逼,但是他的思想確實有那么點道理惋砂。萬一我認錯人了妒挎,萬一我又不記得我寄存了啥,那我不是還是有可能會搞錯拔鞫酝掩!
上面的這些場景,延伸到現(xiàn)代密碼學和互聯(lián)網(wǎng)系統(tǒng)眷柔,說的就是密碼驗證的演變過程期虾。從最開始沒有密碼驗證的方式,到簡單的明文口令加密驯嘱,再到密文加密(只驗證客戶)镶苞,再到雙向加密驗證(客戶/服務器雙向驗證),體現(xiàn)了密碼強度和驗證方式的變遷鞠评,這過程之中更重要的是茂蚓,人為了一己私心,世風日下的悲涼剃幌。
驗證碼
后來煌贴,據(jù)說老板的寄存服務很火爆,大有壟斷菜場的趨勢锥忿。這一情況也給老板帶來太多煩惱,里三層外三層全是來取菜的人怠肋,一看尼瑪總共存在他這的也就2斤羊腿敬鬓。
老板煩的要死,天天就被一群據(jù)說是取菜的人騷擾笙各,每個人就來報個數(shù)钉答,都說羊腿是自己的,但是說對口令的人硬是沒有杈抢。老板看出來了数尿,這群人都丫的投機倒把分子,粗暴的來用隨機密碼學挑戰(zhàn)老板的底線惶楼。
那天以后右蹦,老板寄存臺子前面多了一張紙和筆,紙上寫著幾個極難書寫的古代文字歼捐。誰要想報口令拿東西前何陆,必須先抄一遍那幾個變態(tài)的中文。
老板的策略很有成效豹储,第二天來投機倒把的人就沒剩幾個贷盲。本來就是碰碰運氣的事情,太費勁的話剥扣,那些搞小聰明的大爺大媽明顯就不是那么愿意了巩剖。
這就是應用系統(tǒng)或者現(xiàn)代密碼學中間铝穷,經(jīng)常使用的驗證碼機制:增加攻擊者破解密碼/試探系統(tǒng)的門檻和難度,從而屏蔽掉絕大部分嫌麻煩的攻擊者佳魔。在系統(tǒng)邏輯中增加了驗證碼曙聂,使用機器自動破解的門檻大大提高,從而阻擋了絕大部分的攻擊者吃引。
提權(quán)攻擊
有一天筹陵,老板覺得每個人都說不同的密碼太麻煩,因為自己的智商早就已經(jīng)欠費镊尺,完全記不住所有人的口令朦佩。他偷了個懶,給了所有人同樣的口令庐氮,瞬間覺得自己的智商甩了隔壁老板好幾條街语稠。
結(jié)局還是很現(xiàn)實,直到有一天室友再次光顧了老板的菜攤弄砍,又丟了一斤豌豆和三斤羊腿仙畦,然后兩人又大吵了一架。
很顯然音婶,有人的確在老板這里寄存了一些東西慨畸,但是這人再次用自己的口令從老板這把東西取走時,也順走了室友的一斤豌豆和三斤羊腿衣式。室友很生氣寸士,后果很嚴重,結(jié)果就是他當天用我的黑鉆VIP卡把老板的菜一掃而光碴卧。
這樣的場景弱卡,就是應用系統(tǒng)設(shè)計中很容易碰到的一個安全漏洞--權(quán)限設(shè)計漏洞。攻擊者其實也是系統(tǒng)的用戶住册,但是攻擊者作為用戶登錄后婶博,通過某些手段篡改發(fā)送數(shù)據(jù)(比方說把賬號改成馬云的),直接從系統(tǒng)查出了非自身的數(shù)據(jù)信息荧飞。
這就是所謂的提權(quán)攻擊凡人,避免的方法是在系統(tǒng)后端,始終需要對用戶的身份和數(shù)據(jù)關(guān)聯(lián)進行檢查叹阔。
重放攻擊
自從室友第二次在同一個老板這丟了三斤羊腿划栓,老板再也沒敢對所有客戶使用同一口令。他春風滿面条获,看著風生水起的寄存生意忠荞,嘴角露出裝逼的笑。
結(jié)局很現(xiàn)實,當室友第三次丟了三斤羊腿時委煤,老板這生意算是再也做不下去了堂油。老板很是迷糊,明明所有客戶都是不同口令了碧绞,明明加了屌炸天的中文簽到驗證碼府框,為毛東西還是被別人拿走了?
第二天讥邻,老板十分謹慎迫靖,最終在菜攤臺子角落發(fā)現(xiàn)了一只不屬于自己的錄音筆。原來丫通過錄音筆錄下來他和客戶約定的口令密碼兴使,等到取貨時放出來取走了室友的三斤羊腿系宜。
室友的羊腿丟的很值,至少他又學會了一招做人的招式》⑵牵現(xiàn)代應用系統(tǒng)中重放攻擊很常見盹牧,他常常和中間人攻擊并肩出現(xiàn)。比如你在商場連上了名為youpassword的wifi励幼,你所有網(wǎng)絡傳輸?shù)臄?shù)據(jù)都是通過這個wifi進行汰寓,攻擊者很容易就拿到你的賬號和密文密碼,這個時候攻擊者只需要重新使用你的賬號和密碼進行登錄苹粟,分分鐘轉(zhuǎn)走你的賬戶余額有滑。
一般可以通過結(jié)合時間戳和Token加密生成密文的方式,來避免密碼重放攻擊嵌削。
跨站腳本攻擊
自從室友第三次丟了羊腿后毛好,老板便宣布停止了寄存服務,可惜室友并沒有即時獲得這一消息掷贾。這也直接導致了他第四次把三斤羊腿弄丟在了菜市場。
這次的經(jīng)歷很精彩荣茫,可以入選本年度菜場最佳演員獎想帅。
室友拿著三斤羊腿去老板那寄存時,發(fā)現(xiàn)老板換了人啡莉。他出于對于這個攤位的執(zhí)著港准,想都沒想就把羊腿摔在了老板懷里,回來的路上他死活想不起來和老板約定的口令密碼咧欣,等到丟了羊腿才發(fā)現(xiàn)浅缸,丫老板根本就沒有給他密碼。
結(jié)局和現(xiàn)實魄咕,而且殘酷衩椒。之前的老板不知所蹤,攤位上還是前三次丟羊腿時的那個老板。室友一問毛萌,才知道老板剛剛?cè)ド狭藗€大號苟弛,根本就不應該有人在攤位上。
很顯然阁将,有人冒充了老板膏秫,同時仿造了他的寄存服務,剛好有個智障過來做盅,丟給假老板三斤羊腿缤削。結(jié)局很顯然,室友再次入坑吹榴,算算到今天他剛好丟了12斤羊腿亭敢,剛好夠組合一個十二生肖。
這就是跨站腳本攻擊常常發(fā)生的場景腊尚,攻擊者通過服務器的漏洞(服務器沒有對請求數(shù)據(jù)過濾吨拗,如偽裝者通過請求參數(shù)以JS輸出到頁面,進行頁面重定向到釣魚網(wǎng)站)婿斥,偽造成正規(guī)的服務提供商劝篷,誘騙用戶進行數(shù)據(jù)交互,從而竊取用戶數(shù)據(jù)民宿。這一場景中娇妓,正是因為服務器端提供了給攻擊者可以利用的漏洞,才導致有可乘之機讓攻擊者偽裝成正經(jīng)服務提供商活鹰,從而進行信息竊取哈恰。
屏蔽手段是過濾javascript等敏感字符等。當然現(xiàn)在主流前后端分離框架(如angular,backbone,vue)志群,前端都采用異步的方式着绷,從架構(gòu)和交互本身已經(jīng)基本杜絕了跨站攻擊的可能⌒吭疲跨站攻擊常出現(xiàn)在JSP荠医、PHP、ASP等服務器動態(tài)變異語言場景居多桑涎。
寫在最后
估計應該很難有人能用心看到最后吧彬向,如果你認真看完了全文并且對我認可,記得給我留言互動和轉(zhuǎn)發(fā)攻冷,同時也推廣給你的朋友們娃胆,現(xiàn)在的時間是周末凌晨1:30,號主很忙空閑時間不多等曼,你們的支持才是我最大動力里烦。
我的心愿是凿蒜,世界和平!