浅析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
阅读 ( 17645 )
分类:
漏洞分析
0 推荐
收藏
0 条评论
ZAC安全
5 篇文章
×
温馨提示
您当前没有「奇安信攻防社区」的账号,注册后可获取更多的使用权限。
×
温馨提示
您当前没有「奇安信攻防社区」的账号,注册后可获取更多的使用权限。
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!