XSS跨站
1、xss跨站原理
上传一个js写的脚本,浏览器会执行这个js脚本。
2、xss跨站类型
反射型:和服务器交互,不会存储到数据库中,可以自己写一个js的弹窗自娱自乐,危害不大。
存储型:和服务器交互,存储到数据库中,比如写一个js脚本到留言板中,其他人访问这个留言板时都是执行这个js脚本,危害比反射性xss要大。
DOM:不和服务器交互,给前端代码执行。
3、xss攻击手法
xss平台(可以使用在线平台,也可以在自己服务器上搭建),工具等
4、xss常见场景
留言板、评论区、订单系统、反馈条件等。xss漏洞触发是很苛刻的(要将js脚本成功上传,需要绕过代码过滤和防火墙;需要其他人来触发,万一没触发也就没啥用),需要注意如何应用。
5、httponly
php中有httponly属性,禁止使用js获取用户的cookie,可以在php.ini中全局设置,也可以在php代码中设置。httponly只是禁止了js获取cookie,并不是禁止了xss漏洞。
绕过httponly:
浏览器未保存帐号密码:需要xss产生登录地址,利用表单劫持
浏览器保存帐号密码:产生在后台的xss,存储型xss如留言等
6、检测来源
同源策略,可以检测js脚本的来源,可以防止跨站。
7、常规WAF绕过思路
标签语法替换
特殊符号干扰
提交方式更改
垃圾数据溢出
加密解密算法
结合其他漏洞绕过
------------------------------------------------------------------------------------------------------------------------------------------
蓝莲花抓到有xss漏洞网站的cookie
抓取思路:我们使用消费者身份提交一个payload(用js写的含有能获取cookie脚本路径的脚本)的订单。在使用管理者身份查看订单时就会触发我们的payload。payload会根据自身路径请求到我们搭建的蓝莲花平台,然后拿到能实现获取管理员cookie的js脚本并执行。拿到cookie后,获取的cookie会根据js脚本中的网站地址发送到蓝莲花中的指定文件中,那个php文件会将抓取的cookie信息处理并显示到接受面板中。
bluelotus下载地址:https://github.com/trysec/bluelotus_xssreceiver。下载好后解压放到小皮面板的www目录下。浏览器直接IP地址加文件目录名就可以进入安装界面,直接点安装,配置参数就不用改了使用默认的,要记得登录密码bluelotus。登录进去之后,点右边的我的js。第一步点添加;第二步输入js名和描述 ;第三步选择模板因为这里实验是为了拿cookie选择default.js,然后点插入模板;第四步修改下面里面的网站地址,这个网站地址就是ip(注:如果你的bluelotus和测试环境是同一台机子,那么这里可以填127.0.0.1,因为是同一台机子能将获取的cookie传到接受面板上。如果在服务器的公网上要填成公网ip)+网站目录+网站目录下的index.php(例:10.0.0.1/BlueLotus_XSSReceiver-master/index.php,这里的文件目录一定要按照自己的来,不然后面接受面板没法拿到cookie);第五步点生成payload。将里面的js代码沾到有xss漏洞的地方就能测试了。
下一个有xss漏洞的网站,这里选择jfdd,下载地址:https://down.chinaz.com/soft/30902.htm。这里也是解压后放到小皮面板的www下,修改里面的配置文件config.php,改一下数据库的账号和密码,然后访问就行了(需要注意的是这个php项目是很老的东西了,高版本的php运行起来会报错,这里在小皮面板里将php版本改低,我这里改成php5.3就可以正常运行了)。
浏览器中打开jfdd下面install下面的install.php,进行安装,记得把install.lock文件删掉。然后往后一步步安装就行了。
浏览器中打开jfdd里面的index.php,这里的具体要求里有xss漏洞,将上面蓝莲花生成的payload填进去,其他参数在要求下随便填,然后提交订单。
浏览器中打开jfdd下的admin下的login.php,填写刚安装时候设置的管理员账号密码登录。登录进去查看订单。点订单查询的时候这个网站的cookie就已经传到我们搭建的蓝莲花上了。
打开xss接受面板就可以看到拿到的信息了。
下个postman,下载官网:https://www.postman.com/,选择合适的版本下载。安装了就能用,在GET栏里输入刚才那个管理后台地址,在下面加个Cookie,将控制面板抓到的cookie值写到后面,send一下就可以成功进入了刚才的管理后台。
------------------------------------------------------------------------------------------------------------------------------------------
beef使用
安装的kali里面没有beef,需要安装一下。打开kali虚拟机,使用xshell用root账号登录。用apt-get update命令更新一下本地安装目录。使用apt-get install beef-xss命令安装beef。然后输入beef-xss命令启动。账号密码默认都为beef,首次启动需要更改一下密码。
将下面的webui地址输入到浏览器地址栏就能访问
将上面的那个payload插入到有xss漏洞的地方,操作如上面的那个实验,通过浏览器网络工具可以看出向beef发出了很多数据包。
然后回到浏览器登录的beef面板,可以看到已经成功利用xss漏洞。beef的功能非常强大,能执行很多操作,下面不再演示。
------------------------------------------------------------------------------------------------------------------------------------------
xsslabs靶场部分过关
靶场下载地址:https://github.com/do0dl3/xss-labs,下载好后解压放到小皮面板的www目录下就可以了。这个靶场是反射性xss,可以帮助我们更好理解xss漏洞和绕过xss过滤。
第一关
这关只要在text后面随便加个js就能上传过关。
第二关
这关查看源码有个htmlspecialchars函数过滤上传的参数,会将js代码的一些地方转换为html实体,导致js无法成功执行。右键查看源码确实将<>转义,不过下面还有一个input里面有输入js代码,我们考虑将input中的value闭合执行value中的js代码。
第三关
这关查看源码两个能输出js代码的地方都被htmlspecialchars函数过滤。这里就可以换种js写法来绕过,我们可以用' onclick='alert(1)来上传我们的js代码。上传好记得点一下搜索框来触发。
第四关
这关查看源码有个htmlspecialchars函数过滤,还会将<>替换为空。我们根据第三关来绕过,将单引号换为双引号," onclick="alert(1)。还有其他过法,这里只是一次过滤我们可以多写一个<>,这样就不会
第五关
这关查看源码会将输入参数转化为小写,还将script和onclick这些关键字替换成其他的过滤掉。这关可以建立一个超链接来过关,"><a href="javascript:alert(1)。右键查看一下页面元素,找到这个超链接点一下。
第六关
这一关的过滤规则更多了,但是没有过滤大小写," Onclick="alert(1)。
第七关
这关过滤会将输入js全转化为小写还有其他过滤规则,但这只是一次过滤,我们可以凭借双写来绕过,"><a hHrefref="javasScriptcript:alert(1)。
第八关
使用编码来绕过。使用burpsuite中编码功能将javascript:alert(1)加码,使用html加码。
第九关
这关的过滤条件加了语句中必须要有http://,我们在第八关的编码后面加上再注释掉就行了。
javascript:alert(1)//http://
第十关
这关的提交表单是隐藏属性,还有一个t_sort可以提交js,t_sort=" onclick="alert(1)"提交完后,在页面中将hidden属性改为text,点一下显示框。
第十一关
这关会检测输入数据的来源,使用burpsuite抓一下数据包加个referer属性和对应的数据。
第十二关
这关会检测http头中的代理信息并接受,只需要将js代码写到http头中代理就行了。
其他关略
------------------------------------------------------------------------------------------------------------------------------------------