当前位置:网站首页>中职网络安全技能竞赛——广西区赛中间件渗透测试教程文章
中职网络安全技能竞赛——广西区赛中间件渗透测试教程文章
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请求, 并发送该请求给目标主机, 回显验证了该后门利用实现了.如下图所示:
边栏推荐
- 【Jailhouse 文章】Look Mum, no VM Exits
- YOLOv5-Shufflenetv2
- Simple knapsack, queue and stack with deque
- Palindrome (csp-s-2021-palin) solution
- Common optimization methods
- Solution to the palindrome string (Luogu p5041 haoi2009)
- EOJ 2021.10 E. XOR tree
- Configuration and startup of kubedm series-02-kubelet
- YOLOv5-Shufflenetv2
- Csp-j-2020-excellent split multiple solutions
猜你喜欢

Web APIs DOM node

Light a light with stm32

从Dijkstra的图灵奖演讲论科技创业者特点

网络工程师考核的一些常见的问题:WLAN、BGP、交换机

Acwing 4300. Two operations

Sword finger offer 35 Replication of complex linked list

Sword finger offer 06 Print linked list from beginning to end

【实战技能】如何做好技术培训?

Scope of inline symbol

lxml.etree.XMLSyntaxError: Opening and ending tag mismatch: meta line 6 and head, line 8, column 8
随机推荐
sync. Interpretation of mutex source code
Yolov5 adds attention mechanism
Warning using room database: schema export directory is not provided to the annotation processor so we cannot export
R语言【数据集的导入导出】
剑指 Offer 06.从头到尾打印链表
CF1637E Best Pair
Hang wait lock vs spin lock (where both are used)
Pointnet++ learning
从Dijkstra的图灵奖演讲论科技创业者特点
26、 File system API (device sharing between applications; directory and file API)
Add level control and logger level control of Solon logging plug-in
kubeadm系列-01-preflight究竟有多少check
Sword finger offer 06 Print linked list from beginning to end
CF1634 F. Fibonacci Additions
Daily question - Search two-dimensional matrix PS two-dimensional array search
Codeforces Round #715 (Div. 2) D. Binary Literature
Palindrome (csp-s-2021-palin) solution
AtCoder Grand Contest 013 E - Placing Squares
ssh免密登录设置及使用脚本进行ssh登录并执行指令
Educational Codeforces Round 107 (Rated for Div. 2) E. Colorings and Dominoes