最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

CIS 2021網(wǎng)絡(luò)安全創(chuàng)新大會《代碼安全體系建設(shè)》實錄

2022-03-15 16:10 作者:蜻蜓安全  | 我要投稿

一、背景

湯青松 ,北京趣加科技有限公司 安全工程師,實體書《PHP WEB安全開發(fā)實戰(zhàn)》作者,擅長企業(yè)安全建設(shè),SDL安全建設(shè)。
PHPCon 2020 第八屆 PHP 開發(fā)者大會分享《PHP安全編碼規(guī)范與審查》,NSC 2019第七屆中國網(wǎng)絡(luò)安全大會分享《PHP反序列化漏洞分析實踐》看雪2018 安全開發(fā)者峰會擔(dān)任Web安全訓(xùn)練營 講師

大家好,非常高興給大家分享《代碼安全體系建設(shè)》議題,我是湯青松,目前在 SDL 方面做的比較多的。今天講的這個話題其實和 SDL 有很大關(guān)系的。我這次分享這個話題的其實就是 SDL 當(dāng)中的一部分。很多同學(xué)如果在甲方也會去做 SDL 當(dāng)中的一些工作,所以我希望我這次分享的內(nèi)容對大家有所幫助。

這次分享的話題是 SDL 當(dāng)中的一部分,但是它不完全是 SDL 因為我主要還是聚焦于在安全向左移的這樣一個概念當(dāng)中。所以今天分享的話題主要是聚焦于這個代碼風(fēng)險管理。那在這個代碼安全當(dāng)中可能有哪些風(fēng)險點了?那它可能會包含技術(shù)方面的工作和非技術(shù)方面的工作,比如說管理工作以及這個學(xué)習(xí)方面的一些事情都會有講解到。

1.1內(nèi)容概要

我今天講的這個話題,主要還是在于意識、技術(shù)、監(jiān)督和學(xué)習(xí)四個方面怎么去開展我們的安全工作?這里我做了一張腦圖,那在腦圖當(dāng)中,我覺得從這個淡淡安全體系當(dāng)中,我們有四個層面了可以去做的,比如說這個安全培訓(xùn)。

在安全培訓(xùn)當(dāng)中,我們第一點要告訴他有哪些風(fēng)險點,第二個就是我們得教他怎么去避坑,那么教他避坑了,我們就可以直接拿到他這個倉庫的代碼,然后我們自己先去分析一遍,分析完之后,然后在培訓(xùn)的時候我們就可以告訴他你這個代碼了哪里會存在一些風(fēng)險點,把這個問題告訴他。

第三個就是我們告訴你了,你不能怎么去寫,你應(yīng)該怎么去寫。那么我們制定完這一套規(guī)則了,我們不可能說其實人工去盯著您得有一套監(jiān)督機(jī)制。這里我也會給大家去講一下,怎么去結(jié)合semgrep 和GitLab做一個鉤子事件,實時檢測這個代碼當(dāng)中的一些風(fēng)險點。

那么第四個就是我們在上線前肯定會有安全測試。在安全測試當(dāng)中可能會有哪些疑難點?那今天我大致會提到這樣幾個問題點。那首先我們來說一下安全培訓(xùn)我們怎么去做。那安全培訓(xùn)我相信很多做技術(shù)的同學(xué),他可能就是自己的技術(shù)了是比較好的,但是讓他去給別人講怎么去踩坑以及一些案例,她不一定是他擅長的。

我們先來說一下我是如何理解保障整個應(yīng)用安全的,我認(rèn)為它不是由某一個維度是否做得足夠好來衡量,它是一個綜合的方面。也是多個團(tuán)隊配合起來的一個工作,我們作為安全人員在這里要負(fù)主要責(zé)任。

我們要想盡一切辦法去和開發(fā)和測試一起保障保證應(yīng)用安全。我們首先給這些開發(fā)人員建立這樣一個安全意識,那告訴他了互聯(lián)網(wǎng)當(dāng)中會有很多的一些漏洞,那這些漏洞了有哪些危害?那首先在他開發(fā)的時候,他就會想到不能讓這個應(yīng)用有漏洞。

第二個讓他有意識之后,要教他怎么去避開這些坑,不要讓他知道有這些安全風(fēng)險起來,他不知道怎么去處理,然后還是踩坑了。那么這個時候我們安全人員自己在這個技術(shù)方面了,要有一定的這個能力。

第三個在監(jiān)督層面。如果說你告訴開發(fā)人員互聯(lián)網(wǎng)當(dāng)中有很多漏洞,也教他去避坑了。但是沒有監(jiān)督很多人了他可能并不一定按照你的要求去做,所以這個時候您得有一定的監(jiān)督機(jī)制。

第四點是是通過事件驅(qū)動,我相信作為甲方,你肯定還會遇到一些安全事件去驅(qū)動。比如說我們公司是做游戲的,還時不時會有一些拖機(jī)掛或者等等一些外掛這些方面的問題。那么我們會把這些事情給整理起來,整理成案例,再給這些開發(fā)人員去學(xué)習(xí)。

二、 安全培訓(xùn)

所以這里我講幾個非技術(shù)性的一個話題,就是我們怎么去給這些開發(fā)做培訓(xùn)。那首先我覺得做培訓(xùn)有這幾個方面,我可以給大家一些參考意見。比如說首次的這個培訓(xùn)我們講什么話題?怎么避免一次性把這個話講了,那么我下個季度還講不講?是不是我一次性了就把話講完了我覺得都是有一些技巧的,就是你第一次該講什么東西。

第二個說我們培訓(xùn)了是,一次培訓(xùn)了,我們就把所有的這個開發(fā)組成員了都叫上。那么比如說幾十號人,上百人都叫上,然后我們自己在一個舞臺上去講還是這個小組去講了。那這里頭我是推薦大家小組講,那一會我會講到為什么去小組講。

第三個就是案例就地取材案例了,我們一定要在每次培訓(xùn)之前把他那個代碼打開去看一下,拿著他的代碼給她們做一完培訓(xùn)。然后接著了我們就開展我們這次要培訓(xùn)的一個話題,那這樣的一個形式。

2.1 首次基礎(chǔ)培訓(xùn)

首次基礎(chǔ)培訓(xùn)了我們可以給他講哪些東西了?我覺得你首先可以給他講一下你在這個甲方安全當(dāng)中了,你是怎么去給他們做代碼審計的,你是怎么去做安全的?這個其實是她比較關(guān)心的,讓他了解你的工作。那你平時會關(guān)注哪些點,你給他充分交流一下。那么建立一個互信機(jī)制。

第二個你可以給他講一下這個漏洞分類,比如說了通用的一個編碼型漏洞,比如說SQL注入, XSS csrf 文件上傳,然后命令執(zhí)行代碼注入等等這些問題。那把這些問題了給講完之后了,我們還可以給他介紹一下這個邏輯性漏洞,比如說這個支付漏洞、越全漏洞、驗證碼漏洞、短信漏洞等等這些漏洞了,我們可以給他科普一下。

那么講這些漏洞的時候,你可以去結(jié)合他們這個小組了,他們是做哪方面業(yè)務(wù)的?比如說做中臺的了,他可能會脫離業(yè)務(wù)。他可能沒有這樣一個支付的問題,或者說沒有用戶的一些問或等等和他這個主無關(guān)的一些問題,可以給大概提一下,但不要講細(xì)了。

第三個你可以給他講一下代碼自查的一些方法,你可以教他一些簡單的方法,比如說他寫完代碼之后了,怎么去審計自己的安全問題?但這個參數(shù)有沒有做過濾類型,是否強(qiáng)制的,比如說我要介紹一個 ID 那在 PHP 語言當(dāng)中了,那可能他沒有使用這個整型轉(zhuǎn)換,那么接受了有可能這個字符,那么拼接到這個SQL注入當(dāng)中了對吧?那這個時候你就要跟他講,你說你在這個接收的時候你得做一次過濾,你如果沒有做過濾了,在拼接社會語句的時候你得做 pdo ,然后查 SQL 大致教他一下怎么去查。

那這個SQL漏洞怎么查了?我相信做甲方的技術(shù)同學(xué)都有一定的見解,在這里我就不展開了,你可以給這些開發(fā)的大概提一下。一般來說就是做開發(fā)的同學(xué)了。自己對這一塊也是比較了解的,你給他點個開頭,他自己很多事情他能想明白的。

2.2 小組培訓(xùn)

第二個就要在做培訓(xùn)的時候了,我的建議是小組培訓(xùn),比如說你們一個公司可能會分為很多個小組。那么我目前來說我主要是給后端的同學(xué)做培訓(xùn)。所以我一般做培訓(xùn)的時候我會講后端的一些東西。那么后端他每一個組了他其實涉及的東西都不一樣,比如說有些組了他不會用到 HTTP 協(xié)議,他就會用這個 socket TCP 這種協(xié)議。那么你給他去講一些 web 業(yè)務(wù)的一些漏洞了,他可能不愛聽。

所以做小組培訓(xùn)的目的了,我覺得主要就是因材施教。那每個組他有自己不同的一些特點,你得給他講他自己不同的。那么你盡量在每次培訓(xùn)的時候,你盡量控制在 10 個人以內(nèi)。而且我覺得時間你要控制一下,就要控制在這個 45 分鐘以內(nèi)。們平時上課了對吧,也是 45 分鐘以內(nèi)。

說了你要有這個時間的一個意識,你不要一直講,講完之后翻其他人壓根就沒來聽,你要有以這樣一個互動機(jī)制。那這里有三點了,我需要給大家去說的。就第一個了就是開始講到了,你一定要貼近這個團(tuán)隊的一個真實代碼。你每次給他做培訓(xùn)的時候了,你得先把她代碼審計一遍,審計完了多多少少可能會有一些安全問題,或者說有些不規(guī)范的問題。你拿著這個代碼去跟他說,你不要直接上來,對案例那樣不是不好的,很多人可能就不樂意聽。那么第二個就是要貼近他的業(yè)務(wù)場景,剛才也講到了,那做 TCP 的你給他講 HTTP 他不樂意聽他,我壓根就沒有這個業(yè)務(wù),你給我講啥呢?第三個就是多分享故事的一個形式去形成一個互動的氣氛。比如說你在給他做培訓(xùn)的時候,你給他講越全的時候,那你就講以前了,可能你挖過某個網(wǎng)站的一個預(yù)存漏洞,你是怎么發(fā)現(xiàn)的,以及你可能在網(wǎng)上了看到過別人的一些案例,那這些分析步驟了你可以給他講一下。

你比如說我發(fā)現(xiàn)了這樣一個 URL 的 ID 等于100,那么我覺得想試一下,我把這個 100 了改成 101 在 URL 地址欄當(dāng)中回車一下。發(fā)現(xiàn)看到了別人的一個信息,也發(fā)現(xiàn)了別人訂單信息,發(fā)現(xiàn)了別人的一個個人用戶信息以及其他的一些權(quán)限信息,多以這種故事的形式給他去交流,我覺得是效果非常不錯的。

2.3 案例就地取材

第三個就是案例就地取材。那很多時候我們給 A 組的同學(xué)去做這個分享的時候了,那他不一定了有他們這個組的一個漏洞案例。這個時候我覺得你一定是就近的,你可以講他們部門的對吧,可以給他講這個整個公司的。然后這個案例就是盡量靠近他們這個團(tuán)隊。那么你怎么取這些案例呢?我們知道在 2016 年以前,這些互聯(lián)網(wǎng)當(dāng)中有很多這種漏洞案例,包括各個大公司的一些漏洞案例都是有的。但在 2016 年 6 月 1 號之后,我們基本上看不到了,為什么網(wǎng)絡(luò)安全法出來了,所以很多這種比較直觀的漏洞案例了,我們現(xiàn)在沒有辦法,說很輕松的拿到了。這個時候了,你可以從三個渠道取了。

第一個說你在平時做代碼審計的時候,你把這些案例了給存起來,截好圖。然后把敏感信息的打個碼。但是把意思大概說明白,把這些案例給整理起來。第二個就是從安全測試當(dāng)中,我們每一次業(yè)務(wù)要上線了,肯定會有一輪安全測試,把業(yè)務(wù)測試當(dāng)中發(fā)現(xiàn)了一些問題點,也可以整理起來,我們是有一個案漏案例庫的。第三個就是漏洞事件了。那比如說一些通用型的一些漏洞事件,像那個 2021 年年末的時候,是不是有個 logic4 的這樣一個組件,我記得在快過年的前幾天了,那個時候出了一個命令執(zhí)行的漏洞,那影響范圍還蠻大的,那可以把這些事件了給它整理一下。你可以告訴他說你依賴了一些組件了,要及時升級。如果了你要引用一個組件了,你要最好查一下它的版本有沒有漏洞,有漏洞的話你就不要使用了。

一般來說我們 php會用 composer , Java會用另一個包管理器以及 Python 都會用包管理器,那么我們要及時去更新一下,不要說我們打包一次,幾年我們都不更新,那樣很容易就會產(chǎn)生一個安全漏洞。

三、 風(fēng)險提醒

那接下來我們要講的就是風(fēng)險實時提醒。那么我們給他做完培訓(xùn)之后,我們有這個首次培訓(xùn),也有這個每個季度一次培訓(xùn),也有這些案例的一些講解對吧,我們還得有這個監(jiān)督的一個作用,就是他們寫完代碼之后,我們得及時去提醒他,以及了我們每一個季度了我們有一次全面掃描等等這些信息。

3.1 風(fēng)險提醒的作用

那首先我講一下這個風(fēng)險提醒的一個作用,主要就是強(qiáng)化大家的一個提醒的意識。你不要講了之后就不提醒了,過不了一周兩周,他之前的代碼習(xí)慣了,該怎么寫還是怎么寫?你會發(fā)現(xiàn)你之前的培訓(xùn)白講了,你給他講了之后了沒有太大的改變。所以你要有提醒。

那實時提醒了我們可以在 git 的倉庫當(dāng)中做一個勾子事件,每一次它 push 代碼的時候,我們可以把他的代碼了給拿出來,拿出來之后提取他改動的行,提取改動出來的行了。然后我們來判斷一下他有沒有危險函數(shù)等一些問題。那如果有這些問題了,我們就給他反饋一下,就告訴他你哪個地方了可能會存在危險。

提醒這件事了有三點意義。第一個就是加強(qiáng)他的安全意識,讓他知道這個安全事情有人在管。第二個就是從源頭當(dāng)中去阻擋安全。但這個鉤子你不要說遇到這個危險函數(shù)了,就直接給打回去。你可以在這個 git 當(dāng)中給它返回一下,返回一個提示信息,告訴它這個地方可能存在風(fēng)險,讓他去注意一下。比如說在命令執(zhí)行這個地方你放了一個變量,那么你需要確保你的變量是可控的,是過濾了的給他這樣一個提示作用。

第三個就是提升一下安全的反饋速度。那如果說你沒有這樣一個實時的提醒了,你每個兩周去給他這個倉庫全面掃描一次,那可能他代碼都上線了對吧?

3.2 風(fēng)險函數(shù)提醒

風(fēng)險函數(shù)我簡單列了幾個函數(shù),比如說這里了有這個代碼注入的,有這個執(zhí)行系統(tǒng)的命令的,有使用這個明文 FTP 下傳文件的,

還有一些加密庫以及一些正則庫,那這邊還有一些信息泄露的提醒。

你都可以放到你的這個安全風(fēng)險提醒里面去。我覺得優(yōu)先級了,你可以把這些高危的了給大家放進(jìn)去。比如像 FTP 的,你可以看情況,你放不放都行。那像 pprof 了,我覺得你肯定得注意。那 PP info 里面還是有蠻重要的信息的以及 Golang 里面的,它直接使用了裸寫了這個語句以及讀取文件內(nèi)容以及執(zhí)行系統(tǒng)命令的這些危險函數(shù)了,你都給它去提醒一下。

3.3 鉤子使用

那剛才說的這個勾子事件了怎么去使用了?那其實這個勾子的原理主要就是在這個 git 服務(wù)器當(dāng)中了,存放一個勾子的這這個腳本,每次他 push 的時候了,服務(wù)器他會觸發(fā)這樣一個腳本。


觸發(fā)腳本的時候,你就可以通過一些命令行了,你去獲取到他有哪幾個文件有改動,那改動了一些行號了,你都能拿到。完了這些數(shù)據(jù)之后了,你把這個檢測的規(guī)則就剛才我提供的一些危險函數(shù),以及你自己去拓展一些,把這個規(guī)則文件給它寫好。

第二個,這個semgrep現(xiàn)在已經(jīng)比較流行了,已經(jīng)有很多這個團(tuán)隊在使用了,所以我覺得也是一個比較成熟的東西,你可以通過 sum group 加上這個規(guī)則去檢測這個代碼,然后把這些風(fēng)險給返回回來。那么具體的實現(xiàn)地址了,我之前寫了一篇文章,還是比較詳細(xì)的,那大家可以去打開,然后按照操作了去實現(xiàn)就行了。

那這里我給大家展示一下這個鉤子了,它會是一樣一個什么樣效果?比如說我在命令行當(dāng)中,我輸入了一個 git commit 然后提交這個代碼,然后在推送的時候它就會觸發(fā)。那么在推送的時候,我們可以看到他這邊告訴我哪個文件。那么它的行號,當(dāng)中有個 EXEC 執(zhí)行了這個 git 當(dāng)中的 A 這個變量,那么它有可能會導(dǎo)致一個命令注入,那一定要確保內(nèi)容不是用戶隨意控制的。那么這樣一個提示性的話語,那具體了你可以去把這個界面了給它優(yōu)化一下也可以。

三、 代碼審計

在代碼審計當(dāng)中我們也有四點可以給大家去分享一下的。


那首先我們代碼審計的方向,我們要怎么去審計呢?那這里就有一些偏技術(shù)型的話題了。那么有一句話叫文無第一,武無第二,相信做技術(shù)了也一樣。

3.1 代碼審計方向

那么第一個就是通用編碼型這這個審計。那比如說我們可以審計這些這個sql注入、 XSS、 命令執(zhí)行、文件上傳等等這些,那么我們可以通過通用型編碼升級出來。那么第二個我們得結(jié)合她的業(yè)務(wù)去審計。那比如說你只有有用戶的系統(tǒng),你才有這樣一個用戶密碼找回以及一些權(quán)限方面的一些漏洞。

第三個就是組件型的一個,那你要根據(jù)這個倉庫所使用的語言,比如說 php 的,那用compose ,那 Java 的了,那用另外一種形式。那么把這些組件了,確定一下它使用的這個組件版本,然后來確定他是不是有幾個組件漏洞。那具體了通用型編碼審計方法了。前面其實我也簡單提了一下,其實主要從這三個方面去看吧。


第一個就是接收參數(shù),如果說我這個地方接收了一個 ID 我明確知道它是一個整形的。當(dāng)我接收的時候了,我沒有用整形去強(qiáng)制接收。那在這種弱類型語言比如說 php 里面比較常見,那么你就可以去追蹤一下這個變量,有沒有放到sql語句里面去執(zhí)行,有沒有去返回到這個前臺,有沒有可能放到這個命令執(zhí)行里面放在這個代碼執(zhí)行里面等等。這些方式就是追蹤接收的參數(shù),它沒有過濾,我們就一直追到底,一直到這個程序結(jié)束。那么這是一種方式。

那么第二種方式就是關(guān)聯(lián)詞反常。關(guān)聯(lián)詞反常了主要說我們可以去這些函數(shù)的地方看一下它里面放的是不是變量,如果放的是變量,我們就追蹤這個變量的來源。那如果說這個變量是接收用戶的,并且沒有做過濾,然后放到這個危險函數(shù)里面來,那么一定是有安全問題的對吧?第三個就是我們?nèi)ソ馕鏊囊蕾囄募?。那么目前來說就是 PhP 了, Java Python 以及 go 它都有依賴包管理。所以我們現(xiàn)在去檢測它的依賴其實是比較好實現(xiàn)的,我們這里都可以去做一個。當(dāng)然有一些它可能還是比較傳統(tǒng)的方式。比如說 PhP 在老版本了,在 PhP 7.0 以下了很多這個系統(tǒng)了,他并不會使用 composer 他直接把這個源碼了直接下載到他的這個目錄下。那這個時候你解析可能會比較麻煩。

3.2 工具選型

那么這個時候呢您得借助一些第三方的一些工具去分析出來。說到這個代碼審計的一些工具選型了,目前前這些我大部分都用過,比如說 fortify ,用的是比較熟練的。那么 check max 了這一款工具了,我還沒用,因為還沒有買他們的第三款這個代碼衛(wèi)士的話是那個奇安信的。那這一款我倒是用過一段時間。

第四個了,我目前用的是比較多的,主要是用在這個鉤子檢測當(dāng)中。審計系統(tǒng)當(dāng)中也用到了它的一些功能,但目前來說就是全量代碼審計了,我還是比較喜歡用這個fortify。那么在這個鉤子事件的時候嘍,因為fortify帶它是那個 AST 的這種語法分析,它會比較吃內(nèi)存,而且反應(yīng)速度比較慢,所以目前主要還是依賴與這個 Sem group 那么第五款這個 CodeQl 的 CodeQl 了這款工具了我前段時間還在了解,還沒有用到這個生產(chǎn)環(huán)境當(dāng)中,所以我也不太好說。

第六款工具了目前來說我用過。的感受就是它是一個完全開源的,包括他的這個規(guī)則,包括他的這個引擎系統(tǒng)大家都開源了,但他只能目前來說能檢測 PhP 其他的后端語他不能檢測。所以目前我用的這個 fortify 和 Sem group 比較多一些。 fortify 就是要商業(yè)的和check max ,其實代碼衛(wèi)生也是商業(yè)的。 fortify 我目前來說還比較好用,checkmax沒用過,沒有太多發(fā)言權(quán)。

這個 fortify 泛了我用過一段時間,去年十二月的時候。用過一個月。主要的感受就是它和福利范檢測出來漏洞數(shù)量是比較相似的,但它的界面設(shè)計了點擊起來我感覺很不順暢。據(jù)說這個今年 3 月份會有一個新版本,到時候大家也可以去試用一下他們的 SemGroup ,他的規(guī)則是 開源的。然后它的這個引擎了它是加密的。

第五個了 CodeQL 了。那 github 當(dāng)中就已經(jīng)大規(guī)模使用,當(dāng)然也可以去體驗一下。但是你只能用于學(xué)習(xí),不能用于商用。那現(xiàn)在我再來說一下就是批量代碼審計的一個實現(xiàn)方式。那目前就是幾款產(chǎn)品,其實它對單個單款庫的支持都還比較好。我在做甲方的時候會遇到這樣一個問題,那因為我是要對整個公司的代碼庫的安全性了負(fù)責(zé)的,所以我不能說就檢測幾個倉庫的一些安全問題點。那時候我得批量去審計。那像我們公司可能有 600 多個倉庫,一個一個打開,我得瘋掉,像 fortify 打開一個倉庫大的項目,它可能得一兩天。光審計起來可能得花個一年時間就讓他分析完。所以如果用這種默認(rèn)方案其實不是太現(xiàn)實的。

3.3 批量代碼審計工具

所以我寫了一個批量代碼審計的一個工具,就是QingScan。那么它主要的作用它其實是包含了四部分,一部分就是信息收集,第二部就黑盒檢測,第三部分就是代碼審計。那還有一個專項利用。那這里我主要提一下它這個白盒審計。那白貨審計它其實主要的目的就是把你的這個項目了給拉下來,然后調(diào)用這個 fortify 以及這個sem group還有其他的一些代碼審計的一些工具了,對它進(jìn)行逐個掃描。那么掃描完這個,然后接著就掃描下一個。那么也可以分布式部署。那目前來說我已經(jīng)在我們公司使用起來了,也推薦給大家去試用一下,那么這個地址在這里

https://github.com/78778443/QingScan

四、 安全測試

再就給大家分享一個安全測試當(dāng)中,安全測試主要有這幾個, web 站點測試、API接口測試、私有協(xié)議測試和案例輸出。

4.1 web站點測試

那這個web站點測試了其實我覺得還是比較常規(guī)的,目前也沒有什么太大的一個技術(shù)難點

比如說測試個sql注入、 XSS 但一般目前來說是個sql注入和 XSS 這些問題點已經(jīng)比較少了, XSS 可能是反射型 XSS 多一些,但是影響我覺得也不是太別大,因為現(xiàn)在都是那個cookie 加密的就是HTTP Only 另外這種形式,所以沒有太多可說的。

4.2 API接口測試

API 接口怎么測試了? API 接口它和這個 web 站點它有一些區(qū)別。像 web 站點我們可能可以通過爬蟲的方式把那地址都爬蟲出來,然后再對這個地址進(jìn)行掃描。那掃描有結(jié)果了,我們就把這個驗證一下,驗證完之后然后提出來。

那么 API 接口有個問題點,就是我們沒辦法去爬蟲。所以這個時候了我們通常打開一個xray的一個端口,用這個服務(wù)模式。然后手機(jī)了我們把這個端口指向xray的這個代理地址,然后我們?nèi)ゴ蜷_一些請求,把這些地址收集起來,然后去掃描。同時我們還會有一個 URL 地址的清單,就是這個地址其實是開發(fā)那邊給我們提供的。然后這個功能測試那邊同學(xué)也有一份我們在對這個地址了去進(jìn)行這個邏輯進(jìn)行的一個測試,比如說越權(quán)以及這個支付漏洞等等這些方面的問題的檢測。

4.3 私有協(xié)議測試難點

第三個就是私有協(xié)議測試,那私有協(xié)議了其實測試起來是比較麻煩的,比如說這個socket的協(xié)議,那么 TCP 協(xié)議,那么我們其實是沒有辦法直接把這個數(shù)據(jù)包了給解析出來的,除非了我們得有一個模擬他們的客戶端。那目前來說只有幾個就是重點項目了,我們會和他們對一下這個端和服務(wù)端的數(shù)據(jù)的一個格式,然后進(jìn)行模擬測試。那這個工作量還是蠻大的。所以這個私有協(xié)議了,看各位的這個人手夠不夠了,沒有太多好方法,只能去模擬這樣一個這個私有協(xié)議的客戶端。

那傳統(tǒng)的外部站點測出來是最簡單的,無非就是先收集地址,然后測試一下常規(guī)有沒有問題點,然后對這個業(yè)務(wù)功能進(jìn)行測試一下。那業(yè)務(wù)功能也就是說我越權(quán)支付,然后用戶密碼找回驗證碼等等。好 API 接口了。那主要就是我們要把地址先拿到,拿到地址之后其實其他的測試方法都差不多。那么拿了這個地址了,我們有兩種方式。第一種說從開發(fā)團(tuán)隊那邊直接拿到一份 API 該的一個列表,然后并且搞得清楚他們每一個參數(shù)是做什么用的。然后對這些接口了去進(jìn)行一些掃描測試以及一些邏輯性測試,和傳統(tǒng)概念區(qū)別不大了。

第二個就是有可能我們從開發(fā)團(tuán)隊那邊拿了不全對吧。所以我們可以用 reay 去打開一個端口,會使用這個 burp suite 打開一個端口。然后手機(jī)設(shè)置一下代理,把我們的數(shù)據(jù)包了從那邊經(jīng)過一下,然后把這個地址也收集一批。第三個就是比較麻煩了,剛才也講到了,沒辦法輕易了解這個數(shù)據(jù)包的格式,然后比較麻煩。而且不好輕易去各做數(shù)據(jù)包,你必須通過程序的方式,你人工的是很沒有辦法去改數(shù)據(jù)的。但有些數(shù)據(jù)它就是這個十六進(jìn)制的。那他不是說就是你看到的銘文說了你得模擬一個客戶端,用于封裝數(shù)據(jù)包。看你的這個人手夠不夠,人手不夠的話,測了也沒有太大意義。

4.4 案例輸出

每次我們檢測出漏洞,或者遇到應(yīng)急響應(yīng)事件可以將它錄入到我們的安全系統(tǒng)中,方便我們積累經(jīng)驗

那這里有個圖,就我們這個團(tuán)隊了,對公司的一些漏洞了一些整體情況。那有季度的一個報表,有這個部門的一個報表以及統(tǒng)計信息,就是它的漏洞類別的一些統(tǒng)計信息。

五、總結(jié)

那今天主要就分享這四點內(nèi)容,從這個培訓(xùn)到這樣一個鉤子的制作以及這個代碼審計,那最后以及安全測試。那么這一次的話題就講到這里了,那希望對大家有所幫助。再見。

作者:湯青松
微信:songboy8888
日期: 2022年3月15日

本文使用 文章同步助手 同步

CIS 2021網(wǎng)絡(luò)安全創(chuàng)新大會《代碼安全體系建設(shè)》實錄的評論 (共 條)

分享到微博請遵守國家法律
邛崃市| 平安县| 开化县| 清丰县| 鹤庆县| 米林县| 和田市| 隆尧县| 清涧县| 九寨沟县| 海原县| 德昌县| 鹤山市| 南昌市| 北宁市| 和龙市| 沙河市| 密云县| 原阳县| 吉木萨尔县| 静乐县| 乐安县| 和田县| 德州市| 舟曲县| 林周县| 卢氏县| 旺苍县| 海安县| 桃源县| 多伦县| 凤阳县| 曲阜市| 越西县| 荔波县| 太康县| 宜丰县| 铜鼓县| 策勒县| 青田县| 石泉县|