Xss审计和复现

最近在i春秋上看到王松师傅的xss教学,感觉非常棒,光看不练假把式,自己复现一遍才是真的学到了~这次审计的是easyadmin这个cms的xss漏洞。

王松师傅xss课程地址

存储型xss

我们审计到forum.php时,发现xss只过滤了title|description|content分别对应页面中的标题,描述和文章内容。但是在文章中还可以添加标签,我们来试一下。

enter image description here

新注册一个账号,然后发表文章,在添加标签处加入xss代码发布文章。

enter image description here

可以看到,已经成功的弹窗。

enter image description here

Tips:
如果是黑盒测试的话,怎么找标签对应的php代码?我们可以打开chrome的开发者模式,在network下面有preserve log选项打勾,然后添加标签后提交,在fadd.html页面发现了我们post上去的标签。这样我们就知道了标签处的php代码为keywords。

enter image description here
enter image description here

如何修复呢,同之前一样,把keywords的内容用strip_tags函数过滤即可。

$data[‘keywords’]= strip_tags( $data[‘keywords’]);

反射型xss

在搜索框处,我们输入hhh,然后看看这个hhh在title标签里有。那么我们完全可以把title标签闭合,构造一个script标签来获取cookie。chrome执行这个语句时,虽然我关闭了xss保护,但是还会阻止运行xss代码,很奇怪。。。所以用firefox做的测试~

<script>alert(document.cookie)</script>

enter image description here

enter image description here

怎么修复呢?来到index_search.php,看到了它的搜索语句是这样写的。直接输出了ks,没有做任何过滤。那么我们这样写就可以过滤掉了~

1
<title><?php echo strip_tags((input('ks'));?>|{$site_config['site_title']}|{$site_config['seo_title']}</title>

enter image description here

第二处反射xss在这里,同样,我们闭合掉value的”。这样的话同样存在反射xss

enter image description here

1
ks=11"><script>alert("carlstar")</script>//

enter image description here

修复的话同样,原始代码是这样的。可以看到是同样的问题,那么我们还是老办法过滤。

1
2
3
4
5
<form action="{:url('index/search')}" class="fly-search">  
<button style="position: absolute;right: 0;top: 0px;border: 0px solid #fff;" type="submit"><i class="iconfont icon-sousuo"></i></button>
<input autocomplete="off" placeholder="搜索" type="text" name="ks" value="<?php echo input('ks');?>" required lay-verify="required" class="layui-input">
</form>
<a href="{:url('forum/add')}" class="layui-btn jie-add">发布帖子</a>
1
value="<?php echo strip_tags(input('ks'));?>"
文章作者: Carl Star
文章链接: http://carlstar.club/2018/06/11/Xss审计和复现/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Hexo