SQL注入
概念:一種將惡意代碼插入到程序 SQL 語句中,從而誤導數(shù)據(jù)庫執(zhí)行惡意邏輯的攻擊技術(shù)。通過 SQL 注入,攻擊者可以達到獲取敏感信息,竊取訪問權(quán)限等目的。
原理:
攻擊方式:
搜索注入
報錯注入
堆疊查詢注入
基于布爾的盲注
基于時間的盲注(延時注入)
HTTP頭部注入
寬字節(jié)注入
二階注入
DNSlog外帶注入
XSS
概念:目標未對用戶從前端功能點輸入的數(shù)據(jù)與輸出的內(nèi)容進行處理或者處理不當,從而導致惡意的JS代碼被執(zhí)行造成竊取用戶信息/劫持WEB行為危害的WEB漏洞!
原理:
攻擊者利用瀏覽器執(zhí)行前端代碼(HTML、CSS、JavaScript)的特性,將惡意的JavaScript代碼插入到頁面中,當用戶瀏覽頁面時,導致惡意代碼被執(zhí)行。
攻擊方式:
1.反射型 xss 攻擊的方法為:攻擊者通過發(fā)送郵件或誘導等方法,將包含有 xss 惡意鏈接發(fā)送給目標用戶,當目標用戶訪問該鏈接時,服務(wù)器將接收該用戶的請求并進行處理,然后服務(wù)器把帶有 xss 惡意腳本發(fā)送給目標用戶的瀏覽器,瀏覽器解析這段帶有 xss 代碼的惡意腳本后,就會觸發(fā) xss 攻擊
2.存儲型 XSS為持久化攻擊,代碼是存儲在服務(wù)器中的數(shù)據(jù)庫里,如在個人信息或發(fā)表文章等地方,可以插入代碼,如果插入的數(shù)據(jù)沒有過濾或過濾不嚴,那么這些惡意代碼沒有經(jīng)過過濾將儲存到數(shù)據(jù)庫中,用戶訪問該頁面的時候,沒有進行編碼過濾輸出到瀏覽器上,就會觸發(fā)代碼執(zhí)行,造成 xss 攻擊
3.DOM型 xss,DOM 型 XSS 其實是一種特殊類型的反射型 XSS,它是基于 DOM 文檔對象模型的一種漏洞。在網(wǎng)站頁面中有許多頁面的元素,當頁面到達瀏覽器時瀏覽器會為頁面創(chuàng)建一個頂級的 Document object 文檔對象,接著生成各個子文檔對象,每個頁面元素對應一個文檔對象,每個文檔對象包含屬性、方法和事件。可以通過 JS 腳本對文檔對象進行編輯從而修改頁面的元素。也就是說,客戶端的腳本程序可以通過 DOM 來動態(tài)修改頁面內(nèi)容,從客戶端獲取 DOM 中的數(shù)據(jù)并在本地執(zhí)行。基于這個特性,就可以利用 JS 腳本來實現(xiàn) XSS 漏洞的利用!
三者區(qū)別:
CSRF
概念:由于網(wǎng)站對用戶網(wǎng)頁瀏覽器的信任導致用戶在當前已登錄的Web站點的狀態(tài)下,訪問攻擊者構(gòu)造的攻擊連接從而執(zhí)行非本意的操作的漏洞。
原理:
攻擊方式:
1. 以受害者名義發(fā)送郵件,發(fā)消息。
2. 盜取受害者的賬號,甚至購買商品,虛擬貨幣轉(zhuǎn)賬。
3. 修改受害者的網(wǎng)絡(luò)配置(比如修改路由器DNS、重置路由器密碼)。
4. 網(wǎng)站后臺創(chuàng)建管理員用戶,破壞網(wǎng)站,獲取服務(wù)器權(quán)限等。
SSRF
概念:由于服務(wù)端提供了從其他服務(wù)器應用獲取數(shù)據(jù)的功能,但又沒有對目標地址做嚴格過濾與限制,導致攻擊者可以傳入任意的地址來讓后端服務(wù)器對其發(fā)送請求,并返回對該目標地址請求的數(shù)據(jù)的Web安全漏洞!
原理:
攻擊方式:
1.訪問內(nèi)部資源:攻擊者通過在目標應用程序中構(gòu)造惡意請求,使其發(fā)起針對內(nèi)部網(wǎng)絡(luò)的請求。
2.攻擊內(nèi)部系統(tǒng):攻擊者可以通過SSRF攻擊利用受害者服務(wù)器作為跳板攻擊其他系統(tǒng)。
3.繞過訪問控制:攻擊者可以利用SSRF漏洞繞過訪問控制,直接訪問目標系統(tǒng)。
4.DOS攻擊:攻擊者可以通過SSRF攻擊使目標服務(wù)器發(fā)起大量的請求,從而導致拒絕服務(wù)(DoS)狀態(tài)。
5.利用其他漏洞:攻擊者可以將SSRF與其他漏洞結(jié)合使用,以增強攻擊效果。
CORS
概念:跨域資源共享,其思想是使用自定義的HTTP頭部讓瀏覽器與服務(wù)器進行溝通,它允許瀏覽器向跨域服務(wù)器發(fā)出XMLHttpRequest請求,從而克服AX只能同源使用的限制。
原理:
第三方網(wǎng)站生成訪問控制策略,指定用戶瀏覽器放寬SOP的限制,實現(xiàn)與指定的目標網(wǎng)站共享數(shù)據(jù)。
CORS跨域漏洞
概念:因為同源策略的存在,不同源的客戶端腳本不能訪問目標站點的資源,如果目標站點CORS配置不當,沒有對請求源的域做嚴格限制,導致任意源都可以訪問時,就存在cors跨域漏洞問題。
原理:
攻擊者可以利用Web應用對用戶請求數(shù)據(jù)包的Origin頭校驗不嚴格,誘騙受害者訪問攻擊者制作好的惡意網(wǎng)站,從而跨域獲取受害者的敏感數(shù)據(jù)。
攻擊方式:
構(gòu)造惡意的html頁面,利用鏈接誘導受害者進行點擊,從而獲取受害者的敏感信息
JSONP
概念:JSONP是JSON with padding(填充式JSON或參數(shù)式JSON)的簡寫,是基于JSON格式達的為解決跨域請求資源而產(chǎn)生的解決方案。
原理:
他實現(xiàn)的基本原理是利用的script標簽的src屬性不受同源策略影響的特性,來跨越獲取數(shù)據(jù)。
說人話就是:可以讓網(wǎng)頁從別的域名(網(wǎng)站)那獲取資料,即跨域讀取數(shù)據(jù)。
攻擊方式:
構(gòu)造惡意的html頁面,利用鏈接誘導受害者進行點擊,從而獲取到受害者的敏感信息
文件包含漏洞
概念:在PHP程序中使用文件包含的對象可以被前端的用戶控制且沒有經(jīng)過過濾或嚴格的定義,用戶可以將其他的文件作為參數(shù)帶入到PHP代碼中解釋執(zhí)行,從而造成敏感信息泄露/程序文件讀取/GetShell等危害的漏洞。
原理:
在應用程序中未正確過濾用戶控制的文件路徑,并將用戶提供的輸入直接或間接地包含在動態(tài)文件包含語句中。
攻擊方式:
1. 本地文件包含(Local File Inclusion,LFI)攻擊:攻擊者通過構(gòu)造惡意請求,直接或間接地包含服務(wù)器上的本地文件。如果攻擊成功,攻擊者可以讀取敏感文件的內(nèi)容,如配置文件、用戶憑證、日志文件等。有時候攻擊者甚至可以通過修改包含的文件來達到任意代碼執(zhí)行的目的。
2. 遠程文件包含(Remote File Inclusion,RFI)攻擊:攻擊者通過構(gòu)造惡意請求,將遠程服務(wù)器上的文件包含到應用程序中。攻擊者通常會在遠程服務(wù)器上放置惡意腳本,然后通過文件包含漏洞來執(zhí)行這些惡意腳本。這使得攻擊者能夠在目標服務(wù)器上執(zhí)行任意的代碼,并可能導致服務(wù)器完全被控制。
文件上傳漏洞
概念:由于程序員未對上傳的文件進行嚴格的驗證和過濾,而導致的用戶可以越過其本身權(quán)限向服務(wù)器上傳可執(zhí)行的動態(tài)腳本文件。
原理:
網(wǎng)站web應用都有一些文件上傳功能,比如文檔、圖片、頭像、視頻上傳,當上傳功能的實現(xiàn)代碼沒有嚴格校驗上傳文件的后綴和文件類型,此時攻擊者就可以上傳一個webshell到一個web可訪問的目錄上,并將惡意文件傳遞給PHP解釋器去執(zhí)行,之后就可以在服務(wù)器上執(zhí)行惡意代碼,進行數(shù)據(jù)庫執(zhí)行、服務(wù)器文件管理,服務(wù)器命令執(zhí)行等惡意操作。
攻擊方式:
尋找測試網(wǎng)站的文件上傳的模塊,常見:頭像上傳,修改上傳,文件編輯器中文件上傳,圖片上傳、媒體上傳等,通過抓包上傳惡意的文件進行測試,上傳后綴名 asp php aspx 等的動態(tài)語言腳本,查看上傳時的返回信息,判斷是否能直接上傳,如果不能直接上傳,再進行測試上傳突破,例如上傳文件的時候只允許圖片格式的后綴,但是修改文件時,卻沒有限制后綴名,圖片文件可以修改成動態(tài)語言格式如php,則可能訪問這個文件的 URL 直接 getshell,可以控制網(wǎng)站。
文件解析漏洞
概念:由于中間件錯誤的將任意格式的文件解析成網(wǎng)頁可執(zhí)行文件,配合文件上傳漏洞進行GetShell的漏洞!
原理:
由于網(wǎng)站管理者操作不當或者web服務(wù)器自身的漏洞,導致一些特殊文件被IIS,apache,nginx或者其他web服務(wù)器在某種情況下解析成腳本文件去執(zhí)行。
攻擊方式:
1. 目錄遍歷攻擊:攻擊者利用文件解析函數(shù)未正確過濾用戶輸入的路徑導致的漏洞,嘗試獲取系統(tǒng)中的敏感文件。攻擊者可能使用"../"等字符序列來跳出當前目錄,訪問系統(tǒng)中的其他目錄和文件。
2. 文件包含漏洞:攻擊者通過向應用程序提交惡意請求,利用應用程序在包含外部文件時未進行恰當驗證的漏洞。攻擊者可能通過在URL參數(shù)、請求頭部或配置文件中注入惡意文件路徑來實現(xiàn)對惡意代碼的執(zhí)行。
3. 遠程文件包含(RFI)攻擊:攻擊者通過利用包含遠程文件的功能,向應用程序注入惡意代碼。攻擊者可以通過提供指向惡意腳本的遠程URL,使應用程序?qū)⒃撃_本下載并在服務(wù)器上執(zhí)行。
4. 本地文件包含(LFI)攻擊:攻擊者通過注入文件路徑或惡意代碼,利用應用程序在包含本地文件時未進行適當驗證的漏洞。攻擊者可能訪問系統(tǒng)中的敏感文件、加密密碼、配置文件等。
5. Null字節(jié)注入攻擊:攻擊者通過在文件名中插入空字節(jié)(0x00),欺騙解析函數(shù)將文件截斷,從而繞過文件擴展名控制,執(zhí)行惡意代碼。
反序列化漏洞
概念:當程序在進行反序列化時,會自動調(diào)用一些函數(shù),例如__wakeup(),__destruct()等函數(shù),但是如果傳入函數(shù)的參數(shù)可以被用戶控制的話,用戶可以輸入一些惡意代碼到函數(shù)中,從而導致反序列化漏洞。
原理:
1. 序列化和反序列化:在編程中,對象可以通過序列化轉(zhuǎn)換為字節(jié)流,以便在不同的系統(tǒng)之間傳輸或存儲。序列化是將對象轉(zhuǎn)換為字節(jié)流的過程,而反序列化是將字節(jié)流轉(zhuǎn)換回對象的過程。
2. 反序列化漏洞:反序列化漏洞通常出現(xiàn)在輸入信任的序列化數(shù)據(jù)上。攻擊者可以構(gòu)造包含特定有效負載的惡意序列化數(shù)據(jù),并將其提供給目標應用程序。
3. 不安全的反序列化:應用程序未正確驗證或過濾反序列化數(shù)據(jù),導致攻擊者能夠執(zhí)行惡意操作。這可能是由于應用程序信任反序列化數(shù)據(jù),而沒有恰當?shù)仳炞C其內(nèi)容或結(jié)構(gòu)。
4. 惡意負載執(zhí)行:攻擊者可以在惡意序列化數(shù)據(jù)中嵌入可執(zhí)行代碼。當應用程序反序列化此數(shù)據(jù)時,惡意代碼將被執(zhí)行,從而使攻擊者能夠執(zhí)行任意操作,包括遠程代碼執(zhí)行、拒絕服務(wù)攻擊、數(shù)據(jù)泄露等。
5. 特定漏洞類型:具體的反序列化漏洞類型包括Java中的Java反序列化漏洞(例如Apache Commons Collections漏洞)、PHP中的PHP反序列化漏洞(例如PHP對象注入漏洞)。這些漏洞通常是由于設(shè)計缺陷或使用不當?shù)姆葱蛄谢瘞臁⒖蚣芑蚬δ芤鸬摹?br style="margin: 0px; padding: 0px; outline: 0px; user-select: initial !important; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;"/>攻擊方式:
1. 參數(shù)污染攻擊:攻擊者可以通過修改應用程序或請求的參數(shù),將惡意的序列化數(shù)據(jù)傳遞給應用程序。應用程序在反序列化時,會解析并執(zhí)行這些惡意數(shù)據(jù),導致安全漏洞。
2. 遠程代碼執(zhí)行(RCE):攻擊者通過傳遞經(jīng)過特殊構(gòu)造的惡意序列化數(shù)據(jù)到應用程序,成功執(zhí)行遠程代碼。這使得攻擊者可以獲取應用程序的控制權(quán),并執(zhí)行任意操作。
3. 敏感信息泄露:在某些情況下,應用程序在執(zhí)行反序列化過程中,可能會暴露敏感信息。攻擊者可以通過構(gòu)造特定的序列化數(shù)據(jù),使得應用程序在反序列化時泄露敏感數(shù)據(jù)。
4. 服務(wù)拒絕(Denial of Service,DoS)攻擊:攻擊者可以構(gòu)造惡意的序列化數(shù)據(jù),使目標應用程序在反序列化過程中消耗大量計算資源或內(nèi)存,導致系統(tǒng)崩潰或無法響應正常請求。
5. 鏈式反序列化攻擊:攻擊者利用復雜的對象關(guān)聯(lián)和嵌套,通過構(gòu)造惡意的序列化數(shù)據(jù),觸發(fā)多次反序列化操作。這些操作可能會引起應用程序中的意外行為,導致安全漏洞。
命令執(zhí)行漏洞
概念:由于PHP程序未對前端用戶提交的數(shù)據(jù)進行嚴格過濾或限制,從而導致傳入的字段被帶入到命令執(zhí)行函數(shù)中作為參數(shù)執(zhí)行,造成GetShell或接管服務(wù)器權(quán)限等高危害的Web漏洞!
原理:
服務(wù)端沒有對執(zhí)行命令的函數(shù)做出過濾導致的。我們可通過編寫一些系統(tǒng)函數(shù)來輸入疑似存在命令執(zhí)行接口的地方,來檢測是否此接口是否存在命令執(zhí)行漏洞。
攻擊方式:
1. 輸入驗證不足:當用戶輸入被直接傳遞給系統(tǒng)命令時,沒有進行充分的輸入驗證和過濾,攻擊者可以通過在輸入中插入特殊字符或命令注入,執(zhí)行任意命令。
2. 操作系統(tǒng)調(diào)用:當程序在執(zhí)行命令時使用操作系統(tǒng)的調(diào)用函數(shù),但沒有正確驗證和過濾輸入數(shù)據(jù),攻擊者可以通過構(gòu)造惡意輸入來執(zhí)行任意系統(tǒng)命令。
3. Shell接管:當程序在執(zhí)行命令時,通過使用系統(tǒng)調(diào)用函數(shù)將命令傳遞給一種外部程序解釋器,如Shell,但在傳遞命令時,未正確過濾和驗證輸入,攻擊者可以通過構(gòu)造特殊字符或命令注入來接管Shell并執(zhí)行任意命令。
4. 文件包含漏洞:當應用程序允許通過用戶輸入包含外部文件時,如果沒有正確驗證和過濾輸入,攻擊者可以構(gòu)造惡意輸入來包含并執(zhí)行任意命令。
5. 操作系統(tǒng)環(huán)境變量:當應用程序使用操作系統(tǒng)的環(huán)境變量來執(zhí)行命令時,如果沒有正確驗證和過濾環(huán)境變量,攻擊者可以通過修改環(huán)境變量的值來執(zhí)行任意命令。
代碼執(zhí)行漏洞
概念:由于PHP程序未對前端用戶提交的數(shù)據(jù)進行嚴格過濾或限制,從而導致傳入的字段被帶入到代碼執(zhí)行函數(shù)中作為參數(shù)執(zhí)行,造成GetShell或接管服務(wù)器權(quán)限等高危害的Web漏洞!
原理:
由于開發(fā)者在編寫代碼時沒有預見到或考慮到攻擊者可能利用輸入來執(zhí)行惡意操作的情況,或者在編寫過程中沒有充分地進行輸入驗證、數(shù)據(jù)過濾和安全控制,從而導致了漏洞的產(chǎn)生。
攻擊方式:
1. 遠程代碼執(zhí)行(Remote Code Execution,RCE):攻擊者通過輸入惡意數(shù)據(jù)觸發(fā)目標系統(tǒng)上的代碼執(zhí)行,進而控制目標系統(tǒng)。常見的遠程代碼執(zhí)行漏洞包括未經(jīng)正確過濾的用戶輸入傳遞給命令執(zhí)行函數(shù)、不安全的反序列化等。
2. SQL 注入(SQL Injection):攻擊者通過在用戶輸入中注入惡意的 SQL 語句,繞過輸入驗證和過濾,從而執(zhí)行惡意代碼。如果目標系統(tǒng)沒有正確處理用戶輸入的 SQL 查詢,就容易受到 SQL 注入攻擊。
3. 命令注入(Command Injection):攻擊者通過在用戶輸入中注入惡意的命令,繞過輸入驗證和過濾,從而在目標系統(tǒng)上執(zhí)行任意命令。常見的命令注入漏洞出現(xiàn)在系統(tǒng)調(diào)用、Shell 命令執(zhí)行、遠程管理協(xié)議等地方。
4. 文件包含漏洞(File Inclusion Vulnerabilities):攻擊者通過包含惡意文件的方式執(zhí)行代碼。這種漏洞通常出現(xiàn)在動態(tài)包含文件的語言中,如 PHP。如果目標系統(tǒng)未對用戶輸入進行適當校驗和過濾,攻擊者就可以通過構(gòu)造惡意的文件路徑或遠程 URL,包含并執(zhí)行惡意文件。
5. eval() 函數(shù)調(diào)用:如果目標系統(tǒng)的代碼中使用 eval() 函數(shù)動態(tài)執(zhí)行用戶輸入的代碼,而沒有對輸入進行適當處理和驗證,攻擊者就可以通過注入惡意代碼利用這個漏洞執(zhí)行任意代碼。
6. 反序列化漏洞(Deserialization Vulnerabilities):攻擊者可以通過構(gòu)造惡意的序列化數(shù)據(jù)來實現(xiàn)遠程代碼執(zhí)行。當目標系統(tǒng)未正確驗證和過濾反序列化的數(shù)據(jù)時,攻擊者可以注入惡意代碼。
常見的執(zhí)行命令, 獲取敏感信息,寫入 web 后門等
webshell免殺
概念:攻擊者通過各種技術(shù)手段繞過安全軟件的檢測和防御機制,使其植入的Webshell能夠在目標系統(tǒng)中長期存在而不被發(fā)現(xiàn)。
原理:
通過對Webshell進行修改或加密,使其能夠繞過安全軟件的檢測和防御機制。
1. 代碼混淆:通過對 webshell 代碼進行混淆,使其難以被靜態(tài)分析引擎或模式匹配規(guī)則識別和檢測。混淆可以包括變量名、函數(shù)名、常量字符串等的更改、添加冗余代碼、使用編碼或加密等手段。
2. 動態(tài)加載:將 webshell 拆分為多個模塊,通過動態(tài)加載和組合來還原完整的功能。這樣做可以使原有的 webshell 樣本變得不連續(xù),使其更難被基于特征匹配的檢測機制檢測到。
3. 命令執(zhí)行繞過:在執(zhí)行命令時,采用一些繞過技巧來規(guī)避安全軟件的檢測和防御。例如,利用操作系統(tǒng)的特殊命令、檢測環(huán)境是否在沙盒內(nèi)、模擬用戶登錄等。
4. 數(shù)據(jù)包加密:對 webshell 和與其交互的數(shù)據(jù)進行加密,使其在傳輸過程中難以被網(wǎng)絡(luò)安全設(shè)備或入侵檢測系統(tǒng)(IDS/IPS)檢測到。
5. 反調(diào)試和反追蹤:在 webshell 中添加反調(diào)試和反追蹤的代碼,以防止安全人員對其進行分析和調(diào)試。
6. 文件偽裝:將 webshell 文件偽裝成系統(tǒng)或合法應用程序的文件,使其更難被安全軟件或系統(tǒng)文件掃描檢測到。
攻擊方式:
1.代碼混淆和加密:攻擊者使用代碼混淆和加密技術(shù),使Webshell的代碼難以被識別和分析。這可以包括使用多種編碼、加密算法和混淆工具,使Webshell的代碼變得無法直接識別和理解。
2.變形和變量替換:攻擊者通過改變Webshell的代碼結(jié)構(gòu)和變量命名,使其與常見的安全檢測規(guī)則和模式不匹配。這樣可以繞過檢測系統(tǒng)的靜態(tài)和動態(tài)分析。
3.動態(tài)生成和反射執(zhí)行:攻擊者使用動態(tài)代碼生成和反射執(zhí)行技術(shù),使Webshell的代碼不存儲在磁盤上,而是在運行時動態(tài)生成并執(zhí)行。這種方式可以繞過靜態(tài)文件掃描和惡意代碼檢測。
4.高級免殺工具和技術(shù):攻擊者使用高級的免殺工具和技術(shù),例如使用自定義的加密算法、虛擬化技術(shù)、多級反射執(zhí)行等,以提高Webshell的免殺能力。這些工具和技術(shù)通常能夠繞過常見的安全防御工具和規(guī)則。
5.文件格式的利用:攻擊者利用一些特定文件格式的漏洞來傳播和執(zhí)行Webshell。例如,利用圖片或文檔文件格式的漏洞,將Webshell嵌入其中,從而繞過文件掃描和安全檢測。
6.時間延遲和睡眠機制:攻擊者通過在Webshell代碼中添加時間延遲和睡眠機制,使Webshell的活動在特定時間范圍內(nèi)變得較為稀少,從而減少被檢測到的可能性。
該文章在 2024/1/24 22:48:42 編輯過