1. <small id="rw2jk"></small>
      網絡安全 頻道

      陸文舉:業務視角下的邏輯安全

        本文根據陸文舉(土夫子)老師在2018年5月12日【DTCC 2018】現場演講《業務視角下的邏輯安全》內容整理而成。

        講師介紹:

        陸文舉(土夫子),會分期運維總監DSRC(滴滴安全應急響應中心)TOP白帽,擁有8年運維經驗,3年安全經驗,曾就職于58同城等多家上市公司,擅長業務邏輯安全。

        分享大綱:

        1. 未授權訪問

        2.信息泄露

        3.越權遍歷

        4.支付

        5.密碼重置

        6.API調用

        7.總結

        正文: 我今天和大家分享的主題是業務視角下的邏輯安全,互聯網什么最值錢我們都知道,是數據,從大學生從FR到這個,比如你花幾百塊錢就可以在網上買到一個別人的信息,然后再到前段時間說的Face Book事件的發生,所以說我今天和大家從業務的角度分享一下邏輯安全。

        在準備今天主題的時候,我一直在想一個安全的本質是什么,也就是說那比如像這個綁卡和支付之間能有什么,所以我歸納了兩個業務是安全的基石,那么像綁卡里面的問題,比如說像惡意提現,像自助里面,訂單里面的這種。

        隨著互聯網的發展,越來越多的安全產品也出來了,包括早期的防火墻和IDS,或者IPS到后面的各種性能,云WAF或者各種成分,包括后來等等一系列安全產品。

        那么有了這些產品我們的業務就安全了嗎?所以接下來我們從業務的角度來看一看,在這些安全產品之后,有了這些安全產品之后,還存在安全漏洞。

        1.未授權訪問

        第一個是未授權訪問,什么是未授權訪問?說白了在某個系統,不需要去做身份驗證就可以看到這個系統,比如說我們這個像DPA用的這個,還有這個做日常維護的時候,它隨時把功能,而且是不需要登錄認證就可以看到數據的,這會面臨什么問題呢?我們可以發出特殊的指令做一些特殊的操作,相當于就對這個客戶端做一個內容。

        還有像Hadoop的管理頁面,還有像做數據分析,比如說做這個東西的,那這些東西正常情況下你的端口現在是建立在內網上面的。

        這個也是,比如說這個上面出錢,這套系統比如說這個里面有幾百塊的訂單,大家可以看到具體的訂單號,還有應該做數據分析的,那像這個情況面臨著什么樣的情況,最簡單就是操作被泄露,那為什么會導致這種原因呢?也就是說這個是由于我們的技術人員安全意識不當造成的,那像一些內容的系統,像這些的,這個最基本的。

        2.信息泄露

        接下來和大家分享第二個,信息泄露。我曾經在書上看到過這么一個段子,一幫美女都在洗澡,突然這幫美女就急急忙忙跑了過來,然后發現都是大爺,衣服都沒有穿了。這個時候有個大爺沖著美女喊了一句,都捂住臉,下面都一樣。然后這個段子說明什么,我們可以看一下租房的頁面。

        我們可以看到在租房行業里面,中國行業里面發布找房信息之后,我們可以看到發布人的手機號都是泄露的,每家基本上都是這樣,那么這會造成一個什么問題呢?

        我們會針對這種手機號看到兩種漏洞。第一個針對A公司租房平臺,它的手機號是大家看到了,那很簡單,我們可以把它的手機號全部爬取下來,那對A公司的其他系統,比如說商家系統我們可以看到精準的用戶,去破解其他系統。

        那第二個就是說我們都知道行業里面的數據,比如說A公司做租房業務的,那B公司也做,我們可以把這個手機號爬取下來,對B公司做一些特殊的操作。這種情況下,操作軟件都像早期網約車一樣,我們知道早期的網約車看到都是真實的手機號,那看這個加一個點擊滑塊就可以看到手機號,另一個可以采取虛擬號的方式,比如說像現在就是看到假的手機號,不真實。

        這是另外一個信息泄露的例子,那我們都知道,在互聯網早期的時候,漏洞都是以單點形式存在的,隨著技術的發展,現在這種已經很少了,不能說不見了。現在漏洞的形式都是基于多點存在。

        比如說我們做活動,當然這兩個圖都是同一個動作,比如我們泄露的訂單這個,那么單獨來看,其實影響不大,比如說沒有手機號,那我們可以通過挖掘,通過一系列的挖掘,發現B泄露訂單號和手機號,那么可以A點做一個整合,可以得到想要的數據,比如說包括手機號這種,接下來和大家分享越權遍歷。

        3、越權遍歷

        先說一下什么是越權遍歷,我們說在收集數據的時候,不僅能看到自己的信息,還能看到別人的信息,這就是越權,那么造成這種的原因是什么呢?比如說像這個開發者,在開發程序的時候,他只做了一個當發生A的時候,會做B的判斷,當發生C的時候會做出D的判斷,但是他沒有判斷當發生X的時候會做出什么樣的判斷。

        那么越權遍歷會把這個分為水平越權和垂直越權,可能這樣比較抽象,因為好多功能同時,比如說這個水平,所以說我就歸納為兩點,比如說我就歸納越權可以理解成前臺越權和后臺越權就可以了。

        那么什么是前臺越權?比如說我在訂外賣或者打車,那么我們的APP就是前臺的東西,這個很容易理解,那再像司機在這個接訂單的時候,還有像公司利民的管理系統,公司有的運營系統,這種東西就屬于后臺,接下來我們看前臺的一個案例,這也是一個租房信息的一個案例。

        用戶在查詢自己訂單的時候,我們可以看到通過ID會有一個合同,但是我們可以通過對ID進行遍歷,遍歷通過別人,比如我們是遍歷一起的合同規則,這是一個前面的案例。

        那比如說像這個接下來說后臺的,這個就相對好一點了,中國好多公司安全注冊的時候,接觸過好多公司的這個版本,基本上,不能說百分之百有這個越權和遍歷,但是至少90%的系統是存在的,我們舉一個例子,正常情況下一個后臺,一個公司的管理后臺,這邊有10個板塊,還有其他的板塊,不能這個不同樣的角色,但是我們一個普通的用戶做一些特殊的操作,就相當于他是永遠有效的權利了,就把里面的數據全部拿走了,這是無線的用戶。

        商家在接訂單的時候,我們通過抓包的形式去抓到圖像,隨著自己的訂單通過ID,然后我們可以為這個ID進行一系列的,結果就是我們可以把所有的這個ID這個訂單全部點擊出來,可以看到用戶的手機號等信息。

        那么造成這個原因是什么?我們開發者在寫代碼的時候,沒有做建權,其實這個防護第一個是建權,第二個就是說我們可以把這個ID做的足夠大,讓他無法看到,或者對這個ID進行加密,比如說是MD加這個,做到安全。我讓這個ID做這個加密方,只是一個編碼而已,那就沒有效果。

        4.支付

        那么接下來我講支付,這個從早期都知道,國內炒的最熱的是特斯拉,我不知道有沒有知道這個例子的。然后再到后來的網易車早期出現的時候,比如說你從這打包,你只要支付把錢給他就可以了,再到前段時間山東某公司出現的這么一個情況,比如說充一元錢披露了1800萬,所以說這是一個案例。

        接下來是一個討論的案例,這個是汽車的一個案例,像這個的,當時我們在支付的過程中,可以把金額改成一分,或者0.01,然后可以看到這個是支付成功的。

        那為什么會造成這種現象呢?是因為大部分程序在這個支付完做二次交付的時候,這個沒做。就是這個在安全側,它就算成功了沒有做二次驗證。

        5.密碼重置

        那怎么去防護呢?像這種敏感的支付操作,其實保護好簽名就可以了,一旦你的簽名被篡改你就不能操作了。那么接下來和大家分享一下密碼重置。密碼重置早期的就是基于郵箱的或者基于一些密保問答形式重置密碼,那現在隨著移動互聯網發展,好多這個產品在設了以后,都是用這個手機驗證碼的形式去登錄,因為這樣比較方便,那么這樣有什么問題呢?那我可以看一下這個。

        這是一個登錄的時候看到的,這會造成一個什么呢?這會造成很簡單的一個操作。

        那么又由于手機驗證碼是四位的,四位數字的,那我可以找一下,通過看到這樣一個漏洞,那么我們可以撞出1萬以內的賬號,因為它前面會提醒用戶存在或不存在,這是第一步。

        那么第二步我們可以對著1萬的賬號發送驗證碼。第三步我們可以隨便拿一個手機號,隨便拿一個四位的驗證碼都可以登錄某一個賬戶的信息了。

        那么造成這個的原因是什么呢?第一,現在有很多公司用戶基數比較大,也體現了行業。那像四位驗證碼同一時間內是有重復使用的,那么我們需要對這個驗證碼做的第一個是時效,比如說時效是一分鐘或者三分鐘。還有我們短信驗證碼發送的時候,我們可以做一個風控的操作,比如說同一個IP一天只能發送1000次或者500次,這個一般是能滿足需求的。

        6.API調用

        接下來我們講一下API調用。現在好多不是那么單一,特別是現在有很多的口令,比如說像客服管理系統等等,系統之間是相互用的,比如說我們無論是用戶還是說自己內部的好多人都需要調那個統一認證系統,像客服系統,你的客服在處理用戶問題的時候,可以去調你的合同管理或者調你的一些其他的東西,那么相互調動的時候,它產生的一系列問題,現在有很多的東西都是以開關的形式去做這個驗證的。我們可以參加這個IP,這個是統一認證的例子。

        那也就是統一認證它接受請求的時候,它這幾個業務調動的時候存在這幾個方式,比如說某一個參數里面,第一代表的內部員工,二代表的是商家。

        再比如說一個參數里面,1代表的是內部系統,2代表的商家,3代表的是其他服務。

        那么另一個就是說在登錄方式,某一個參數代表的是密碼,某一個是短信的登錄。接下來我們就可以看這個系統,其實這個系統是這樣的,剛開始我發信的是也就是說這個系統只能通過用戶名和短信驗證碼的方式去登錄,但是由于我對這塊業務比較熟悉,或者對業務和業務標準之間的參數比較熟悉,那我會通過一系列的,我們可以把這個業務線改成,比如說用戶線改成商家的。登錄方式我們可以把短信密碼改成密碼的方式就可以了。

        破解完之后,因為破解的是很容易的,所以存在這樣的問題,那么像這塊漏洞我們怎么防護呢,也是像剛才說的那樣,也就是說你發生篡改的時候,你的每一步操作有合法的簽名就可以了。

        7.總結

        最后我們做一個總結,好多公司或者不少的從業者,并不知道自己的系統是否安全。歸納為第一條就是安全的本質是否可控,為什么這么說?我們舉一個例子:好多公司發生漏洞的一些病毒性的內容。那我們可以考慮第一個是否安全,如果不安全沒問題,我們可以往下講,那么數據泄露了多少?如果你的數據比如說全泄露了,那最后是否可控?比如說像你的數據庫是以什么方式,還是說某一家技術公司追到的時候,用戶名密碼全被拖走了?這是這么一個例子。

        第二個就是站在業務的角度去思考?就是說安全這個東西,它和業務是有沖突的,比如說你做的這個體驗,可能會影響這個業務的用戶體驗,所以說有好多時候我們站在業務的角度去思考。

        接下來我和大家分享三個小例子:第一個是生活服務檢測,好多人都知道數據庫和業務袋,這個是通過SQL對自己的業務做一個掃描,比如說我們可以挖掘用戶的掃描請求,或者拿到自己的然后通過批納出來就好了,這是關于掃描檢測的。

        第二個是拖庫監控,有好多人數據被拖庫不知道,所以說我們可以通過這樣的一個小的技巧然后做一個監控,比如說我們可以在這個數據庫里面建一個空表,正常情況下你的空表是沒有業務去瀏覽的,當一旦發現這個空表被別人讀取的時候,我們可以通過監控號或者其他的來進行監控。

        第三塊是講數據庫加密存儲。可能現在在座的數據存儲的不多了,但是我們可以通過更好的一些方法做一些加密,比如說第一個加鹽法,那這種怎么弄,我們可以通過加鹽加一下時間或者一些特殊的方式去做一個加密,像這種支付數據庫被偷掉也不會有什么用。

        第二個就是混淆法,混淆法是什么?就是你的數據在存儲的時候,A用戶的密碼對應B的用戶,因為你的策略入侵者是不知道的,所以說這就會給他造成一個難度。

        好,今天我的演講就到這里,謝謝大家!

      0
      相關文章
        影视站,婷婷亚洲,色谷,老司机电影院