审计过程

找到相关文件所在位置再找对应的 Class image-20240318221721958

  1. 获取 apiocode 参数做为zip文件名
  2. 获取 post 数据
  3. 应用程序的根目录下面创建 Assembly 目录。context.Request.PhysicalApplicationPath 将返回应用程序的根目录在服务器文件系统中的物理路径。
  4. 在 Assembly 目录下创建一个 apiocode参数.zip 文件,存在相同名字的zip就会先删除文件和目录再创建 zip
  5. 进入 Unzip.Decode

image-20240318221738610

GetPostData 方法

		private byte[] GetPostData()
		{
			HttpRequest request = HttpContext.Current.Request;
			byte[] array = new byte[request.InputStream.Length];
			request.InputStream.Read(array, 0, array.Length);
			return array;
		}

Unzip

  1. 读取传入的 zip 文件
  2. 获取目录的路径:path.Substring(0, path.LastIndexOf(".")) 的作用是从文件路径中提取文件名,去掉文件的扩展名。Assembly/1.zip => Assembly/1
  3. 解压文件:zipEntry.Name 是用于获取一个压缩文件中条目(entry)的名称。Assembly/1/xxx.aspx
  4. 最终访问到的文件路径:http://127.0.0./myunke/Assembly/1/xxx.aspx

image-20240318221750482

网上的Exp 都是跳三层目录,有可能是上传目录做了禁止解析的操作。