护网杯2018 easylaravel

本文详细介绍了通过EasyLaravel框架进行渗透测试的过程,包括利用SQL注入获取管理员权限、利用Phar协议实现反序列化删除缓存文件,以及最终获得flag。

easylaravel

robots.txt没啥东西
在这里插入图片描述

注释给了源码地址,下下来审计
在这里插入图片描述

/routes/web.php 查看路由
在这里插入图片描述

包里有composer.json 先composer install安装一下相关的包依赖(需要先安装composer)
安装完后项目根目录会有vendor文件夹 composer.lock文件。(因为网络问题一直没安装完。。。也就没composer.lock文件,后来换了阿里云的源才搞定,菜鸟教程那写着的国内源一直不行,不知道咋回事),安装完后才能得到完整源码,毕竟是用的laravel框架

php artisan route:list 查看一下已经定义的路由
在这里插入图片描述

因为我扫的时候看到一个upload 但自己注册的账户没有 这个功能 所以先去注册登录那看看怎么搞到admin账户,这里用户名是随便的,主要是邮箱地址

app/Http/Middleware/AdminMiddleware.php 找到admin用户邮箱
在这里插入图片描述

但不能用重复邮箱注册,好在有一个重置密码功能
在这里插入图片描述

这里点击后会发送一个token到数据库
访问Illuminate\Foundation\Auth\SendsPasswordResetEmails;

### Laravel 安全与攻击防御最佳实践 Laravel 是一种流行的 PHP 开源框架,以其优雅的语法和强大的功能而闻名。然而,随着应用复杂性的增加以及络威胁的不断演变,安全问题变得尤为重要。以下是针对 Laravel 框架的一些常见安全措施和攻击防御的最佳实践: #### 输入验证与过滤 输入验证是防止恶意数据注入的第一道防线。Laravel 提供了内置的验证机制来处理表单提交的数据。通过定义清晰的验证规则,可以有效减少 SQL 注入和其他类型的攻击风险[^1]。 ```php use Illuminate\Support\Facades\Validator; $validator = Validator::make($request->all(), [ 'name' => 'required|string|max:255', 'email' => 'required|email|unique:users,email' ]); if ($validator->fails()) { return response()->json(['errors' => $validator->errors()], 400); } ``` #### 使用 CSRF Token 防跨站请求伪造 为了防范 CSRF 攻击,Laravel 默认启用了中间件 `VerifyCsrfToken` 来保所有的 POST 请求。开发者只需确保每个 HTML 表单都包含隐藏字段 `_token` 或者使用 Blade 模板引擎中的辅助函数 `@csrf()` 自动生成令牌即可。 ```html <form method="POST" action="/submit"> @csrf <!-- Form fields --> </form> ``` #### 数据库查询安全性 避免直接拼接字符串构建 SQL 查询语句,推荐采用 Eloquent ORM 或 Query Builder 执行数据库操作。这些方法会自动转义参数值从而降低被 SQL Injection 影响的可能性。 ```php // 不建议的做法 $results = DB::select('SELECT * FROM users WHERE id = '.$id); // 推荐做法 $user = User::find($id); // Using Eloquent Model ``` #### 文件上传控制 当允许用户上传文件时,应严格限定可接受的内容类型及其大小限制,并随机重命名保存后的文件名以防路径遍历漏洞利用。 ```php public function store(Request $request){ $this->validate($request,[ 'file'=>'image|mimes:jpeg,png,jpg,gif|max:2048', // Only images under 2MB allowed. ]); if($request->hasFile('file')){ $path=$request->file('file')->storeAs( 'uploads', Str::random(16).'.'.$request->file('file')->getClientOriginalExtension() ); } } ``` #### 密码加密存储 永远不要明文保存密码!Laravel 自带 Hash facade 可用于生成不可逆散列值以便于后续认证过程比较匹配度而不暴露原始口令信息。 ```php $passwordHashed=Hash::make($plainPassword); Auth::attempt(['email'=>$inputEmail,'password'=>$inputPassword]); // Automatically hashes input password and compares it with stored hash value. ``` #### API 认证授权管理 对于 RESTful APIs ,应当实施 OAuth2 协议或者 JWT (JSON Web Tokens) 方式来进行客户端身份确认和服务端资源访问权限划分。 #### 更新依赖版本及时修复已知缺陷 定期检查项目所使用的第三方包是否有最新稳定版发布;若有,则尽快升级至新版本以获得官方维团队修补过的潜在安全隐患改进成果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值