phpems代码审计

渗透技巧 2年前 (2022) admin
1,072 0 0


文章首发于:

火线Zone社区(https://zone.huoxian.cn/)


phpems后台登录存在默认用户与密码:peadmin:peadmin。


phpems代码审计


代码执行漏洞


查看到phpems/xxx/xxx/xxxx/xx.cls.php文件中有eval函数,代码如下,可以看到当blocktype为4的时候执行elseif语句中的代码,html_entity_decode是HTML 实体转换为字符。


phpems代码审计


全局搜索stripSlashes函数,在phpems/xxx/ev.cls.php文件中,可以看到该函数的作用是去除转义字符。


phpems代码审计


查看数据库发现block表中存在blocktype字段。


phpems代码审计


在phpems/xxx/xx/xx/block.cls.php中发现sql语句执行block表。


phpems代码审计


在phpems/xxx/xx/xx/blocks.master.php文件中发现调用block.cls.php的getBlockById函数和en.cls.php的get函数和stripSlashes函数,在第4步可以看出getBlockById函数是根据id值进行查询。


phpems代码审计


在phpems/xx/ev.cls.php文件中可以看到过滤函数,在initData函数中使用addSlashes函数进行sql函数过滤,使用htmlspecialchars函数进行xss过滤。get函数是以get传参和stripSlashes函数去掉转义字符。


phpems代码审计


在phpems/xx/xx/xx/blocks.master.php的change函数,修改blocktype的值。


phpems代码审计


漏洞:post传参会先使用htmlspecialchars函数把>和<进行HTML实体编码,在利用html_entity_decode进行HTML实体解码,故造成了代码执行漏洞。


phpems代码审计


xss存储型漏洞


1、当模式为模板模式时存在存储型xss漏洞


漏洞原理:post传参会先使用htmlspecialchars函数把>和<进行HTML实体编码,在利用html_entity_decode进行HTML实体解码,并使用?>和<?php对其进行闭合,造成存储型xss漏洞。


2、当模式为SQL模式时也存在xss漏洞。


在phpemsxxxxxx xx.cls.php文件中可以看到当$block[‘blocktype’] == 3也就是模式为sql模式时执行如下语句。其中$block[‘blockcontent’][‘sql’]的值为0时进入else语句之中,查看到eval函数中执行$tp,而$tp是由$block[‘blockcontent’][‘template’]的值经过HTML实体解码之后得到的。


phpems代码审计


漏洞原理:post传参会先使用htmlspecialchars函数把>和<进行HTML实体编码,在利用html_entity_decode进行HTML实体解码,并使用?>和<?php对其进行闭合,造成存储型xss漏洞。


phpems代码审计


【白帽技术交流群】

进群可以与技术大佬互相交流

进群有机会免费领取节假日礼品

进群可以免费观看技术分享直播

识别二维码回复【交流群】进群

phpems代码审计
phpems代码审计


【火线zone社区周激励】

2022.2.7 ~ 2022.2.13公告

phpems代码审计


【相关精选文章】

phpems代码审计

phpems代码审计


phpems代码审计


火线Zone是[火线安全平台]运营的封闭式实战安全攻防社区,研究讨论实战攻防技术,平台向顶尖的白帽子提供安全测试的云端基础设施,目前火线的高级白帽子数量已经近万人,欢迎具备分享和探索精神的白帽子加入火线Zone社区,共建一个有技术氛围的优质社区!

如需转载火线Zone公众号内的文章请联系火线小助手:hxanquan(微信)


phpems代码审计

 微信号 

huoxian_zone


phpems代码审计

点击阅读原文,加入社区,共建一个有技术氛围的优质社区!

原文始发于微信公众号(火线Zone):phpems代码审计

版权声明:admin 发表于 2022年2月16日 上午11:02。
转载请注明:phpems代码审计 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...