b@by n0t1ce b0ard
code-projects 在线公告板个人资料图片registration.php 无限制上传 (CVE-2024-12233)
https://avd.aliyun.com/detail?id=AVD-2024-12233
漏洞描述
发现code-projects在线通知板(版本至1.0)存在一个关键漏洞。这个问题影响了组件Profile Picture Handler中的某些未知文件处理功能。操纵参数img会导致无限制上传。攻击可能远程发起。该漏洞已被公开披露,可能被利用。
漏洞文件为registration.php
<?php require('connection.php'); extract($_POST); if(isset($save)) { //check user alereay exists or not $sql=mysqli_query($conn,"select * from user where email='$e'"); $r=mysqli_num_rows($sql); if($r==true) { $err= "<font color='red'>This user already exists</font>"; } else { //dob $dob=$yy."-".$mm."-".$dd; //hobbies $hob=implode(",",$hob); //image $imageName=$_FILES['img']['name']; 取上传文件的原始文件名 //encrypt your password $pass=md5($p); 使用 MD5 算法对密码加密 $query="insert into user values('','$n','$e','$pass','$mob','$gen','$hob','$imageName','$dob',now())"; 构造插入语句。第一个空字符串通常对应数据库的自增 ID mysqli_query($conn,$query); 执行 SQL 插入操作,将用户信息存入数据库。 //upload image mkdir("images/$e");***参数$e是用户注册时的电子邮件对上传的图片没有限制。 为该用户创建一个以邮箱命名的文件夹用于存放图片 move_uploaded_file($_FILES['img']['tmp_name'],"images/$e/".$_FILES['img']['name']); 将上传的临时文件移动到刚才创建的文件夹中。 $err="<font color='blue'>Registration successfull !!</font>"; } } ?> <h2><b>REGISTRATION FORM</b></h2> <form method="post" enctype="multipart/form-data"> <table class="table table-bordered"> <Tr> <Td colspan="2"><?php echo @$err;?></Td> </Tr> <tr> <td>Your Name</td> <Td><input type="text" class="form-control" name="n" required/></td> </tr> <tr> <td>Your Email </td> <Td><input type="email" class="form-control" name="e" required/></td> </tr> <tr> <td>Your Password </td> <Td><input type="password" class="form-control" name="p" required/></td> </tr> <tr> <td>Your Mobile No. </td> <Td><input class="form-control" type="number" name="mob" required/></td> </tr> <tr> <td>Select Your Gender</td> <Td> Male<input type="radio" name="gen" value="m" required/> Female<input type="radio" name="gen" value="f"/> </td> </tr> <tr> <td>Choose Your Hobbies</td> <Td> Reading<input value="reading" type="checkbox" name="hob[]"/> Singing<input value="singin" type="checkbox" name="hob[]"/> Playing<input value="playing" type="checkbox" name="hob[]"/> </td> </tr> <tr> <td>Upload Your Image </td> <Td><input class="form-control" type="file" name="img" required/></td> </tr> <tr> <td>Date of Birth</td> <Td> <select name="yy" required> <option value="">Year</option> <?php for($i=1950;$i<=2016;$i++) { echo "<option>".$i."</option>"; } ?> </select> <select name="mm" required> <option value="">Month</option> <?php for($i=1;$i<=12;$i++) { echo "<option>".$i."</option>"; } ?> </select> <select name="dd" required> <option value="">Date</option> <?php for($i=1;$i<=31;$i++) { echo "<option>".$i."</option>"; } ?> </select> </td> </tr> <tr> <Td colspan="2" align="center"> <input type="submit" class="btn btn-success" value="Save" name="save"/> <input type="reset" class="btn btn-success" value="Reset"/> </td> </tr> </table> </form> </body> </html>攻击者在注册时可通过上传个人资料图片上传恶意文件。上传的个人资料图片没有任何限制,并将存储在 /images/{用户电子邮件}/{上传文件名} 中。黑客可以上传诸如.php 文件之类的文件,并访问 /images/{用户电子邮件}/恶意_php 文件.php?1={此处为任何命令} 来执行任何命令。
有一个注册一个登录的交互
在这里看到文件上传,漏洞点
注册成功
访问images/邮箱/cmd.php
没有任何的waf
CVE-2024-12233