某程旅行安全工程師一面

死不悔改奇男子發表於2024-06-21

一、自我介紹

阿吧阿吧,不多說了

二、兩段實習經歷,看你在南京中孚資料安全部做實習生,你能大概講一下做什麼的嗎

當時做的是一個隱寫溯源專案,是我們實驗室跟南京中孚那邊共同合作的。主要是針對電子文件資訊洩露,資料洩密問題,開發涉密文件隱寫溯源系統,實現敏感資訊洩露追蹤溯源技術,解決涉密文件遭到洩密後無法找到洩密源頭的難題。我主要負責的是:
(1)文字影像中擾動變形字型的字形匹配演算法,帶領團隊設計製作擾動變形字型10000餘字;
(2)版式嵌入隱寫模組,主要針對pdf,ofd等版式檔案進行資訊隱藏嵌入,實現自動化編譯指令碼和國產化平臺環境適配以及後續功能測試,編寫版式嵌入模組詳細設計說明書。

面試官:國產化平臺是什麼
我:我們這個溯源系統除了可以在windows上安裝,也可以適配主要是方德、龍芯、飛騰這三個國產化平臺。
面試官:那你那個指令碼主要寫的是一些嵌入式程式碼嗎?
我:不是,我寫的是一個自動化指令碼,就是我們這個溯源系統是由多個模組相互依賴才能編譯成功的,我所做的就是將這些編譯的過程寫成了一個指令碼,實行自動化。
面試官:這個東西有在哪裡應用嗎
我:這個專案是公司的一個保密專案,暫時只在公司內部推行。
面試官:最終達成的效果有在公司內部做過驗證嗎
我:有的,在我結束實習之前,識別率可以達到70%,後來實習期結束回到學校後,公司有沒有再做最佳化就不知道了。

三、聊一聊華為杯第一屆網路安全創新大賽吧

這個大賽是去年由華為發起的一個國家級比賽,這個網路安全創新大賽主要分為三個賽道,一個是揭榜挑戰賽,一個是創意作品賽,一個是CTF網路攻防大賽。我參加的是CTF網路攻防大賽這個賽道。

面試官:打CTF你主要負責哪一塊
我:主要負責web和misc這兩塊。
面試官:那聊一聊web安全方面的知識。

四、說一下sql注入的基本原理和防禦

sql注入的基本原理:透過某種方式將惡意的SQL程式碼新增到輸入引數中,然後傳遞到SQL伺服器使其解析並執行的一種攻擊手法。
防禦方式:
(1)普通使用者和系統管理員使用者的許可權要有嚴格的區分
(2)預編譯,如使用引數化語句和繫結變數
(3)加強對使用者輸入的驗證,識別惡意內容,過濾掉某些危險語句
(4)多使用資料庫自帶的安全引數
(5)轉義,把使用者的輸入當成文字以及用斜槓來轉義
(6)資料庫異常資訊隱藏
(7)防火牆,黑名單,禁止某些IP訪問
(8)對資料庫資訊進行加密
(9)禁用某些引數,如secure_file_priv
(10)設定陷阱賬號:設定兩個帳號,一個是普通管理員帳號,一個是防注入的帳號。將防注入的賬號設定的很像管理員,如 admin,以製造假象吸引軟體的檢測,而密碼是大於千字以上的中文字元,迫使軟體分析賬號的時候進入全負荷狀態甚至資源耗盡而當機。

面試官:預編譯能解決所有的sql注入問題嗎?
我:應該不行吧,我只知道預編譯是先將sql語句編譯完,再將使用者輸入的語句當成字串拼接在sql語句之後的。(像這種絕對性的語句,有點慌)
後來經過上網查證,果然是不行的,原因有四點:
(1)預編譯不能解決所有SQL隱碼攻擊:比如表名/列名/排序動態傳入的場景,原因是這些地方不能預編譯,因此很多人還是直接拼接的,且囿於對預編譯的信賴,從外到裡沒有過濾。
(2)可以預編譯的地方也有可能出現問題:注入一般爆發在LIKE語句/IN語句中,因為這兩個地方的預編譯寫法都有些特殊,很多開發者懶得去搞,就直接拼接了。
(3)在SQL語句的寫法上,直接拼接比預編譯簡單太多了,沒有接觸過資訊保安的初學者寫出來的程式碼很大可能存在漏洞;就算是有經驗的程式設計師,在快速上線的壓力下,也沒有時間再去考慮資訊保安的問題。
(4)有太多有漏洞的老程式碼來不及或不能換上預編譯,只能靠WAF苟活,而WAF這種東西本身就是在使用者體驗與安全性之間的一種矛盾集合體,總有被繞過的可能性。

五、XSS的基本原理和防禦方式

xss的基本原理:xss是跨站指令碼攻擊,通常指攻擊者在網頁中嵌入惡意程式碼,使用者訪問網頁或點選連結觸發惡意程式碼而被攻擊。
防禦方式:
(1)架設WAF,雖然不能完全解決XSS漏洞,但可以攔截大部分敏感資料,防止駭客利用;
(2)對使用者的輸入進行過濾,對輸出進行轉義處理
(3)使用htmlspecialchares之類的函式,設定httponly
(4)設定CSP

面試官:CSP策略為什麼能夠防止xss?
我:CSP本質上是一個白名單,它規定了瀏覽器能訪問哪些外部資源,大大增強了網頁的安全性。
面試官:如果採用CSP一定能夠絕對防禦XSS嗎?
我:不能吧(像這種絕對性的語句,我一般回答都是否定的,除非非常瞭解),如果真的能絕對防禦,那隻要網站設定了CSP策略,就不會有XSS漏洞了。

六、fastjson漏洞有了解過嗎

fastjson是阿里巴巴的開源JSON解析庫,它可以解析JSON格式的字串,支援將JavaBean序列化為JSON字串,也可以從JSON字串反序列化到JavaBean。fastjson入口類是com.alibaba.fastjson.JSON,主要的API是JSON.toJSONString,parse和parseObject。有三種利用方式:JNDI注入、Templateslmpl載入位元組碼、BCEL載入位元組碼。fastjson主要利用的是@type註解,攻擊者可以將惡意的payload寫在@type註解中,然後透過某些關鍵函式,比如toString()函式會將當前類轉為字串形式,會提取類中所有的Field,自然會執行相應的getter、is等方法。
當第一次漏洞爆出來的時候,官方引入了checkAutoType安全機制,預設情況下autoTypeSupport關閉,不能直接反序列化任意類,而開啟autoTypeSupport之後,是基於內建黑名單來實現安全的,fastjson也提供了新增黑名單的介面。但是如果開啟了autoType,可以在@type的前後分別加上“L;”來進行繞過黑名單的限制。
第二次修復,官方將原本的明文黑名單轉為使用了Hash黑名單,同時之前版本一直存在的使用類描述符繞過黑名單校驗的問題嘗試進行了修復。但是如果類第一個字元是L,結尾是;,會使用substring函式進行去除,顯然可進行雙寫繞過。
第三次修復,官方修復上一個版本中雙寫繞過的問題。但是在loadClass的過程中,還針對[也進行了處理和遞迴,那麼也可以利用[進行黑名單的繞過。
第四次修復,官方修復了使用[繞過黑名單防護的問題,在此版本之後,由字串處理導致的黑名單繞過就結束了。

面試官:那fastjson2有了解過嗎?
我:沒了解過。
後來上網查詢相關資料,也沒找到特別詳細的,如果有大佬瞭解的話,能不能給個連結。

七、科研虛假資訊檢測具體是怎麼樣的

這個是我小論文的研究方向,我所採用的資料集是twitter15和twitter16,這兩個資料集都是自帶標籤的,由於資料集的標籤是分為四類的,所以我的研究也是個四分類問題。我採用的是圖神經網路結合預訓練模型Bert的一種方式對資料集進行訓練和驗證。由於資料集的數量只有幾千條,所以在做實驗的時候,我將資料集劃分成5份,每次拿其中的四份進行訓練,剩下的一份進行驗證,總共進行5次實驗。

八、給你一個場景:公司現在要做一個檔案水印,給公司所有的敏感檔案打上檔案水印要保證檔案複製、修改、新增、另存為都能夠溯源的到,你會怎麼做?

第一個我能想到的就是對字型進行修改,就像我做的那個專案,設計一套字型;或者說在文字的字裡行間嵌入一些人眼不可見但是計算機能識別的標籤。

面試官:那這樣能解決另存為的問題嗎?特別是你之前做的那個專案能解決另存為的問題嗎?
我:應該不行,我之前做的那個專案只要是針對增刪改查操作進行溯源,沒有對另存為這個操作進行設計。
面試官:那你開發這個電子文件數字水印的時候有了解過其他的技術方案嗎
我:沒有,我們這個專案是我們實驗室的老師跟中孚那邊的高階工程師討論出來的結果,我們就是按照老師給我們的文件進行程式碼上的編寫,沒有考慮過其他的設計方案,也沒有對整個電子文件數字水印方案進行調研。

九、那你平時學習滲透或者專案上需要用到的知識,你是從哪裡獲取

第一個就是一些安全社群,比如freebuf,先知社群,奇安信攻防社群;第二個就是b站上的一些教學影片;第三個就是詢問身邊的大佬。

十、你平時有寫過一些小工具之類的嗎?小指令碼呢?

小工具之類的沒寫過,但是小指令碼寫過。比如就是在做ctf題的時候,需要我們在0.5秒之內作出反應,這個時候就需要編寫指令碼去完成這個功能。

十一、你平常用的最多的安全工具是什麼

第一個就是burpsuite,其次的話就是kali系統中自帶的一些滲透工具,比如msfconsole和cs,還有就是sqlmap和漏洞掃描之類的一些工具。

十二、再給一個場景:比如現在有一個任務,是你之前完全不熟悉的,現在給你一個目標,然後需要你實現流量異常檢測,那你怎麼去開展工作

第一步上網搜尋異常流量的定義,第二步可以總結異常流量的特徵;第三步可以根據異常流量的特徵進行監測,更進一步就是編寫指令碼,實現自動化監測;第四步可以在任何可能發生的地方,比如防火牆,DMZ區域之類的地方部署編寫好的指令碼,實現實時監測。

十三、我們公司是一個多地方辦公的,在北京,蘇州,成都都有辦事處,如果你入職了話,你更想去哪個地方

這就是一個開放性的問題了,每個人的答案都可能不同,因人而異。

下面就是反問環節了。

相關文章