当前位置:网站首页>中职网络安全技能竞赛——广西区赛中间件渗透测试教程文章
中职网络安全技能竞赛——广西区赛中间件渗透测试教程文章
2022-07-05 05:38:00 【旺仔Sec】
中间件渗透测试环境可以私信博主
PHPStudy后门分析
由于PHPStudy遭受了供应链攻击, PHPStudy软件安装包中的php_xmlrpc.dll
模块隐藏有后门. 其中, 影响的版本包括PHPStudy 20161103
和PHPStudy 20180211
. 经过分析, 该后门的核心功能模块有两部分: 第一是通过判断特殊的HTTP头执行远程PHP代码; 第二个是通过判断特殊的HTTP头后连接C&C服务器并执行回传的PHP代码.
实验环境: Windows 7(32位) , PHPStudy 20181103 版本 php-5.2.17/ext 扩展文件夹下的php_xmlrpc.dll.
样本信息
名称 | php_xmlrpc.dll |
---|---|
SHA256 | aea021c5d79adbdc8a755d2f56db4f2e71781abbdcce2a2fa6e04aff3c02be75 |
类型 | 32位DLL |
大小 | 73,728Byte |
定位特征代码位置
使用IDA打开样本php_xmlrpc.dll
, 然后打开字符串窗口, 可以发现@eval()
这个代码执行函数 (查阅资料得知, @是PHP提供的错误信息屏蔽专用符号, eval()
函数把字符串按照PHP代码执行, 中间%s格式符为字符串传参). 如下图所示, 共有两处eval特征代码, 都位于该后门的核心函数中:
根据这两个字符串的位置和IDA的交叉引用功能, 就可以直接定位到后门代码的位置. F5分别生成这部分后门漏洞的伪代码, 进行如下分析.
远程命令执行后门功能分析
通过参考相关资料得知, 如果攻击者构造的HTTP头中含有Accept-Encoding
字段时就会进入对应的攻击流程. 如果HTTP头中同时含有Accept-Encoding: gzip,deflate
以及Accept-Charset
两个字段时,会先解密Accept-Charset
中Base64
后的PHP代码,然后执行该代码,从而造成远程命令执行的危害. 这一部分的伪代码分析如下图所示:
连接C&C执行任意代码功能分析
如果攻击者发起的HTTP请求的头部中带有Accept-Encoding:compress,gzip
时则会进入另外一个后门功能逻辑:其首先会拼接获取到的磁盘序列号和MAC地址,后续会将磁盘序列号和MAC地址上传作为被控机器的唯一标识,之后会拼接一些其它数据以及PHP函数传递给PHP Zend引擎执行, 这一部分的伪代码如下图所示:
下面的spprintf函数是php官方自己封装的函数,实现了字符串拼接功能.
在这个后门功能模块中, spprintf函数拼接了两次字符串, 分别是: spprintf(&v46, 0, a_evalSS, aGzuncompress, v46);
和 spprintf(&v45, 0, aS_valSS, v42, aGzuncompress, v45);
. 如下图所示:
由于变量v45和v46在之后都作为参数被zend_eval_strings
函数调用执行了, 因此, 可以推测出变量v45和v46存储了shellcode. 上述代码段分别对变量v45和v46进行了预处理. 分析得知, v46的shellcode位于地址1000C028
到1000C66C
之间, v45的shellcode位于地址1000C66C
和1000D5C4
之间. (见上图红框)
使用HexEditor查看第一个shellcode的对应位置, 可以看到shellcode前的gzuncompress
标识, 如下图所示:
Zend引擎需要解析的这段PHP代码的核心是gzuncompress
, 查阅资料得知, 该函数通常用于混淆免杀, 其整个语句的构造为$V='';$M='';;@eval(gzuncompress('数据');
. 网上已经有了提取并解压这两段shellcode的脚本, 不重复造轮子. 其代码如下所示:
在 ./phpStudy/php 目录运行下运行上述脚本, 成功获得两段被base64编码过的数据, 如下图所示:
第一段base64数据解码如下:
这段PHP代码功能是向本机发起一个HTTP请求,并带有Accept-Encoding:compress,gzip
请求头,然后该请求就可以自动激活功能模块二,从而连接C&C服务器上传系统信息。自动触发方式结束后就会更新当前触发的时间,下一次就根据这个时间来判断是否进入自动触发方式:
第二段base64数据解码如下:
这段PHP代码中内置有域名表和端口表, 批量遍历后发送请求到C&C地址360se.net, 然后执行由C&C服务器返回的内容.
远程命令执行后门测试
首先, 运行并启动存在问题的PHPStudy版本, 如下图所示:
EXP如下图, 通过构造http请求实现远程代码执行. 其中, echo system("net user")
命令经base64编码后为ZWNobyBzeXN0ZW0oIm5ldCB1c2VyIik7
, 可以显示主机上的用户, 用于回显验证. Accept-Encoding
字段值设为gzip,deflate
, 然后才会判断是否存在Accept-Charset
字段并取得该字段的值. base64解码后执行, 即实现远程命令执行:
在burpsuite中构造上述http请求, 并发送该请求给目标主机, 回显验证了该后门利用实现了.如下图所示:
边栏推荐
- 2017 USP Try-outs C. Coprimes
- 卷积神经网络简介
- Remote upgrade afraid of cutting beard? Explain FOTA safety upgrade in detail
- 【实战技能】如何做好技术培训?
- Scope of inline symbol
- Gbase database helps the development of digital finance in the Bay Area
- 剑指 Offer 58 - II. 左旋转字符串
- Detailed explanation of expression (csp-j 2021 expr) topic
- Developing desktop applications with electron
- Educational codeforces round 109 (rated for Div. 2) C. robot collisions D. armchairs
猜你喜欢
随机推荐
读者写者模型
Drawing dynamic 3D circle with pure C language
Sword finger offer 05 Replace spaces
Personal developed penetration testing tool Satania v1.2 update
Mysql database (I)
Sword finger offer 09 Implementing queues with two stacks
Haut OJ 1221: a tired day
Daily question - Search two-dimensional matrix PS two-dimensional array search
剑指 Offer 53 - I. 在排序数组中查找数字 I
动漫评分数据分析与可视化 与 IT行业招聘数据分析与可视化
After setting up the database and website When you open the app for testing, it shows that the server is being maintained
常见的最优化方法
EOJ 2021.10 E. XOR tree
智慧工地“水电能耗在线监测系统”
Simply sort out the types of sockets
Haut OJ 1245: large factorial of CDs --- high precision factorial
Over fitting and regularization
【Jailhouse 文章】Jailhouse Hypervisor
kubeadm系列-01-preflight究竟有多少check
Yolov5 ajouter un mécanisme d'attention