刚开始做审计,phpyun的代码之前没有看过,phith0n曾经发过一个打包的xss,说是客户端过滤没有进行服务端过滤,现在这个版本应该是服务端过滤吧。
phpyun的global.php里面引用了两个安全的php文件,分别是data/db.safety.php和include/webscan360/360safe/360webscan.php。
先来看看data/db.safety.php:
safesql函数先过滤一下,然后common_htmlspecialchars进行html编码。
看看是不是有办法绕过,正则<.*data=data:text\\/html.*>,就绕过他吧,加个data="...",就绕过了。
好,那我们用<object data="data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg=="></object>就绕过了safesql,下一步要搞定html编码了。
从上面可以看出,我们全局的gpc数据都被这样处理了,那么直接插入数据库,肯定就是编码过的。
关键来了,明确一下思路,搜索一下html_entity_decode函数,html解码之后insert或者update进数据库的基本上都能xss了。
这里面后台的,就没有跟进去。
除去后台的和插件的有,我按操作数据库的功能计算次数了。
/friend/model/index.class.php 1处
/ask/model/index.class.php 3处
/member/model/com.class.php 7行
/member/model/index.class.php 2行
/model/ajax.class.php 1行
先看/friend/model/index.class.php ,发表朋友圈状态时1处:
/ask/model/index.class.php 中 追加问题和回答问题时各1处:
提问时1处:
/member/model/com.class.php中 企业添加职位和更新职位各1处:
/member/model/com.class.php 修改企业资料1处:
添加新闻和更改新闻各1处:
添加产品和更改产品各1处:
/member/model/index.class.php中 个人添加黏贴简历和更改黏贴简历各1处
/model/ajax.class.php中 使用ajax添加朋友圈1处: