问答
发起
提问
文章
攻防
活动
Toggle navigation
首页
(current)
问答
商城
实战攻防技术
漏洞分析与复现
NEW
活动
摸鱼办
搜索
登录
注册
浅析XXE注入导致RCE
漏洞分析
简单复现一下XXE注入导致RCE 并分析一下其中逻辑
XXE(XML 外部实体注入)漏洞,可以使攻击者能够干扰 Web 应用程序中 XML 数据的处理。利用此漏洞后,XXE 可允许攻击者访问敏感数据、执行远程代码或干扰 Web 应用程序中 XML 数据的处理。 先用php进行简单的案例示范  可以看到访问成功的输出1.txt文件  利用expect协议可以成功打rce,但因为windows不好安装扩展所以改用centos做测试 以下是环境配置教程 安装EPEL仓库 sudo yum install epel-release  使用以下命令安装php开发工具和expect sudo yum install php-devel expect  sudo yum install tcl-devel sudo yum install expect-devel   然后安装pecl sudo yum install php-pear  最后使用pecl进行安装expect  出现下面的消息说明安装成功  然后开始进行配置 Vim /etc/php.ini 加一行 Extension=expect.so  然后进行RCE复现 <?xml version="1.0"?> \[ \]> &xxe;  那么为何能执行命令呢,我们下载下来源码进行分析 <https://pecl.php.net/get/expect-0.4.0.tgz> 在expect\_fopen\_wrapper.c文件中 35行开始,首先检查命令字符串是否以"expect://"开头,如果是,则移除这个前缀,然后使用exp\_popen函数尝试启动命令指定的外部进程  而在expect库中 <https://core.tcl-lang.org/expect/index> exp\_clib.c文件中定义了exp\_popen  跟进exp\_spawnl,初始化后使用malloc为参数组”argv”分配内存,然后调用exp\_spawnv  继续跟进 file是要执行的程序的路径,argv是传递给该程序的参数列表,以NULL终止。然后初始化伪终端(pty)  往下走,发现在1909中使用fork创建了子进程  那么最终执行点在哪呢?在2217中使用execvp执行命令,其中file与argv都是我们传的参数,至此流程结束
发表于 2024-04-26 10:03:48
阅读 ( 17475 )
分类:
漏洞分析
0 推荐
收藏
0 条评论
请先
登录
后评论
ZAC安全
5 篇文章
×
发送私信
请先
登录
后发送私信
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!