為了應對校招,我有點心虛,所以花了幾天時間整理了一些網安面試題--首發土司論壇
希望對大家能有所幫助(比較基礎的漏洞原理和防護繞過就先過濾了--大家應該都耳熟能詳了):
1、JWT(json web token)攻擊手法(頭部、負載、簽名)?
未校驗簽名 解碼后換內容再編碼
禁用哈希 算法修改為none
暴破弱密鑰
操縱Key ID 原因是key ID 里的內容可能被作為參數進數據庫或者查詢 (SQL注入、目錄遍歷、命令注入)
2、如何實現跨域?
jsonp跨域
CORS跨域
代理跨域請求(CDN)
Html5 postMessage 方法
修改 document.domain 跨子域(可跨同級域或父域)
基於 Html5 websocket 協議
3、jsonp跨域和CORS跨域的區別?(嚴格說這兩種都屬於CSRF漏洞)
jsonp是jquery提供的跨域方式
cors是w3c提供的一個跨域標准
——————————————————————
jsonp只支持get方式的跨域
cors支持get和post方式的跨域
——————————————————————
jsonp支持所有的瀏覽器(因為所有瀏覽器都可以使用script標簽發送請求)
cors不支持IE10以下的瀏覽器
4、SSRF漏洞利用
本地:
文件讀取:file:///etc/passwd
使用dict協議獲取Redis配置信息:dict://127.0.0.1:6379/info
使用gopher協議一鍵反彈Redis(未授權訪問) shell fastcgi
攻擊內網中比較脆弱的服務:Redis、數據庫、fastcgi等
遠程:
讀文件發送到遠程服務器
跳板
5、DNS外帶可以用在那些漏洞?
sql
盲XXE和SSRF
XSS無回顯
命令執行無回顯
6、數據庫種類?
關系型數據庫(SQL):MySql、Oracle、MSSQL、Access、Sqlite、postgersql
非關系型數據庫(NO SQL):mongodb、Redis
Xml文件:Xpath注入
7、SQL和NoSQL的區別?
SQL優點:結構穩定、邏輯性強、易於理解
SQL缺點:不適於高並發、不適於海量數據高效讀寫、維護開銷大、相對nosql速度慢
NoSql優點:易擴展、數據結構靈活、查詢速度快
比較:沒有好壞之分,只看應用環境。關系型數據庫可靠性更強、適用於銀行等數據精度要求高的環境。非關系型數據庫適用於高並發、大量數據庫交互、數據准確度不高的環境。
8、文件上傳繞過?
輕量級檢測繞過
a.繞過前端JavaScript檢測:使用Burp抓包改包。
b.繞過服務器端MIME類型檢測:使用Burp抓包改包。
路徑/文件擴展名檢測繞過
a.黑名單檢測方式
大小寫、擴展名(php4)
特殊文件名繞過;
0x00截斷繞過;
.htaccess文件攻擊(windows流)
b.白名單檢測方式
截斷繞過
Content-Disposition: form-data; Content-Type: application/octet-stream
這兩項 加減空格 變換大小寫 字符串拼接(form-data->form-da+ta)
雙文件上傳
上傳木馬時,提示格式錯誤 直接抓包修改Content-Type 為正確的格式嘗試繞過
文件內容檢測:
1、正常圖片末尾添加一句話木馬
2、二次渲染
3、文件頭檢測
PNG 的文件頭為十六進制的 89 50 4E 47 0D 0A 1A 0A
GIF 為 47 49 46 38 37 61 GIF89a
JPG 為 FF D8 FF E0
文件編輯器上傳:FCKEditor、Ewebeditor、UEditor、KindEditor、XHditor
9、open_basedir訪問目錄限制繞過方法?
利用命令執行函數bypass(system(‘cat /etc/passwd’);
推特最新Bypass(chair()函數改變工作目錄)
mkdir(“/tmp/fuck”);
chdir(‘/tmp/fuck/‘);
ini_set(‘open_basedir’,’..’);
chdir(‘..’);
chdir(‘..’);
chdir(‘..’);
chdir(‘..’);
ini_set(‘open_basedir’,’/‘);
var_dump(file_get_contents(“/etc/passwd”));
glob偽協議
<?php
$a = “glob:///var/www/test/.txt”;
if ( $b = opendir($a) ) {
while ( ($file = readdir($b)) !== false ) {
echo “filename:”.$file.”\n”;
}
closedir($b);
}
?>
10、php爆絕對路徑方法?
單引號爆路徑
錯誤參數值爆路徑
www.xxx.com/researcharchive.php?id=-1
Google爆路徑
Site:xxx.edu.tw warning
測試文件爆路徑(test.php、1.php、ceshi.php、info.php)
phpmyadmin爆路徑
/phpmyadmin/libraries/lect_lang.lib.php
配置文件找路徑
11、常見后門方式?
windows:
1.替換系統文件類(shift后門,放大鏡后門)
2.修改注冊表類
自啟動項、屏幕保護程序注冊表、用戶登陸初始化、映像劫持、影子賬戶、文件關聯
3.文件類
自啟動文件夾、office啟動劫持
4.計划任務 schtasks 、WMI、bitsadmin
Linux
1.預加載型動態鏈接庫后門
2.SSH 后門
3.SUID后門
4.vim后門
5.PAM后門
6.進程注入
7.Rootkit
8.端口復用
12、發現IIS的網站,怎樣試它的漏洞?(根據版本)
1、IIS5.0/6.0/7.5解析漏洞
2、IIS7.5 NET源代碼泄露和身份驗證漏洞
3、IIS7.5ASP驗證繞過
4、IIS 6.0安裝PHP繞過認證漏洞/IIS PUT (webDAV)這應該算是一個配置漏洞吧
13、如果存在 SQL 注入怎么判斷不同的數據庫?
(1)注釋符判斷
/是 MySQL 中的注釋符,返回錯誤說明該注入點不是 MySQL;
繼續提交如下查詢字符:–是 Oracle 和 MSSQL 支持的注釋符,如果返回正常,則說明為這兩種數據庫類型之一。
繼續提交如下查詢字符:;是子句查詢標識符,Oracle 不支持多行查詢,因此如果返回錯誤,則說明很可能是 Oracle 數據庫。
(2)函數判斷
and (select count()from MSysAccessObjects)>0 access 數據庫
and (select count()from sysobjects)>0 返回正常說明是 mssql 數據庫
and length(user())>10 返回正常說明是 Mysql
Oracle 可以根據 from dual 虛擬庫判斷
(3)根據語言和中間件常識
Asp和.net通常使用sqlserver
Php通常使用mysql或者postgresql
Java通常是oracle或mysql
IIS服務器是基於windows的架構,后台數據庫有可能是sqlserver
Apache服務器,可能使用開源數據庫mysql或postgresql
14、魚叉式攻擊和水坑攻擊?
魚叉式釣魚攻擊一般通過電子郵件等電子通信方式進行,針對特定個人、組織或企業,竊取的資料信息更敏感更有價值。主要通過誘使點擊惡意連接或者輸入賬號密碼獲取信息。
水坑攻擊算是魚叉攻擊的延伸:
攻擊者定期觀察受害者或特定團體經常訪問的網站,然后用惡意軟件感染這些網站。
然后尋找這些網站的漏洞,並將惡意編程代碼(通常以JavaScript或HTML形式)注入到網站上顯示的廣告或橫幅上。
然后惡意代碼會將受害者重定向到存在惡意軟件或惡意廣告的網絡釣魚網站上。
當受害者訪問這些網站時,受害者的計算機就會自動下載包含惡意軟件的腳本。
然后惡意軟件會收集受害者的個人信息,並將其發送給攻擊者操作的C&C服務器。
其他的釣魚方式:
釣魚WiFi、偽基站、釣魚二維碼、U盤釣魚
15、中間件漏洞總結?
(一) IIS
1、PUT漏洞
2、短文件名猜解
3、遠程代碼執行
4、解析漏洞
(二) Apache
1、解析漏洞
2、目錄遍歷
(三) Nginx
1、文件解析
2、目錄遍歷
3、CRLF注入
4、目錄穿越
(四)Tomcat
1、遠程代碼執行
2、war后門文件部署
(五)jBoss
1、反序列化漏洞
2、war后門文件部署
(六)WebLogic
1、反序列化漏洞
2、SSRF
3、任意文件上傳
4、war后門文件部署
(七)其它中間件相關漏洞
1、FastCGI未授權訪問、任意命令執行
2、PHPCGI遠程代碼執行
16、XSS?(XSS的根源主要是代碼層沒有對輸入輸出做好過濾)
反射性XSS都是把惡意數據傳入服務器,不過濾再回傳瀏覽器造成的;
DOM型XSS主要是通過改變瀏覽器頁面的DOM節點形成的,可能不會經過服務器(PHP_SELF)
存儲型XSS主要是從數據庫里取出來輸出到瀏覽器時沒有做實體化編碼過濾。
XSS蠕蟲的產生條件:(不一定需要存儲型XSS)
一個是產生XSS點的頁面不屬於self頁面
用戶之間產生交互行為的頁面
XSS防護
處理輸出編碼,js轉譯.實體化編碼
黑白名單過濾(編碼限制,標簽限制,符號限制)
跨域限制
CSP內容安全策略(瀏覽器前端防護策略) 的實質就是白名單制度,開發者明確告訴客戶端,哪些外部資源可以加載和執行,等同於提供白名單。將同源同域發揮到極致。它的實現和執行全部由瀏覽器完成,開發者只需提供配置。CSP 大大增強了網頁的安全性。攻擊者即使發現了漏洞,也沒法注入腳本,除非還控制了一台列入了白名單的可信主機。主要防止XSS漏洞,但是不能杜絕XSS。
繞過:
Html5新標簽屬性
JavaScript偽協議
編碼混淆
17、中間人攻擊(Burp抓包原理)?
中間人攻擊是一個(缺乏)相互認證的攻擊;由於客戶端與服務器之間在SSL握手的過程中缺乏相互認證而造成的漏洞 (攻擊方式SSLSniff、SSLStrip)
防御中間人攻擊的方案通常基於以下幾種技術:
1.公鑰基礎建設PKI 使用PKI相互認證機制。
2.延遲測試
使用復雜加密哈希函數進行計算以造成數十秒的延遲;如果雙方通常情況下都要花費20秒來計算,並且整個通訊花費了60秒計算才到達對方,這就能表明存在第三方中間人。
3.使用其他形式的密鑰交換形式
ARP欺騙:
原理:
每台主機都有一個ARP緩存表,緩存表中記錄了IP地址與MAC地址的對應關系,而局域網數據傳輸依靠的是MAC地址。在ARP緩存表機制存在一個缺陷,就是當請求主機收到ARP應答包后,不會去驗證自己是否向對方主機發送過ARP請求包,就直接把這個返回包中的IP地址與MAC地址的對應關系保存進ARP緩存表中,如果原有相同IP對應關系,原有的則會被替換。這樣攻擊者就有了偷聽主機傳輸的數據的可能
防護
1.在主機綁定網關MAC與IP地址為靜態(默認為動態),命令:arp -s 網關IP 網關MAC
2.在網關綁定主機MAC與IP地址
3.使用ARP防火牆
18、數據庫存儲引擎?
數據庫體系結構由客戶端連接層、數據庫服務層及存儲引擎層組成。
存儲引擎是數據庫中具體與文件打交道的子系統,存儲引擎底部是物理存儲層,是文件的物理存儲層,包括二進制日志、數據文件、錯誤日志、慢查詢日志、全日志等。
不同的存儲引擎提供不同的存儲機制、索引技巧、鎖定水平等功能
InnoDB:主流的存儲引擎。(MySQL)
MyISAM:訪問速度快,不支持事務,逐漸被淘汰
MEMORY:BTREE索引或者HASH索引。
19、https的建立過程、TCP三次握手四次揮手過程、OSI四層網絡模型及其各層協議、還有個七層模型?
這些個結合圖記憶吧,搜一搜 應該好多的
20、PHP代碼審計中容易出問題的點?
詳見:
https://github.com/bowu678/php_bugs
https://github.com/hongriSec/PHP-Audit-Labs
1、弱類型(比較、字符類型轉換)
intval函數四舍五入(小數取整繞過)
intval函數轉換字符串
if($a>1000){
mysql_query(‘update … …. set value=$a’)
} //$a一定是整數。然而,你輸入1002/*/union 也能進入這個語句
數組轉字符串
Array轉換整型int/浮點型會返回元素個數;
Array轉換bool返回Array中是否有元素;
Array轉換成string返回Array,並拋出warning。
MD5()函數===使用數組繞過 ?username[]=1&password[]=2 數組hash之后都是null
MD5()函數==,使用md5碰撞 ?username=s878926199a&password=s155964671a hash碰撞+弱類型
2、函數缺陷
Strcmp()函數 無法比較數組,比較時報錯並返回0 PHP5.3之前版本
ereg正則%00截斷 16.php?nctf=1%00%23biubiubiu 支持5.3之前版本的php之后使用preg_match()函數替代(也有繞過分析)
strpos出錯返回的也是null 原來是判斷字符串,我們傳入一個數組返回值就是null null!=false
序列化:將php中對象、類、數組、變量、匿名函數等,轉化為字符串 方便保存到數據庫或者文件中(將狀態信息保存為字符串)
unserialize()反序列化參數可控
iconv在字符編碼轉換時可能導致字符串截斷。上傳的文件名為shell.php{%80-%99}.jpg 上傳繞過
filter_var ( url,FILTER_VALIDATE_URL )使用PHP內置特定過濾器過濾url
可能使用偽協議繞過,再次輸出url時造成XSS
?url=javascript://comment%250a alert(1)
foreach 語句濫用造成的變量覆蓋
3、默認缺省參數缺陷
in_array(a,array,FALSE)函數 檢查數組中是否存在某個值
第三個參數默認為FALSE,若粗心的開發沒有寫第三個參數為true的話,比較過程只進行弱類型檢查,容易產生繞過
htmlentities(string,缺省參數) 將字符轉換為 HTML 轉義字符
三大缺省參數:
ENT_COMPAT(默認值):只轉換雙引號。
ENT_QUOTES:兩種引號都轉換。
ENT_NOQUOTES:兩種引號都不轉換。
同樣的若是開發人員不專心,沒加缺省參數,造成單引號逃逸
21、IP偽造
由於TCP需要三次握手連接,在實現正常的TCP/IP 雙方通信情況下,是無法偽造來源 IP 的,也就是說,在 TCP/IP 協議中,可以偽造數據包來源 IP ,但這會讓發送出去的數據包有去無回,無法實現正常的通信 但是一些DDoS攻擊可以
后端IP獲取來源
REMOTE_ADDR是遠端IP,默認來自tcp連接客戶端的Ip。可以說,它最准確,確定是,只會得到直接連服務器客戶端IP。如果對方通過代理服務器上網,就發現。獲取到的是代理服務器IP了。
HTTP_X_FORWARDED_FOR 為了能在大型網絡中,獲取到最原始用戶IP,或者代理IP地址。對HTTp協議進行擴展,定義的實體頭。 后端處理若這種方法,可能會造成XFF注入和偽造IP繞過訪問限制
X-Real-IP X-Forwarded-For在無代理時可以理解為用戶的IP地址,有反向代理時,先將REMOTE_ADDR賦給X-Real-IP,最后可以從X-Real-IP中獲取用戶的IP。
CDN-Src-IP CDN節點會以某種方式將源客戶端的IP傳遞給源服務器
22、sql注入過濾了逗號,怎么弄?
1、可以用join
select id,ip from client_ip where 1>2 union select from ((select user())a JOIN (select version())b);
2、可以用from 1 for 1
select substr(database() from 1 for 1);
select mid(database() from 1 for 1);
3、offset
select * from news limit 0,1
等價於下面這條SQL語句
select * from yang limit 1 offset 0
22、了解過websocket嗎?
它的最大特點就是,服務器可以主動向客戶端推送信息,客戶端也可以主動向服務器發送信息,是真正的雙向平等對話,屬於服務器推送技術的一種。
其他特點包括:
(1)建立在 TCP 協議之上,服務器端的實現比較容易。
(2)與 HTTP 協議有着良好的兼容性。
(3)數據格式比較輕量,性能開銷小,通信高效。
(4)可以發送文本,也可以發送二進制數據。
(5)沒有同源限制,客戶端可以與任意服務器通信。
(6)協議標識符是ws(如果加密,則為wss),服務器網址就是 URL。
23、DDOS是什么? 非正常的數據包(syn,flood)等
分布式拒絕服務攻擊(DDoS)是目前黑客經常采用而難以防范的攻擊手段。DoS的攻擊方式有很多種,最基本的DoS攻擊就是利用合理的服務請求來占用過多的服務資源,從而使合法用戶無法得到服務的響應。
隨着計算機與網絡技術的發展,計算機的,內存大大處理能力迅速增長增加,可以緩解DDoS攻擊。但是多台傀儡機同時發送也受不了。
CC攻擊
模擬多個正常用戶不停地訪問如論壇這些需要大量數據操作的頁面,造成服務器資源的浪費,CPU長時間處於100%,永遠都有處理不完的請求,網絡擁塞,正常訪問被中止。這種攻擊技術性含量高,見不到真實源IP,見不到特別大的異常流量。
CC攻擊與傳統DDoS的不同
攻擊對象不同:DDoS針對IP,CC針對網頁
流量大小不同:DDoS需要的流量更大
危害不同:DDoS危害大,CC危害時間長
門檻不同:DDoS需要大量傀儡機,CC更容易利用
被攻擊的服務器有以下症狀
有大量等待的TCP連接;
網絡中充斥着大量的無用的數據包,源地址為假;
網絡擁塞,受害主機無法正常和外界通訊;
造成死機。
DDoS防護
網絡設備設施(加帶寬、硬件防火牆、高性能設備)
負載均衡CDN、分布式集群防御
流量清洗服務
限制特定流量、過濾不必要服務和端口
Syn洪流
向服務器發送了SYN報文后突然死機或掉線,服務器第三次握手找不到客戶端,會進行重試,就是重試這個時間,一般是分鍾級的
IP欺騙DOS攻擊
發假IP,連接不成功,服務器清空緩存重連的時間空隙
UDP洪水攻擊
無用數據流占用帶寬
Ping洪流攻擊
聲稱自己的數據包大於64K,對方服務器看到這個聲稱后,內存分配錯誤,導致TCP/IP堆棧錯誤而死機
Land攻擊
特別打造的SYN包,它的原地址和目標地址都被設置成目標服務器地址。接受服務器向它自己的地址發送 SYN-ACK消息,結果這個地址又發回ACK消息並創建一個空連接。被攻擊的服務器每接收一個這樣的連接都將保留,直到超時
24、當你輸入一個網址會發生什么?
1)找域名對應IP(找dns、依次是瀏覽器緩存、系統緩存、路由器緩存、ISP緩存、遞歸搜索)
2)應用層-瀏覽器給Web服務器發送一個Http請求
3)傳輸層-HTTP數據包會嵌入到TCP報文中
4)網絡層-TCP報文段嵌入IP數據包中
5)網絡接口層-IP數據包嵌入到幀中,在網絡中傳輸
6)網關轉發到達相關服務器,請求對應端口的服務
7)服務器返回一個HTTP響應
8)瀏覽器以相同的步驟,讀取HTTP響應的內容,解析頁面
25、webshell檢測思路?
靜態檢測 匹配特征碼
動態檢測 cmd bash等敏感應用異常啟用
日志檢測 HTTP異常請求模型檢測
語法檢測 關鍵危險函數的捕捉
計划任務 防止后門
26、GPC是什么?開啟了怎么繞過
php.ini中的magic_quotes_gpc,默認為off,如何打開了,會實現addslashes()和stripslashes()的功能,對於從GET,POST,COOKIE輸入的單引號、雙引號、反斜線和NULL會加反斜線進行轉義
繞過:
http的請求頭的內容是可以在$_SERVER讀取的,可將其作為傳參變量
二次注入
編碼解碼繞過(UTF-7、GBK、二次編碼等)
代碼審計—單引號逃逸
27、web常用的加密算法有什么
單向散列加密 MD5、SHA、MAC
對稱加密 AES、DES
非對稱加密 RSA、RSA2
前端加密 RSA、MD5、AES
對稱加密:加、解密使用的同是一串密鑰 效率高 不安全
非對稱加密:加、解密使用不同的密鑰,互相加解密 效率低 安全 https就是這個
28、XSS除了獲取cookies還能干嘛?
獲取服務器真實ip
xss蠕蟲
釣魚攻擊
前端JS挖礦
獲取鍵盤記錄
29、網絡安全事件應急響應
取證,登錄服務器
備份,檢查服務器敏感目錄
查毒(搜索后門文件 - 注意文件的時間,用戶,后綴等屬性),調取日志(系統日志,中間件日志,WAF日 志等);
處理,恢復備份(快照回滾,最近一次),確定入侵方法(漏洞檢測,並進行修復)
溯源,查入侵IP,入侵手法(網路攻擊事件)的確定等
記錄,歸檔—-預防-事件檢測-抑制-根除-恢復-跟蹤-記錄
通用漏洞的應對等其他安全應急事件
30、HTML5新的安全特性
iframe沙箱 默認除了顯示靜態頁面以外,不准提交表單、不准彈窗、不准執行腳本
CSP內容安全策略
Flash加載取消
31、病毒,木馬,蠕蟲的區別?
病毒,木馬,蠕蟲統稱為電腦病毒。
病毒是編制者在計算機程序中插入的破壞計算機功能或者數據的代碼。
木馬是指通過特定的程序來控制另一台計算機。(一句話木馬)
蠕蟲是一種能夠利用系統漏洞通過網絡進行自我傳播的惡意程序。(XSS蠕蟲)
病毒、蠕蟲的共同特征是自我復制、傳播、破壞電腦文件。
木馬偽裝、潛伏在電腦中、竊取資料、遠程操控。
32、對於雲安全的理解?
權限管理,內網威脅,信息泄露,過於依賴托管廠商
33、防止XSS,前端后端兩個角度?
前端:盡量不要使用直接拼接 HTML 的方法,如果框架允許,使用 createElement之類的方法實現。或者采用比較成熟的渲染框架,如 Vue
CSP策略
后端:實體化編碼、長度截取、過濾
34、虛擬機逃逸
虛擬機逃逸指的是突破虛擬機的限制,實現與宿主機操作系統交互的一個過程,攻擊者可以通過虛擬機逃逸感染宿主機或者在宿主機上運行惡意軟件。
35、如何防范羊毛黨?
相應的活動門檻和限制(什么用戶、次數)
對於有貓池、卡池的采用封IP、封用戶、增加驗證碼、身份核驗
36、Mysql一個@和兩個@什么區別
一個@是 用戶自定義的變量
兩個@是 globa(全局變量)l或session變量
37、webshell已經上傳如何禁止菜刀等工具連接
安全狗攔截、掃描木馬刪除、可以流量分析(蟻劍、冰蠍流量免殺)
繞過防護:改超全局變量法、改連接函數法@eval(base64_decode($_POST[action]));
38、一個互聯網網站端口如何防護,發現入侵如何解決?
如何防護:防火牆、WAF、IPS(入侵防御系統)、IDS(入侵檢測系統)
如何解決:關閉危險服務如SMB、RDP、數據庫端口不對外網訪問 封禁ip,查看日志。
39、NAT的兩種模式
SNAT: 源網絡地址轉換
原理:修改數據包的源地址。源NAT改變第一個數據包的來源地址,它永遠會在數據包發送到網絡之前完成,數據包偽裝就是一具SNAT的例子。
將內網發出的請求報文原地址轉換成自己的地址發往遠端服務器,對回來的響應報文在作做反向處理,類似網絡代理。
DNAT:目的網絡地址轉換
原理:修改數據包的目的地址。Destination NAT剛好與SNAT相反,它是改變第一個數據包的目的地地址,如負載、端口轉發和透明代理就是屬於DNAT。
將內網服務端口映射在公網出口地址上。
NAT不僅能解決了lP地址不足的問題,而且還能夠有效地避免來自網絡外部的攻擊,隱藏並保護網絡內部的計算機
40、企業內部安全
物理威脅:門禁、監控、禁止USB設備接入、封閉PC、定時巡檢
網絡威脅:部署行為管控設備、可靠的網絡結構、IP和MAC地址綁定,將網絡行為分組、限制不必要的軟件和通信協議、定期審核日志
41、eval和system的區別?
eval類型函數是代碼執行
system類型函數是命令執行
eval函數里必須是一個符合php語法的語句,如果語句結尾沒有分號會報錯
<?php
system(“whoami”); //whoami命令被執行
eval(“whoami”); //whoami命令不被執行
?>
<?php
eval(“phpinfo();”); //phpinfo()被執行
system(“phpinfo()”); //phpinfo()不被執行
?>
<?php
$num=1;
eval(“\$a = $num;”); //有效,$a=1
system(“\$b = $num;”); //無效,$b=NULL
?>
代碼執行函數:eval、assert、call_user_func、create_function、array_map
命令執行函數:system、passthru、exec、pcntl_exec、shell_exec、popen()、``
42、python 黑科技之迭代器、生成器、裝飾器
迭代器:是一種訪問集合元素的一種方式。 可迭代對象 list、set和dict
生成器:保存的是算法,又叫生成器函數。
裝飾器:不改變原來函數功能的基礎上增加其他功能。
43、緩沖區溢出原理和防御
通過往程序的緩沖區,寫入超出其長度的內容,造成緩沖區的溢出,從而破壞程序的“堆棧”,使程序轉而執行其它指令,以達到攻擊的目的。造成“緩沖區溢出”的原因是,程序中沒有仔細檢查用戶輸入的參數。
44、進程和線程
進程是操作系統分配資源的最小單元, 線程是操作系統調度的最小單元。
一個應用程序至少包括1個進程,而1個進程包括1個或多個線程,
每個進程在執行過程中擁有獨立的內存單元,線程在執行過程中共享內存。
45、MS08-067漏洞原理分析
445端口,SMB網絡服務和MSRPC網絡服務相關,緩沖區溢出造成的遠程代碼執行
46、http代理
普通代理:這種代理扮演中間人角色 類似burp
隧道代理:HTTP 客戶端通過 CONNECT 方法請求隧道代理創建一條到達任意目的服務器和端口的 TCP 連接,並對客戶端和服務器之間的后繼數據進行盲轉發。 類似機場節點
47、MySQL 4.1/5.0/5.5各版本的主要區別?
4.1 增加了子查詢的支持,字符集增加UTF-8
5.0 增加了INFORATION_SCHEMA系統數據庫
5.5 默認存儲引擎更改為InnoDB、引入了一種新的性能架構P_S,用於mysql監控服務器運行時的性能
48、什么是CRLF注入攻擊?(%0d%0a)(\r\n)
是一種當用戶將回車換行字符插入到應用中而觸發漏洞的攻擊技巧。
當該字符與HTTP協議請求和響應的頭部一起聯用時就有可能會出現各種各樣的漏洞,包括http請求走私和http響應拆分。
http請求走私:
緩存毒化—攻擊者可以修改緩存中的內容然后不顯示正常頁面而顯示惡意頁面。
防火牆逃逸—攻擊者通過構造數據包來逃避安全檢查(兩個包),通常會利用CRLF和構造超大的數據包。
請求劫持—攻擊者可以通過該利用獲取HttpOnly的cookie和http認證數據,類似於xss但是不需要攻擊者和黑客進行交互。
http響應拆分:加入一些請求頭,造成類似XSS的攻擊效果
49、內網黃金票據、白銀票據的區別和利用方式
(1)白銀票據:抓取到了域控服務hash的情況下,在客戶端以一個普通域用戶的身份生成TGS票據,並且是針對於某個機器上的某個服務的,生成的白銀票據,只能訪問指定的target機器中指定的服務。
(2)黃金票據:直接抓取域控中賬號的hash,在客戶端生成一個TGT票據,那么該票據是針對所有機器的所有服務
50、預編譯能否100%防sql注入? 不能
預編譯原理:
先將查詢語句固定
通過函數將傳參變為字符串
拼接字符串去執行
你的關鍵字根本不會當作關鍵字去執行
$pdo->query(‘SET NAMES gbk’);
$var = “\xbf\x27 OR 1=1 /“;
$query = ‘SELECT FROM test WHERE name = ? LIMIT 1’;
$stmt = $pdo->prepare($query);
$stmt->execute(array($var)); 類似於寬字節注入
51、reverse_tcp 和 bind_tcp 的區別?
(1)reverse_tcp 木馬會主動連接目標服務器 測試機主動連接攻擊機
(2)bind_tcp 木馬會監聽本地的端口 攻擊機主動連接測試機
采用reverse的方法一般較為安全,因為是在測試機連接攻擊機,所以一般不會被防火牆發現;而bind在測試機打開端口時很容易被安全軟件和防火牆發現
52、談談對安全的理解
互聯網的發展便捷了生活,也帶來了安全問題
安全是相對的,打破安全壁壘的代價如果高於安全保護的價值,就可以說是安全的
滲透測試中安全的本質是一種信任機制,是否每次都對用戶發來的請求做安全驗證
安全是一群不走尋常路、不按常規出牌的人摸索出來的
攻防相互促進(漏洞填堵、繞過)
53、CMS指紋規則
Website 官方網站
JS文件
Headers 匹配的請求頭信息
Cookies 匹配的cookies字段
Version 版本信息
Product 產品名稱匹配
Meta特征
URI特征
54、如何保護dom不被修改 防止dom xss
瀏覽器寫入頁面渲染前先轉義
不要使用eval函數處理不可控的外部數據 JS中
使用filter.js庫 filter.js由一系列針對常見業務場景下造成DOM XSS的惡意數據開展過濾的函數組成。
55、python爬蟲的常見問題
爬蟲常用模塊:requests、BeautifulSoup、lxml、re、xpath、selenium、
數據存儲、txt/csv/mysql
Selenium(無界面瀏覽器)突破JS加密
傳統爬蟲多線程 現在提倡異步IO協程 異步IO模塊主要有aiohttp、aiomysql、asyncio
推薦的爬蟲策略:爬取之后寫入數據庫,單獨寫提取、過濾辦法 防止需求改了重新爬取
網絡池解決增量爬取、斷點續爬、去重
GIL 全局解釋器鎖 為保證線程安全的資源鎖
56、IDS/IPS防護原理及繞過思路
IDS工作在網絡層,旁路部署,通過抓取和分析網絡流量來發現攻擊;
IPS一般也是在網絡層旁路,可以理解為具備阻斷能力的IDS,是IDS的升級版(也有IDS檢測到攻擊通知阻斷設備執行阻斷動作的設備聯動模式),可以覆蓋網絡層和應用層;
WAF是在應用層防護Web攻擊的程序,一般是跟Web接入層對接,可旁路可串行,僅能覆蓋應用層
繞過:
1、TCP分片重組
2、IP分片Python下的組件Scapy
3、偽造TCP狀態
4、IPv6 正在服役的IDS/IPS/WAF不一定支持
57、運營商(或其他)網絡劫持
本地劫持:魔改瀏覽器(hao123)
網絡劫持:運營商劫持(數據包注入廣告劫持代碼)、cdn緩存污染(CDN服務器中的關鍵JS文件被污染注入)、DNS劫持(路由器漏洞)
58、紅藍對抗中藍隊反殺紅隊場景和姿勢?
蟻劍反殺rce、蜜罐、宏病毒誘餌
59、驗證碼相關利用點
1、驗證碼可重用 (特定賬戶暴力破解、CSRF)
2、驗證碼可識別 (特定賬戶暴力破解)
3、驗證碼在客戶端生成、顯示、校驗 (特定賬戶暴力破解、CSRF)
4、空驗證碼繞過 (特定賬戶暴力破解、CSRF)
5、驗證碼數量有限 (特定賬戶暴力破解)
6、是否校驗客戶端可控 (特定賬戶暴力破解、CSRF)
7、驗證碼可預測 (特定賬戶暴力破解)
8、錯誤超過一定次數才開啟驗證碼 (撞庫)
60、為什么aspx木馬權限比asp大?
aspx使用的是.net技術。IIS 中默認不支持,ASP只是腳本語言而已。入侵的時候asp的木馬一般是guest權限…APSX的木馬一般是users權限。
61、內網服務器,如何進行信息收集?
(1)手動,用一些小工具(批量看存活)
new user /domain查域、net view看共享、hosts文件內網ip域名映射、wifi記錄和密碼、瀏覽器中的密碼、敏感文件、各類服務的配置文件中信息、歷史命令、ssh私鑰、FTP的連接信息、xshell等ssh連接工具的session文件,3389連接歷史和被連接歷史信息、某些內網api接口未授權訪問
(2)掃描器
主機掃描、端口掃描、漏洞掃描、識別內網環境、密碼爆破、抓密碼
(3)留后門,抓信息
62、只有一個登錄頁面有哪些思路
注入、萬能密碼、爆破、JS里面的敏感信息(接口未授權訪問)、密碼找回、敏感目錄,注冊后嘗試越權(或者進入系統后再看看)
63、token和referer做橫向對比,誰安全等級高?
token安全等級更高,因為並不是任何服務器都可以取得referer,如果從HTTPS跳到HTTP,也不會發送referer。並且FLASH一些版本中可以自定義referer。但是token的話,要保證其足夠隨機且不可泄露。(不可預測性原則)
對referer的驗證,從什么角度去做?如果做,怎么杜絕問題
空referer,referer正則過濾不完善。
針對token,對token測試會注意哪方面內容,會對token的哪方面進行測試?
重放、分析加密規則、結合信息泄露緩存日志替換越權
64、柵欄密碼
把要加密的明文分成N個一組,然后把每組的第1個字連起來,形成一段無規律的話。
不過柵欄密碼本身有一個潛規則,就是組成柵欄的字母一般不會太多。
凱撒密碼是柵欄密碼的一種
65、一個互聯網網站端口如何防護,發現入侵如何解決?
防火牆,waf,ips,ids,終端准入,網頁防篡改,規范開發代碼,關閉危險服務例如SMB,RDP,數據庫端口不對互聯網訪問等,發現異常入侵可在防火牆封禁ip,或者是查看日志。
66、cookie響應消息頭的secure和HttpOnly分別作用是什么?
secure:在Cookie中標記該變量,表明只有當瀏覽器和web server之間的通信協議為加密認證協議時,瀏覽器才向服務器提交響應的Cookie。
Httponly:禁止Javascript讀取(防XSS)
67、如何生成一個安全的隨機數?
通過一些物理系統生成隨機數,如電壓的波動、磁盤磁頭讀/寫時的尋道時間、空中電磁波的噪聲等。
歡迎有需要的師傅們查閱,要是有什么不妥的地方歡迎留言。
這些是我整理的一部分,附件里還會包含一些基礎漏洞原理和各種工具要點,而且排版也稍微好一點,大家有興趣可以下載下來,打印看看