从0开始挖洞:XSS跨站脚本攻击
2022/9/7 23:26:51
本文主要是介绍从0开始挖洞:XSS跨站脚本攻击,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、XSS 简介
XSS(Cross Site Scripting 跨站脚本攻击),指恶意攻击者通过向网站插入恶意payload或恶意脚本,从而盗取cookie、session信息以利用用户身份进行违规操作、盗取用户资料等等。
常见XSS漏洞分类
反射型XSS
存储型XSS
DOM XSS
二、XSS漏洞成因
1、反射型XSS
网站对于用户提交的数据没有进行过滤或转义操作(或者过滤、转义不足),导致攻击者嵌入的恶意代码被提交给服务端,服务端解析后,在相应内容中返回输入的XSS代码,最终由浏览器解释执行。
原型如下:
<?php echo 'your input:' . $_GET['input']; ?>
原理解析
若input为<script>alert(/XSS/)</script>
且input值未经任何过滤便直接输出,则服务端解析后,echo语句会将客户端输入的代码完整地输出到HTTP响应中,浏览器解析并执行,如下图所示
发生弹窗,说明payload被执行。
同理,也可以直接如下图所示构造url,当用户点击该url链接,攻击就发生了
http://localhost/dvwa/vulnerabilities/xss_r/?name=<script>alert(/XSS/)</script>
若将payload替换成恶意脚本,则在用户点击时,发生如上过程,浏览器解析并执行,达到攻击目的。
2、存储型XSS
反射型XSS每次皆需要用户提交代码(也即“点击”)才能进行攻击。而存储型XSS提交的XSS代码会存储在服务器端,下次请求该网页时无需再次提交XSS代码。常见的应用场景有留言板、在线聊天室、邮件服务等,当攻击者提交包含XSS代码的留言后,服务端会将其存储在数据库中,当其他用户访问网页查看留言时,服务端将从数据库中查询已有留言,并将其内容输出在HTTP响应中,由浏览器对包含恶意代码的响应解析并执行。
原型如下:
<?php if( isset( $_POST[ 'btnSign' ] ) ) { // Get input $message = trim( $_POST[ 'mtxMessage' ] ); $name = trim( $_POST[ 'txtName' ] ); // Sanitize message input $message = stripslashes( $message ); $message = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $message ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : "")); // Sanitize name input $name = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $name ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : "")); // Update database $query = "INSERT INTO guestbook ( comment, name ) VALUES ( '$message', '$name' );"; $result = mysqli_query($GLOBALS["___mysqli_ston"], $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' ); //mysql_close(); } ?>
原理解析
攻击者提交留言<script>alert(/XSS/)</script>
后,XSS代码被保存在 数据库中,如下图所示。
并且立即执行了一次查询,XSS代码直接被触发。
当其他用户访问网页时,服务端都将从数据库中查询到该XSS代码,触发执行,从而被盗取cookie(sessionid)等信息。
3、DOM XSS
这篇关于从0开始挖洞:XSS跨站脚本攻击的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?
- 2024-05-09企业src漏洞挖掘-有意思的命令执行