我的淚水你不懂:企業安全工作落地的一些經驗。 大家好,今天分享的是我司的安全制度落地過程中的一些經驗,自上次看了atiger77大神的文章《一個人的安全部》之後深有感觸,之後便加入了一個人的」安全部」微信群和戰友們交流溝通, 在此之中發現了一個老生常談的問題:理論是理論,安全落地又是一回事兒。
前段時間爆發的struct2和fastjson的高危漏洞的exp都在最短時間內到處傳播,之後的一周內,群裡的戰友們又接二連三遇到了開發人員回退,導致的機房機器被struct2漏洞利用的事件, 更別說不少戰友的研發部門的同事根本不願意升級struct2的紮心事兒,所以僅以此文和大家溝通我自己總結的安全落地的一些經驗。
有一句老生常談的話就是,任何安全問題的本質都是人,如果人沒有安全意識,不管是多麼優秀的安全制度,也會在懈怠之中變得形同虛設,整套系統也會隨之千瘡百孔,漏洞百出,所以我推進工作的重點就是針對人的推進。
找對對接人
與你對接的只有各個研發team的leader,只有leader能控制手下的組員推進工作,千萬不要看到代碼是誰寫的就直接找對應的研發工程師,leader指揮自己的teamer修改自己的代碼保證安全, 這是天經地義的事情teamer會覺得理所當然應該修改,如果你繞開對應的研發的leader,leader往往會干涉你的溝通,導致溝通工作大打折扣。
所以我教給大家一個技巧,大家發現如果一些xss類的漏洞,大家可以說你發現了前端bug,而不是說是發現了漏洞,然後構造一個隨便跳出一堆數位的或者無邏輯的字串的連結,提交為bug,並說明這是影響使用者體驗的, 那麼對於修改甚至增強代碼規範都有益處。 之所以要這麼做是因為我到公司後發現,我做的技術分享參加的人越來越少,甚至我花錢購買的資料,大家也都是一笑置之,所以千萬不要做表面功夫,給大領導看:」你看我做了技術分享了,我演示漏洞了,所以我需要您幫我推進工作」。 那沒有用處,因為,真正落地工作很多時候依靠的是細節,大領導不可能面面俱到,他只能表示同意和支援,具體落實的時候大領導對於細節工作的推進十分有限,他一旦不了解一些技術細節,而開發同事對大領導提出異議,大領導如果反駁不了, 這個事情就黃了一半了,就算你事後怎麼解釋開發人員都會拒絕修改工程,更何況大領導有時候都不支援,所以千萬別在大領導這邊秀技術那都是浪費時間,必須首先在具體的工作人員這邊做工作,不僅僅是技術工作,還包括人際關係工作。
我知道不少戰友的工作情況和我一樣:在公司的許可權是很低的,越是低許可權,你的優先順序就會越大大低於業務同事的需求,這個時候你會作何選擇?是繼續強力推進工作?還是選擇讓步?
一開始,我選擇的是讓步,因為公司大老闆是業務出身。 所以在很多同事的眼裡我們公司對於業務的需求大大超過了安全需求,有好幾次我發現了高危漏洞後,公司同事對此不加以重視,也不配合我的工作推進,前幾次我退讓以後,我發現了一個問題,沒有人會記得你提出過這件事情, 就算你寫在了研發交流系統上,這些漏洞多半一個半月後依然存在於正式服上面,所以如果公司制度建設和工作落地有問題的情況下,千萬不要消極工作,一方面要積極的推進制度建設,一方面也要和leader溝通工作,幾次催促下無法落地, 就開一個技術分享會將發現的漏洞串聯起來,引發一次一連串的攻擊操作,如果還是不修改,就果斷的在正式服上面干擾正常頁面顯示,直到逼研發人員修改,在此過程中要學會保護自己,必須先寫書面資料,郵件或者開發交流留檔,有了日期, 就可以作為反駁的證據,防止直接在正式服上面操作後引發的不必要問題,之後就要盯死leader修改,千千萬萬不要繞過leader直接找具體的研發工程師,否則會功虧一簣。
溝通技巧
第一點中我提到了做leader工作的方法,leader的性格迥異,必須是適應不同的性格拿出不同的辦法來做做溝通工作,就拿我們公司的幾位leader舉例我的思考思路:前端工程師的leader年輕又是個女性,性格很直, 對於我的工作幾乎不理解,尤其是對於代碼返工簡直是抱怨連連,所以很難打交道,她對我提交的xss問題一開始並不配合,這個時候你不能氣餒,要多找機會聊天開玩笑,關注她的細微習慣,直到我發現她喜歡誇她漂亮年輕又喜歡吃水果。
所以,我會時不時買點水果,路過她身邊的時候,要嘴巴甜一點,多說幾句你又年輕了,你今天髮型真不錯的好話,這樣慢慢拉近關係,才能保證打好溝通關係的基礎,在做一些大動作的時候,我只要買零食再臉皮厚一點撒個嬌, 就能保證安全工作能正常推進。 對於oa系統的研發工程師,是個講義氣的有大格局的山東漢子,我的思路就是主動説明排解他的負面情緒和他講道理,之後如果他幫你修改漏洞還多講一點大恩不言謝之類的話,有幾次工作弄到很晚我也是主動感謝他的辛勞,用人情來推進工作。 網上商城的研發leader年輕有幹勁,但是有時候,我並不直接找他推進工作,我偷偷去負責網上商城運營區域去偷聽他們最近的一些業務動作,然後把運營的意思中與安全相關的需求轉化一下語句,再和網上商城的研發的leader去表達, 這樣就做到讓他感覺到現在做的事情又能推進業務需求,又能滿足安全需求。 對於app的leader他由於最近生了孩子,所以他的心態肯定越來越力求穩定,這個時候最好的辦法就是強力推進制度建設,這裡推薦一下app安全掃描這個技巧,尤其是阿裡的掃描報告,阿裡的牌子大名氣響, 你把阿裡的安全報告發到大領導眼前,然後對他遊說競爭對手的app漏洞數量很多,如果我們能做到0漏洞,就能在業務推進當中打擊對手等等要點,這樣就能保證大領導支援你的制度設計。 記住一句老話辦法永遠比問題多,這句話是絕對適用于人的。
工作推進的原則
工作推進的原則,看完以上兩點後千萬要知道,這些技巧和思路的起源就是,你是在説明研發工程師完成工作,而不是他們完成你佈置的任務,因為他們本身就有工作量,如果你帶著你要完成什麼什麼的心態和他溝通工作細節, 你是肯定無法落地工作的,因為你的工作優先順序絕對是最低的,尤其是你的需求增加了他的工作量卻沒有任何實質的變化。 但是你如果帶著你和他帶著共同的目標和任務,站在他的立場上思考並組織語言去溝通,對方工程師就會覺得你和他是一路人是為了共同的目標和目的完成工作,這樣他會相對主動地完成工作內容。 這個溝通的核心就是要讓他覺得你和他是為了共同的目標,或者是你在説明他完成他的目標,這樣才能保證工作的落地。
如果體會不了就從這幾個細節做起:你要記住每個人的口癖比如說甲喜歡說可以可以,你就要學會在同樣情況下說同樣的話,乙喜歡說棒棒噠,你也要學會在同樣的語境下說棒棒噠,總之模仿他人的常用語。
對方在裝修,你就要去看一些裝修的資料然後和他聊天,這樣和他在聊天的工作中表現出,裝修的專案經理是個賊頭賊腦只會偷換裝修原料的小偷,正所謂有共同的敵人就是朋友,而朋友自然就是萬事好商量嘍。 還有在表達自己的工作目的的時候,儘量去找他主要的工作需求,尤其是運營或者前端業務的需求,去找這些需求和安全的共同點,然後包裝成保證業務的推進或者是打擊競爭對手的目的去推進工作,這樣讓他覺得他是在完成優先順序很高的業務需要, 而不是優先順序最後的安全需求。
第四:學會在工作的時候穿針引線,我在公司大家都不願意把新專案的進度告訴我,我只能跑來跑去站在大家的後面看大家的工作進度,揣摩大家最新的研發思路和工作內容,時間長了我發現這樣有一個巨大的好處,我可以找到機會和他們聊天和接觸 ,保證人際關係的穩固的同時還能知道最近的研發進度。 因為我在工作中發現過於工作性質的郵件效率極低,推諉扯皮,交換的資訊不僅僅品質低,很多時候只不過是一個用來證明自己試圖推進工作的書面證明,對實際的工作落地毫無作用, 就像是上文說的在提出安全問題的時候先發一封證明自己發現了這個問題,潛臺詞就是改不改是研發的事情我反正沒責任了,這種行為在不少人的眼裡其實會被認為是推諉責任的開始。 所以和研發人員混熟以後,就可以說:」郵件我就不發嘍,免的還要抄送給領導看,我們私下裡改改就算解決了嘛。 」對方就能完全贊同並且覺得你給他面子。 這對執行力強但不喜歡發郵件討論工作的同事極為有效,很多研發每天要看一大堆需求郵件,對於郵件十分反感,能做到在私下裡解決對他來說是既簡單又有面子的事情。
分享:人肉安全測試技巧一則
還要分享一個自己折騰出來的技巧一則,我們公司是完全採用人肉測試的,自動化測試完全沒有,所以利用這一點我在職場網路搭建了burpsuit作為生成安全檢測文檔的產生器。
第一步:
在proxy功能表列中選擇All interfaces 保證局域網都能使用這個埠
第二步:
在網站功能表列中右鍵點擊要測試的功能變數名稱 我這裡演示遨遊主站
將要測試功能變數名稱放到佇列裡
同時開啟被動掃描
在掃描頁面裡開啟掃描佇列中的目標選項
之後測試人員做任何測試通過你內網的8080埠就能啟動安全掃描,並且都是帶有登入權利的掃描,可以比主動掃描更為深入,一些研發不肯告訴我的新功能也能在測試的過程中得到很好的測試
別忘了關閉攔截器哦
接下面來講講怎麼生成報表
如圖所示右鍵點擊功能變數名稱並選擇報告,然後一路next
最後一步,需要你提供生成報表檔的路徑
可以參考我提交給大領導的文檔設定安全等級
如果有任何建議或者批評請留言,謝謝!