數(shù)據(jù)來源
部分?jǐn)?shù)據(jù)來源:ChatGPT??
一、跨站腳本攻擊簡介
1、什么是跨站腳本攻擊?
????????跨站腳本攻擊(Cross-site scripting,XSS)是一種常見的網(wǎng)絡(luò)安全漏洞,攻擊者通過在受害網(wǎng)站注入惡意腳本代碼,使得其他用戶訪問該網(wǎng)站時執(zhí)行這些惡意代碼,從而達(dá)到攻擊的目的。
2、危害?
- 獲取用戶信息:(如瀏覽器信息、ip地址、cookie信息等)
- 釣魚:(利用xss漏洞構(gòu)造出一個登錄框,騙取用戶賬戶密碼,提示登錄過期,模擬一個網(wǎng)站的登錄框,將用戶名、密碼發(fā)送到攻擊者服務(wù)器)
- 注入木馬或廣告鏈接:(有些在主站注入非法網(wǎng)站的鏈接,對公司的聲譽有一定的影響)·
- 后臺增刪改網(wǎng)站數(shù)據(jù)等操作:(配合CSR漏洞,騙取用戶點擊,利用s模擬瀏覽器發(fā)包)
- xss蠕蟲(微博蠕蟲:只要看過某人的微博就是自動關(guān)注某人;貼吧蠕蟲:看過某個帖子就是自動回復(fù)這個帖子)?
二、跨站腳本攻擊漏洞類型及利用場景
跨站腳本攻擊(Cross-Site Scripting, XSS)主要有以下三種類型:
- 反射型XSS:攻擊者構(gòu)造一個包含惡意腳本的鏈接,誘騙用戶點擊后觸發(fā)攻擊。
- 存儲型XSS:攻擊者將惡意腳本代碼上傳到目標(biāo)網(wǎng)站數(shù)據(jù)庫中,當(dāng)其他用戶訪問該網(wǎng)站后執(zhí)行惡意代碼。
- DOM型XSS:攻擊者通過DOM操作動態(tài)插入惡意腳本代碼,然后用戶觸發(fā)惡意代碼執(zhí)行。
????????XSS攻擊可能導(dǎo)致用戶個人信息泄露、賬戶被盜、釣魚等風(fēng)險,因此,網(wǎng)站開發(fā)者應(yīng)該遵循安全編碼規(guī)范,對輸入輸出做好過濾和轉(zhuǎn)義工作,以防止XSS攻擊。
攻擊者利用XSS漏洞進(jìn)行攻擊的場景很多,以下是一些可能的情況:
- 盜取用戶賬號密碼等個人敏感信息。
- 發(fā)布虛假信息詐騙資金或濫發(fā)垃圾信息等。
- 欺騙用戶釣魚、下載惡意軟件等。
- 篡改網(wǎng)頁內(nèi)容、掛馬、植入廣告等。
- 利用XSS漏洞攻擊服務(wù)器內(nèi)網(wǎng)、滲透系統(tǒng)等。
為了防止XSS攻擊,開發(fā)者需要加強輸入輸出數(shù)據(jù)的校驗和過濾,減少腳本可執(zhí)行內(nèi)容,并及時更新補丁等方式來提高系統(tǒng)的安全性。
http://testfire.net? 這是一個開源的測試網(wǎng)站,攻擊這個網(wǎng)站不犯法。
1)反射型xss - 利用示例-測試網(wǎng)站是否存在反射型xss
先在輸入框輸入點東西,隨便寫如:hello、你好啊,李銀河? 如下圖:
然后加上一些HTML標(biāo)簽,如:h1~h3、p、a等等
<a href="https:www.baidu.com">你好啊,李銀河</a>
李銀河是誰?我也不知道.
????????測試到這里我們就可以得出結(jié)論,這個網(wǎng)站存在反射型xss,可以被不法分子利用,出現(xiàn)這個漏洞的原因:寫這個網(wǎng)站的前端開發(fā)人員沒有對輸入框的輸入內(nèi)容進(jìn)行過濾,當(dāng)然一般大型網(wǎng)站是沒有這種漏洞的,Altoro Mutua這個網(wǎng)站是外國人專門開發(fā)給別學(xué)習(xí)測試攻擊的所以有很多漏洞。
如果你需要在輸入框執(zhí)行JS代碼則需要寫在?<script>標(biāo)簽內(nèi),如:
<script>alert("hello,zhangsan")</script>
????????alert() 這個函數(shù)的效果就是在頁面彈窗,完整寫法:window.alert() 簡寫:?alert()
?
????????或者輸入:<img src=1 οnerrοr=alert(1)>? ? ?# img 是圖像標(biāo)簽,src填寫的是圖片路徑這里寫1路徑肯定是不存在的然后就報錯,error 就是捕獲報錯的事件,on是綁定事件給這個img標(biāo)簽,“=”后面就可以跟我們要執(zhí)行的JS代碼
?
2)存儲型XSS利用示例
?
這里我就使用DVWA靶場做測試(windows安裝,kali安裝)
首先,把靶場的安全等級調(diào)到最低
選擇XSS存儲
<script>alert("hello,zhangsan")</script>
<scr<script>ipt>alert("xss")</script>
刷新網(wǎng)頁之后,彈框還是出彈出。(如果這個是真實的網(wǎng)站那么我們這個彈框攻擊也會影響到其他用戶,雖然沒啥用但是可以惡心人,導(dǎo)致其他用戶心理不舒服時間久了網(wǎng)站的用戶就會自然減少,可以說是“損人不利已”)
原因:輸入框沒有嚴(yán)格的篩選就存到了數(shù)據(jù)庫中,網(wǎng)頁從數(shù)據(jù)庫拿出數(shù)據(jù)展示也沒有做過濾。
可以查看源碼,看看這個網(wǎng)頁是如何寫的
<?php
if( isset( $_POST[ 'btnSign' ] ) ) {
// Get input
$message = trim( $_POST[ 'mtxMessage' ] );
$name = trim( $_POST[ 'txtName' ] );
// Sanitize message input
$message = stripslashes( $message );
$message = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $message ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));
// Sanitize name input
$name = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $name ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));
// Update database
$query = "INSERT INTO guestbook ( comment, name ) VALUES ( '$message', '$name' );";
$result = mysqli_query($GLOBALS["___mysqli_ston"], $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );
//mysql_close();
}
?>
????????trim()? ????????????????????????? ? ? ? ? ? ? ?#??trim()函數(shù)主要作用是移除字符串兩側(cè)的空白字符或其他預(yù)定義字符。
????????mysql_real_escape_string()? #?函數(shù)會對字符串中的特殊符號(\x00,\n,\r,\,‘,“,\x1a)進(jìn)行轉(zhuǎn)義。
????????stripslashes()? ? ? ? ? ? ? ?#?函數(shù)刪除字符串中的反斜杠
????????$query ?= "INSERT INTO guestbook ( comment, name ) VALUES ( '$message', '$name' );";? ?#?INSERT INTO 是SQL的插入語句,這條代碼主要是把$message(我們輸入的留言內(nèi)容)和$name(留言名稱)分別插入到數(shù)據(jù)庫的guestbook表的comment和name字段中。對SQL基礎(chǔ)語句不了解的可以看這篇:SQL的基本語句用法
????????可以看到,對輸入并沒有做XSS方面的過濾與檢查,且存儲在數(shù)據(jù)庫中,因此這里存在明顯的存儲型XSS漏洞
可以自行把安全等級調(diào)高然后查看源碼,看看是如何做防御的(我這就不多講了,有興趣的可以看這篇:DVWA(XSS存儲型)?我覺得他寫的挺詳細(xì)的)
不同的計算機語言防御方式是不一樣的,不過原理都是相通的。
3)DOM型XSS-利用示例
DVWA靶場做測試?
跟之前的一樣先把安全等級調(diào)到最低?
開始測試,原來的下拉列表的DOM結(jié)構(gòu)如下圖:(F12可以打開開發(fā)者模式,查看網(wǎng)頁的結(jié)構(gòu)代碼)
?檢測網(wǎng)站是否存在XSS的DOM漏洞
<script>alert("test")</script>
盜取網(wǎng)站的cookie?
<script>alert(document.cookie)</script>
防御的話,可以自行調(diào)高安全等級然后查看源碼
文章來源:http://www.zghlxwxcb.cn/news/detail-500626.html
三、防御策略
為了防止跨站腳本攻擊(Cross-site scripting, XSS)對系統(tǒng)帶來的安全威脅,以下是一些常見的防御策略:文章來源地址http://www.zghlxwxcb.cn/news/detail-500626.html
- 對用戶輸入做好過濾和轉(zhuǎn)義處理,避免被直接執(zhí)行作為腳本代碼。開發(fā)者可以使用一些現(xiàn)成的庫和框架來實現(xiàn)數(shù)據(jù)過濾和轉(zhuǎn)義,例如OWASP ESAPI、JQuery等。
- 在請求中包含HTTPOnly標(biāo)記的cookie,避免JavaScript腳本獲取Cookie值。
- 配置CSP(Content-Security-Policy)頭部,限制頁面資源的加載和執(zhí)行,減少XSS攻擊的可能性。
- 使用低特權(quán)賬號和權(quán)限分離策略,避免敏感操作的惡意執(zhí)行和篡改頁面內(nèi)容。
- 及時更新補丁和升級軟件版本,以消除可能存在的安全漏洞。
- 對于發(fā)生XSS攻擊的網(wǎng)站,及時清除和恢復(fù)受影響的數(shù)據(jù),同時加強監(jiān)控和日志審計,快速發(fā)現(xiàn)異常情況并進(jìn)行處理。
到了這里,關(guān)于跨站腳本攻擊漏洞(XSS):基礎(chǔ)知識和防御策略的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!