簡單易懂的XSS(跨站指令碼攻擊)
跨站指令碼(簡稱為XSS或跨站指令碼或跨站指令碼攻擊)是針對Web應用程式的安全漏洞攻擊,允許使用者插入惡意的指令碼,從而當使用者瀏覽網頁時,插入的指令碼就會執行。從而達到攻擊的目的。
1.反射型XSS
反射型XSS又叫非永續性XSS,反射型XSS注入的惡意程式碼不會儲存在伺服器端,需要欺騙使用者去點選惡意連結才能攻擊成功。一般通過XSS來竊取使用者的cookie。
反射型XSS攻擊流程:
2.儲存型XSS
儲存型XSS又叫持久型XSS,攻擊指令碼會永久儲存在目標伺服器中。例如在個人資訊或者留言板之類的地方插入惡意指令碼,使用者訪問這些帶有惡意指令碼的頁面時會觸發惡意指令碼中的程式碼。
儲存型XSS攻擊流程:
3.DOM型XSS
DOM型XSS也屬於反射型XSS的一種,是通過修改頁面的DOM節點形成的XSS。
DOM節點:
能觸發DOM型XSS的屬性
document.referer
window.name
location
innerHTML
document.write
eval
小結
在三種型別的XSS漏洞中,儲存型的XSS危害最大。因為他儲存在伺服器端,所以不需要我們和被攻擊者有任何接觸,只要被攻擊者訪問了該頁面就會遭受攻擊。而反射型和DOM型的XSS則需要我們去誘使使用者點選我們植入了惡意指令碼的URL,比如利用社會工程學或者利用在其他網頁掛馬的方式。
反射型XSS
頁面原始碼:
<div id="xssr_main">
<p class="xssr_title">Which NBA player do you like?</p>
<form method="get">
<input class="xssr_in" type="text" maxlength="20" name="message" />
<input class="xssr_submit" type="submit" name="submit" value="submit" />
</form>
<?php echo $html;?>
</div>
</div><!-- /.page-content -->
</div>
</div><!-- /.main-content -->
<?php
include_once $PIKA_ROOT_DIR.'footer.php';
?>
這裡有一個使用者提交的頁面,使用者可以在此提交資料,資料提交之後會交給後臺處理。但是站點在前端對輸入的長度進行了限制,我們須在控制檯上修改輸入的長度。
之後,我們可以在輸入框中提交資料: ,看看有什麼反應。
頁面直接彈出了hello的頁面,可以看到我們插入的語句已經被頁面給執行了。
儲存型XSS
頁面原始碼:
<div class="main-content">
<div class="main-content-inner">
<div class="breadcrumbs ace-save-state" id="breadcrumbs">
<ul class="breadcrumb">
<li>
<i class="ace-icon fa fa-home home-icon"></i>
<a href="xss.php">xss</a>
</li>
<li class="active">儲存型xss</li>
</ul><!-- /.breadcrumb -->
<a href="#" style="float:right" data-container="body" data-toggle="popover" data-placement="bottom" title="tips(再點一下關閉)"
data-content="無用提示:這個留言板的框框是可以拉長和拉寬的,還行不,大兄弟!">
點一下提示~
</a>
</div>
<div class="page-content">
<div id="xsss_main">
<p class="xsss_title">我是一個留言板:</p>
<form method="post">
<textarea class="xsss_in" name="message"></textarea><br />
<input class="xsss_submit" type="submit" name="submit" value="submit" />
</form>
<div id="show_message">
<br />
<br />
<p class="line">留言列表:</p>
<?php echo $html;
$query="select * from message";
$result=execute($link, $query);
while($data=mysqli_fetch_assoc($result)){
echo "<p class='con'>{$data['content']}</p><a href='xss_stored.php?id={$data['id']}'>刪除</a>";
}
echo $html;
?>
</div>
</div>
</div><!-- /.page-content -->
</div>
</div><!-- /.main-content -->
<?php
include_once $PIKA_ROOT_DIR.'footer.php';
?>
這裡有一個留言板提交的頁面,資料提交給後端之後,後端會將資料儲存在資料庫中。然後當其他使用者訪問這個頁面的留言時,後端調出該資料,顯示給使用者,XSS程式碼就被執行了。
我們在留言框中提交資料: 。
再重新整理下檢視反應。
這時惡意程式碼就插入到資料庫中了。
DOM型XSS
<div class="main-content">
<div class="main-content-inner">
<div class="breadcrumbs ace-save-state" id="breadcrumbs">
<ul class="breadcrumb">
<li>
<i class="ace-icon fa fa-home home-icon"></i>
<a href="xss.php">xss</a>
</li>
<li class="active">DOM型xss</li>
</ul><!-- /.breadcrumb -->
<a href="#" style="float:right" data-container="body" data-toggle="popover" data-placement="bottom" title="tips(再點一下關閉)"
data-content="先到這裡把什麼是dom搞明白了在說http://www.w3school.com.cn/htmldom/">
點一下提示~
</a>
</div>
<div class="page-content">
<div id="xssd_main">
<script>
function domxss(){
var str = document.getElementById("text").value;
document.getElementById("dom").innerHTML = "<a href='"+str+"'>what do you see?</a>";
}
//試試:'><img src="#" onmouseover="alert('xss')">
//試試:' οnclick="alert('xss')">,閉合掉就行
</script>
<!--<a href="" onclick=('xss')>-->
<input id="text" name="text" type="text" value="" />
<input id="button" type="button" value="click me!" onclick="domxss()" />
<div id="dom"></div>
</div>
</div><!-- /.page-content -->
</div>
</div><!-- /.main-content -->
<?php
include_once $PIKA_ROOT_DIR.'footer.php';
?>
從what do you see?中,我們需要對程式碼進行閉合操作。如,’>。
點選click me!。
發現彈出hello
這裡發現,我們插入的語句已經被頁面給執行了。
這個就是DOM型XSS漏洞
相關文章
- XSS跨站指令碼攻擊介紹指令碼
- Web安全之跨站指令碼攻擊(XSS)Web指令碼
- Spring中防止跨站指令碼 (XSS)攻擊Spring指令碼
- 聊兩句XSS(跨站指令碼攻擊)指令碼
- [Asp.Net Core] 網站中的XSS跨站指令碼攻擊和防範ASP.NET網站指令碼
- 在Linux中,如何檢測和防止SQL隱碼攻擊和跨站指令碼(XSS)攻擊?LinuxSQL指令碼
- 寬位元組XSS跨站攻擊
- 10分鐘走進安全/滲透測試:用最簡單的話聊一聊(XSS)跨站指令碼攻擊指令碼
- 總結 XSS 與 CSRF 兩種跨站攻擊
- XSS - 跨站指令碼之portswigger labs練習指令碼
- 【第七章】XSS 跨站指令碼漏洞指令碼
- 如何進行滲透測試XSS跨站攻擊檢測
- 網站漏洞修補之ECshop4.0跨站指令碼攻擊修復網站指令碼
- asp.net 站點如何有效簡潔的防止XSS攻擊ASP.NET
- katoto站點被注入指令碼攻擊指令碼
- XSS與SQL隱碼攻擊SQL
- 跨站指令碼漏洞指令碼
- 如何防止XSS攻擊
- 什麼是XSS攻擊?XSS攻擊有哪幾種型別?型別
- 新型TLS攻擊可對安全站點發起跨站指令碼攻擊,至少影響140萬臺web伺服器TLS指令碼Web伺服器
- 網站安全公司對於網站XSS攻擊處理方案網站
- 詳解Xss 及SpringBoot 防範Xss攻擊(附全部程式碼)Spring Boot
- 前端攻擊 XSS 深入解析前端
- XSS攻擊有什麼特點?XSS攻擊分為幾個型別?型別
- React 防注入攻擊 XSS攻擊 (放心大膽的用吧)React
- XSS攻擊和CSRF攻擊有什麼區別?
- 什麼是XSS攻擊?其攻擊原理有哪些?
- 跨域及相關攻擊&防禦總結(JSONP、CORS、CSRF、XSS)跨域JSONCORS
- 常見Flash XSS攻擊方式
- 一次簡單的SQL隱碼攻擊繞WAFSQL
- 網站安全漏洞之SESSION防跨站攻擊獲取網站Session
- Web 安全漏洞之 XSS 攻擊Web
- 常見網路攻擊:XSS 篇
- 【web安全】深入淺出XSS攻擊Web
- 簡單易懂的PromisePromise
- jQuery 跨站指令碼漏洞影響大量網站jQuery指令碼網站
- 前端面試查漏補缺--(七) XSS攻擊與CSRF攻擊前端面試
- JeecgBoot抵禦XSS攻擊實現方案boot