失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 【代码审计】CLTPHP_v5.5.3前台XML外部实体注入漏洞分析

【代码审计】CLTPHP_v5.5.3前台XML外部实体注入漏洞分析

时间:2021-07-19 12:29:45

相关推荐

【代码审计】CLTPHP_v5.5.3前台XML外部实体注入漏洞分析

0x01 环境准备

CLTPHP官网:

网站源码版本:CLTPHP内容管理系统5.5.3版本

程序源码下载:/chichu/cltphp

默认后台地址: http://127.0.0.1/admin/login/index.html

默认账号密码: 后台登录名:admin 密码:admin123

测试网站首页:

0x01代码分析

1、漏洞文件位置:/app/wchat/controller/Wchat.php第100-133行:

在这段代码中,用file_get_contents("php://input") 接收XML数据,然后带入simplexml_load_string函数中,导致程序在实现上存在XML外部实体注入。

接着往下看,如何去利用呢?

xml的解析结果返回给$postObj,进行条件判断,根据MsgType取值进入不同的回复机制中处理,当MsgType=text,进入MsgTypeText函数,跟进这个函数看看:

2、漏洞文件位置:/app/wchat/controller/Wchat.php 第141-172行:

这段函数进行消息回复处理,将获得$contentStr进行判断是否是数组,然后带入函数处理,最后返回结果。我们来看一下event_key_text函数:

3、漏洞文件位置:/extend/clt/WchatOauth.php 第155-171行:

通过sprintf函数返回6个节点,其中ToUserName、FromUserName可控,我们可以通过构造Payload,实现任意文件读取,攻击者可利用该漏洞获取网站敏感信息。

0x02漏洞利用

1、 通过构造Paylod读取win.ini文件内容

Pauload:http://127.0.0.1/wchat/wchat/getMessage.html

<?xmlversion="1.0"encoding="utf-8"?><!DOCTYPExxe[<!ELEMENTnameANY><!ENTITYxxeSYSTEM"file:///C:/windows/win.ini">]><root><MsgType>text</MsgType><ToUserName>&xxe;</ToUserName></root>

0x03修复建议

方案一、使用开发语言提供的禁用外部实体的方法

PHP:libxml_disable_entity_loader(true);

方案二、过滤用户提交的XML数据 关键词:<!DOCTYPE和<!ENTITY,或者,SYSTEM和PUBLIC。

最后

欢迎关注个人微信公众号:Bypass--,每周原创一篇技术干货。

如果觉得《【代码审计】CLTPHP_v5.5.3前台XML外部实体注入漏洞分析》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。