正在加载…
请使用更现代的浏览器并启用 JavaScript 以获得最佳浏览体验。
加载论坛时出错,请强制刷新页面重试。
phpems代码审计
47650
phpems后台登录存在默认用户与密码:peadmin:peadmin。
二、代码执行漏洞。
查看到phpems/app/content/cls/api.cls.php文件中有eval函数,代码如下,可以看到当blocktype为4的时候执行elseif语句中的代码,html_entity_decode是HTML 实体转换为字符。
2.全局搜索stripSlashes函数,在phpems/lib/ev.cls.php文件中,可以看到该函数的作用是去除转义字符。
3.查看数据库发现block表中存在blocktype字段。
4.在phpems/app/content/cls/block.cls.php中发现sql语句执行block表,
5.在phpems/app/content/controller/blocks.master.php文件中发现调用block.cls.php的getBlockById函数和en.cls.php的get函数和stripSlashes函数,在第4步可以看出getBlockById函数是根据id值进行查询。
6.在phpems/lib/ev.cls.php文件中可以看到过滤函数,在initData函数中使用addSlashes函数进行sql函数过滤,使用htmlspecialchars函数进行xss过滤。get函数是以get传参和stripSlashes函数去掉转移字符。
7.在phpems/app/content/controller/blocks.master.php的change函数,修改blocktype的值。
8.切换注册协议为模板模式。
9.在内容处,写上php执行语句。
10访问注册页面可以看到当前用户为admin用户,漏洞:post传参会先使用htmlspecialchars函数把>和<进行HTML实体编码,在利用html_entity_decode进行HTML实体解码,故造成了代码执行漏洞。
三 xss存储型漏洞
(1)当模式为模板模式时存在存储型xss漏洞
跟代码执行漏洞的地方一样,切换注册协议为模板模式。
在内容处填写xss代码并提交。
访问注册页面发现存在存储型xss漏洞。漏洞原理:post传参会先使用htmlspecialchars函数把>和<进行HTML实体编码,在利用html_entity_decode进行HTML实体解码,并使用?>和<?php对其进行闭合,造成存储型xss漏洞。
(2)当模式为SQL模式时也存在xss漏洞。
1.在phpems\app\content\cls\ api.cls.php文件中可以看到当$block['blocktype'] == 3也就是模式为sql模式时执行如下语句。其中$block['blockcontent']['sql']的值为0时进入else语句之中,查看到eval函数中执行$tp,而$tp是由$block['blockcontent']['template']的值经过HTML实体解码之后得到的。
2.设置模式为SQL模式。
3.点击编译,进入编辑页面,设置手写sql为0,模板处为</p></div><script>alert(/xss/)</script>,点击提交。
4.访问注册页面,发现存储型xss执行成功。漏洞原理:post传参会先使用htmlspecialchars函数把>和<进行HTML实体编码,在利用html_entity_decode进行HTML实体解码,并使用?>和<?php对其进行闭合,造成存储型xss漏洞。