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

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

from:backlion大佬 整理

1.拿到一個待檢測的站,你覺得應該先做什麼?

收集信息:whois、網站源
IP、旁站、C 段網站、服務器系統版本、容器版本、程序版本、數據庫類型、二級域名、防火牆、維護者信息另說…

2.mysql 的網站注入,5.0 以上和 5.0 以下有什麼區別?

5.0 以下沒有 information_schema 這個系統表,無法列表名等,只能暴力跑表名;5.0 以下是多用戶單操作,5.0 以上是多用戶多操做。

3.在滲透過程中,收集目標站註冊人郵箱對我們有什麼價值?

(1)丟社工庫裏看看有沒有泄露密碼,然後嘗試用泄露的密碼進行登錄後臺

(2)用郵箱做關鍵詞進行丟進搜索引擎

(3)利用搜索到的關聯信息找出其他郵箱進而得到常用社交賬號

(4)社工找出社交賬號,裏面或許會找出管理員設置密碼的習慣

(5)利用已有信息生成專用字典

(6) 觀察管理員常逛哪些非大衆性網站,拿下它,你會得到更多好東西

4.判斷出網站的 CMS 對滲透有什麼意義?

查找網上已曝光的程序漏洞,如果開源,還能下載相對應的源碼進行代碼審計。

5.一個成熟並且相對安全的 CMS,滲透時掃目錄的意義?

(1)敏感文件、二級目錄掃描

(2)站長的誤操作比如:網站備份的壓縮文件、說明.txt、二級目錄可能存放着其他站點

6.常見的網站服務器容器?

IIS、Apache、nginx、Tomcat,weblogic、jboss

7.mysql 注入點,用工具對目標站直接寫入一句話,需要哪些條件?

root 權限以及網站的絕對路徑

load_file()讀取文件操作

前提:

知道文件的絕對路徑

能夠使用 union 查詢對 web 目錄有寫的權限

union select 1,load_file(’/etc/passwd’),3,4,5#

0x2f6574632f706173737764

union select 1,load_file(0x2f6574632f706173737764),3,4,5#

路徑沒有加單引號的話必須轉換十六進制

要是想省略單引號的話必須轉換十六進制

into outfile 寫入文件操作

前提:

文件名必須是全路徑(絕對路徑)

用戶必須有寫文件的權限

沒有對單引號’過濾

select ‘<?php phpinfo(); ?>’ into outfile
‘C:\Windows\tmp\8.php’ select ‘<?php @eval($_POST["admin"]);?>’ into outfile
‘C:\Windows\tmp\8.php’

路徑裏面兩個反斜槓\可以換成一個正斜槓/

PHP 語句沒有單引號的話,必須轉換成十六進制

要是想省略單引號’的話,必須轉換成十六進制

<?php eval($_POST["admin"]); ?> 或者 <?php eval($_GET["admin"]); ?> <?php @eval($_POST["admin"]); ?> <?php

phpinfo(); ?>

<?php eval($_POST["admin"]); ?>

建議一句話 PHP 語句轉換成十六進制

8.目前已知哪些版本的容器有解析漏洞,具體舉例?

(1) IIS 6.0

/xx.asp/xx.jpg "xx.asp"是文件夾名

(2) IIS 7.0/7.5

默認
Fast-CGI 開啓,直接在url 中圖片地址後面輸入/1.php,會把正常圖片當成 php 解析

(3) Nginx

版本小於等於 0.8.37,利用方法和 IIS 7.0/7.5 一樣,Fast-CGI 關閉情況下也可利用。

空字節代碼 xxx.jpg.php

(4)Apache

上傳的文件命名爲:test.php.x1.x2.x3,Apache 是從右往左判斷後綴

(6)lighttpd

xx.jpg/xx.php

9.如何手工快速判斷目標站是 windows 還是 linux 服務器?

linux 大小寫敏感,windows 大小寫不敏感

10.爲何一個 mysql 數據庫的站,只有一個 80 端口開放?

(1)更改了端口,沒有掃描出來

(2) 站庫分離

(3) 3306 端口不對外開放

11.3389 無法連接的幾種情況?

(1)沒開放 3389 端口

(2)端口被修改

(3) 防護攔截

(4)處於內網(需進行端口轉發)

12.如何突破注入時字符被轉義?

寬字符注入;hex 編碼繞過

13.在某後臺新聞編輯界面看到編輯器,應該先做什麼?

查看編輯器的名稱版本,然後搜索公開的漏洞

14.拿到一個 webshell 發現網站根目錄下有.htaccess 文件,我們能做什麼?

能做的事情很多,用隱藏網馬來舉例子:

插入<FilesMatch “xxx.jpg”> SetHandler
application/x-httpd-php

.jpg 文件會被解析成.php 文件

15.注入漏洞只能查賬號密碼?

可脫褲,可上傳 webshell,可執行命令

16.安全狗會追蹤變量,從而發現出是一句話木馬嗎?

是根據特徵碼,所以很好繞過

17.access 掃出後綴爲 asp 的數據庫文件,訪問亂碼。如何實現到本地利用?

迅雷下載,直接改後綴爲.mdb

18.提權時選擇可讀寫目錄,爲何儘量不用帶空格的目錄?

因爲 exp 執行多半需要空格界定參數

19.某服務器有站點 A,B 爲何在 A 的後臺添加 test 用戶,訪問 B 的後臺。發現也添加上了 test 用戶?

同數據庫

20.注入時可以不使用 and 或 or 或 xor,直接 order by 開始注入嗎?

and/or/xor,前面的 1=1、1=2 步驟只是爲了判斷是否爲注入點,如果已經確定是注入點那就可以省那步驟去

21:某個防注入系統,在注入時會提示:統檢測到你有非法注入的行爲。已記錄您的 ipxx.xx.xx.xx 時間:2016:01-23 提交頁面:test.asp?id=15 提交內容:and 1=1 如何利用這個防注入系統拿 shell?

在URL 裏面直接提交一句話,這樣網站就把你的一句話也記錄進數據庫文件了, 這個時候可以嘗試尋找網站的配置文件 直接上菜刀鏈接。具體文章參見:

http://ytxiao.lofter.com/post/40583a_ab36540

22.上傳大馬後訪問亂碼時,有哪些解決辦法?

瀏覽器中改編碼

23.審查上傳點的元素有什麼意義?

有些站點的上傳文件類型的限制是在前端實現的,這時只要增加上傳類型就能突破限制了

24.目標站禁止註冊用戶,找回密碼處隨便輸入用戶名提示:“此用戶不存在”,你覺得這裏怎樣利用?

先爆破用戶名,再利用被爆破出來的用戶名爆破密碼。

25.目標站發現某 txt 的下載地址爲http://www.test.com/down/down.php?file=/upwdown/1.txt,你有什麼思路?

這就任意文件下載漏洞,在 file=後面嘗試輸入 index.php 下載他的首頁文件,然後在首頁文件裏繼續查找其他網站的配置文件,可以找出網站的數據庫密碼和數據庫的地址。

26.甲給你一個目標站,並且告訴你根目錄下存在/abc/目錄,並且此目錄下存在編輯器和 admin 目錄。請問你的想法是?

直接在網站二級目錄/abc/下掃描敏感文件及目錄

27.在有 shell 的情況下,如何使用 xss 實現對目標站的長久控制?

(1)後臺登錄處加一段記錄登錄賬號密碼的 js,並且判斷是否登錄成功,如果登錄成功,就把賬號密碼記錄到一個生僻的路徑的文件中或者直接發到自己的網站文件中。(此方法適合有價值並且需要深入控制權限的網絡)

(2)在登錄後纔可以訪問的文件中插入 XSS 腳本

28.後臺修改管理員密碼處,原密碼顯示爲*。你覺得該怎樣實現讀出這個用戶的密碼?

審查元素 把密碼處的 password 屬性改成text 就明文顯示了

29.目標站無防護,上傳圖片可以正常訪問,上傳腳本格式訪問則 403.什麼原因?

原因很多,有可能 web 服務器配置把上傳目錄寫死了不執行相應腳本,嘗試改後綴名繞過

30.審查元素得知網站所使用的防護軟件,你覺得怎樣做到的?

在敏感操作被攔截,通過界面信息無法具體判斷是什麼防護的時候,F12 看HTML 體部 比如護衛神就可以在名稱那看到內容

31.在 win2003 服務器中建立一個 .zhongzi 文件夾用意何爲?

隱藏文件夾,爲了不讓管理員發現你傳上去的工具

32.sql 注入有以下兩個測試選項,選一個並且闡述不選另一個的理由?

A.demo.jsp?id=2+1 B. demo.jsp?id=2-1
選 B,在URL 編碼中+ 代表空格,可能會造成混淆

33.以下鏈接存在 sql 注入漏洞,對於這個變形注入,你有什麼思路?

demo.do?DATA=AjAxNg==

DATA 有可能經過了 base64 編碼再傳入服務器,所以我們也要對參數進行

base64 編碼才能正確完成測試

34 發現 demo.jsp?uid=110 注入點,你有哪幾種思路獲取 webshell,哪種是優選?

(1)有寫入權限的,構造聯合查詢語句使用 using INTO OUTFILE,可以將查詢的輸出重定向到系統的文件中,這樣去寫入 WebShell
(2)使用 sqlmap –os-shell 原理和上面一種相同,來直接獲得一個 Shell,這樣效率更高
(3)通過構造聯合查詢語句得到網站管理員的賬戶和密碼,然後掃後臺登錄後臺,再在後臺通過改包上傳等方法上傳 Shell

35.CSRF 和 XSS 和 XXE 有什麼區別,以及修復方式?

(1)XSS 是跨站腳本攻擊,用戶提交的數據中可以構造代碼來執行,從而實現竊取用戶信息等攻擊。
修復方式:對字符實體進行轉義、使用 HTTP
Only 來禁止 JavaScript 讀取Cookie 值、輸入時校驗、瀏覽器與 Web 應用端採用相同的字符編碼。
(2)CSRF 是跨站請求僞造攻擊,XSS 是實現 CSRF 的諸多手段中的一種,是由於沒有在關鍵操作執行時進行是否由用戶自願發起的確認。
修復方式:篩選出需要防範 CSRF 的頁面然後嵌入 Token、再次輸入密碼、檢驗 Referer。
(3)XXE 是 XML 外部實體注入攻擊,XML 中可以通過調用實體來請求本地或者遠程內容,和遠程文件保護類似,會引發相關安全問題,例如敏感文件讀取。
修復方式:XML 解析庫在調用時嚴格禁止對外部實體的解析。

36.CSRF、SSRF 和重放攻擊有什麼區別?

(1)CSRF 是跨站請求僞造攻擊,由客戶端發起
(2)SSRF 是服務器端請求僞造,由服務器發起
(3)重放攻擊是將截獲的數據包進行重放,達到身份認證等目的

37.說出至少三種業務邏輯漏洞,以及修復方式?
(1)密碼找回漏洞中存在密碼允許暴力破解、存在通用型找回憑證、可以跳過驗證步驟、找回憑證可以攔包獲取等方式來通過廠商提供的密碼找回功能來得到密碼
(2)身份認證漏洞中最常見的是會話固定攻擊和 Cookie 仿冒,只要得到Session 或 Cookie 即可僞造用戶身份
(3)驗證碼漏洞中存在驗證碼允許暴力破解、驗證碼可以通過 Javascript 或者改包的方法來進行繞過

38 圈出下面會話中可能存在問題的項,並標註可能會存在的問題?

GET
/ecskins/demo.jsp?uid=2016031900&keyword=”hello world!”
HTTP/1.1
Host: ***com:82
User-Agent: Mozilla/5.0 (Windows NT
6.1; WOW64; rv:45.0)
Gecko/20100101 Firefox/45.0
Accept: text/css,/;q=0.1
Accept-Language:
zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://*******com:82/eciop/orderForCC/cgtListForCC.htm?zone
=11370601&v=1459663591817
Cookie:myguid1234567890=1349db5fe50c372c3d995709f54c273d;
uniqueuserid=session_0GRMiFiYJhAh5_HZrQoZamJ;
st_uid=N90pIYHLZgjXI-NX01vPUf46w952J-0NcX19vgj1L%3DJXrZP9sf0I
Y-vEI9iNIX150iLXKat1YZLnUf46Z%2C5aec5biM5rCROueDn%2BWPsOeD
n%2BiNiTrng5%2Flj7A%3D; status=True
Connection: keep-alive
(標紅 1:sql 注入,標紅 2:xss,標紅 3:cookies 欺騙,4:會話 CSRF 或重放風險。)考對 HTTP 數據包字段敏感度及會話滲透經驗。

39.找一類你最擅長的漏洞,談下繞過漏洞修復後的方案?
//看對常規漏洞的深入程度

40.你常用的滲透工具有哪些,最常用的是哪個?

burpsuit,appscan,avwvs,sqlmap,fiddler 等

41.描述一個你深入研究過的 CVE 或 POC?
如 cve-2017-11191offcie 的 dde 漏洞

42.談談你經常關注的安全平臺?
如,tools.net,90sec,先知社區,安全客,freebuf 等

43.給你一個網站你是如何來滲透測試的?
在獲取書面授權的前提下:

(1)信息收集,
1.獲取域名的 whois 信息,獲取註冊者郵箱姓名電話等。
2.查詢服務器旁站以及子域名站點,因爲主站一般比較難,所以先看看旁站有沒有通用性的 cms 或者其他漏洞。
3.查看服務器操作系統版本,web 中間件,看看是否存在已知的漏洞,比如 IIS,APACHE,NGINX 的解析漏洞
4.查看 IP,進行 IP 地址端口掃描,對響應的端口進行漏洞探測,比如 rsync,心臟出血,mysql,ftp,ssh 弱口令等。
5.掃描網站目錄結構,看看是否可以遍歷目錄,或者敏感文件泄漏,比如php 探針
6.google hack 進一步探測網站的信息,後臺,敏感文件
(2)漏洞掃描
開始檢測漏洞,如 XSS,XSRF,sql 注入,代碼執行,命令執行,越權訪問,目錄讀取,任意文件讀取,下載,文件包含, 遠程命令執行,弱口令,上傳,編輯器漏洞,暴力破解等
(3)漏洞利用
利用以上的方式拿到 webshell,或者其他權限
(4)權限提升
提權服務器,比如 windows 下 mysql 的 udf 提權,serv-u 提權,windows低版本的漏洞,如 iis6,pr,巴西烤肉,linux 髒牛漏洞,linux 內核版本漏洞提權,
linux 下的 mysql system 提權以及 oracle 低權限提權
(5)日誌清理
(6)總結報告及修復方案

或者:
1)信息收集
a. 服務器的相關信息(真實 ip,系統類型,版本,開放端口,WAF 等)
b. 網站指紋識別(包括,cms,cdn,證書等),dns 記錄
c. whois 信息,姓名,備案,郵箱,電話反查(郵箱丟社工庫,社工準備等)
d. 子域名收集,旁站查詢(有授權可滲透),C 段等
e. google hacking 針對化搜索,pdf 文件,中間件版本,弱口令掃描等
f. 掃描網站目錄結構,爆後臺,網站 banner,測試文件,備份等敏感文件泄漏等
i. 傳輸協議,通用漏洞,exp,github 源碼等

2)漏洞挖掘
1.瀏覽網站,看看網站規模,功能,特點等
2. 端口,弱口令,目錄等掃描
3. XSS,SQL 注入,命令注入,CSRF,cookie 安全檢測,敏感信息,通信數據傳輸,暴力破解,任意文件上傳,越權訪問,未授權訪問,目錄遍歷,文件 包含,重放攻擊(短信轟炸),服務器漏洞檢測,最後使用漏掃工具等
3)漏洞利用 | 權限提升 a) mysql 提權,serv-u 提權,linux 內核版本提權等
4)清除測試數據 | 輸出報告日誌、測試數據的清理
總結,輸出滲透測試報告,附修復方案
5) 複測驗證並發現是否有新漏洞,輸出報告,歸檔

44.sqlmap,怎麼對一個注入點注入?

(1)如果是 get 型號,直接,sqlmap -u “諸如點網址”.
(2)如果是 post 型諸如點,可以 sqlmap -u "注入點網址”–data=“post的參數”
(3)如果是 cookie,X-Forwarded-For 等,可以訪問的時候,用 burpsuite抓包,注入處用*號替換,放到文件裏,然後sqlmap -r “文件地址”

45.nmap,掃描的幾種方式?
tcp connect()
這種方式最簡單。直接與被掃描的端口建立tcp鏈接,如果成功,則說明端口開放,如果不成功則說明端口關閉的。這種掃描的特點是與被掃描端口建立完成的tcp鏈接,完整的tcp三次握手。優點主要是不需要root權限即可掃描端口。因爲connect可以在用戶態直接調用
TCP SYN scanning
這種掃描方式又被稱爲tcp半開放掃描。顧名思義,這種掃描不需要建立完整的tcp連接,即可掃描端口的狀態。發送tcp syn數據包,這個也是tcp握手的第一個包。如果端口開放,則會返回 tcp syn+ack數據包。如果端口關閉,則返回 tcp rst數據包。這樣我們就不用進行tcp 握手的第三步,也可以探測端口的狀態。這種掃描需要構建raw socket。所以需要root權限

TCP FIN scanning
有些時候防火牆繪過濾tcp syn數據包,有些時候會記錄syn數據包並檢測時候有nmap掃描。這時候可以使用TCP FIN scanning。這種方式很簡單。發送tcp FIN數據包到待測端口。如果返回RST數據包,則說明該端口關閉,如果無返回則說明該端口開放。這時tcp協議的一個BUG,所以這種掃描方式不一定百分之百可靠(例如windows),但是這種掃描方式適合大部分 *NIX 系統。
TCP NULL, FIN, and Xmas scans
如果目的端口的是關閉的,並且接受到的tcp數據包如果可能會導致系統錯誤,則返回RST。如果開放的端口接受到諸如SYN RST ACK,則丟棄或者不做任何處理。根據此RFC描述,我們可以發送不包含SYN RST或者ACK標誌的數據包,如果返回RST則說明端口是關閉狀態,如果什麼都沒有返回則說明端口是開放狀態。

Null scan
tcp flag headers 全爲0

FIN scan
只設置tcp FIN標誌

xmas scan
同時設置FIN PSH URG標誌位。

上面這三種掃描的結果都是一致的,如果接受到到RST,則說明端口是關閉的。如果無響應,則端口可能是開放或者filteted狀態。如果返回icmp unreachable error(type 3, code 0, 1, 2, 3, 9, 10, 13),則說明端口一定是filtered的。
TCP ACK scan
這種掃描只設置tcp ack標誌位。這種掃描一般來探測防火牆是否過濾被掃描的端口。如果掃描的端口未被防火牆保護,那麼無論是開放或者是關閉,都會返回RST。nmap將該端口標記爲未被封鎖的(unfiltered),但是不能確定該端口是開放或者關閉狀態。如果無響應,或者返貨icmp error,則該端口一定被防火牆封鎖了
TCP Window scan
tcp窗口掃描,如果接收到RST,則說明端口封鎖了。在某些操作系統,開放的端口會返回一個正數的tcp窗口值,如果端口關閉,則返回tcp窗口值爲0或者負數。但是這種掃描不是很靠譜
TCP Maimon scan
這種掃描爲發送同時設置FIN/ACK的數據包。如果返回RST,則說明端口是開放的,如果無響應,則是關閉狀態的。
IP protocol scan
這種是專門掃描ip協議的。掃描類似於udp掃描,如果IP協議號不存在,返回 icmp錯誤。具體沒用過,不太好寫
UDP ICMP port unreachable scanning
如果udp端口開放,則無響應。如果udp端口關閉,則會返回icmp unreachable error錯誤。這種掃描需要root權限,因爲需要構建raw socket。
UDP connect掃描
這種直接一個一個建立udp連接,如果能建立,則說明端口開放,不能建立則端口關閉。

46.sql 注入的幾種類型?

(1)報錯注入
(2)bool 型注入
(3)延時注入
(4)寬字節注入

47.報錯注入的函數有哪些?

(1)and extractvalue(1, concat(0x7e,(select
@@version),0x7e))
(2)通過 floor 報錯 向下取整
(3)+and updatexml(1, concat(0x7e,(secect
@@version),0x7e),1) 4)geometrycollection()select from test where id=1 and geometrycollection((select from(selectfrom(select
user())a)b)); (5)multipoint()select from test where id=1 and
multipoint((select from(select from(select user())a)b));
(5)polygon()select from test where id=1 and
polygon((select from(select from(select user())a)b));
(7)multipolygon()select from test where id=1 and
multipolygon((select from(select from(select user())a)b));
(8)linestring()select from test where id=1 and
linestring((select from(select from(select user())a)b));
(9)multilinestring()select from test where id=1 and
multilinestring((select from(select from(select user())a)b)); (10)exp()select from test where id=1 and exp(~(select * from(select user())a));

addslashes() 函數返回在預定義字符之前添加反斜槓的字符串

48.延時注入如何來判斷?

(1)if(ascii(substr(“hello”, 1, 1))=104
(2) sleep(5), 1)

49.盲注和延時注入的共同點?

都是一個字符一個字符的判斷

50.如何拿一個網站的 webshell?

上傳,後臺編輯模板,sql 注入寫文件,命令執行,代碼執行,一些已經爆出的 cms 漏洞,比如 dedecms 後臺可以直接建立腳本文件,wordpress 上傳插件包含腳本文件 zip 壓縮包等

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