主要观点总结
文章介绍了关于越权重置密码、SQL注入漏洞、文件上传漏洞、模板注入以及XML注入等多种漏洞的复现及代码分析。
关键观点总结
关键观点1: 越权重置密码漏洞
通过修改数据包中的user_id值,可以成功修改管理员密码。控制层中的respwd函数没有进行足够的权限校验,导致越权修改任意用户密码。
关键观点2: SQL注入漏洞
通过输入特定的SQL语句,可以成功爆出数据库名。预编译的SQL语句因为整个语句传入,语法结构完全由用户控制,导致预编译不起作用,存在SQL注入风险。
关键观点3: 文件上传漏洞
通过修改数据包中的dirs和file_name参数,可以上传恶意文件。处理用户传入的路径和文件名时,没有进行过滤和验证,导致上传成功并可能被利用。
关键观点4: 模板注入漏洞
网站使用了freemarker作为模板语言,前端存在明显的模板注入特征,可能被攻击者利用进行模板注入攻击。
关键观点5: XML注入漏洞
通过上传含有XXE(外部实体)的jrxml文件,可以造成XXE漏洞,加载外部实体。处理jrxml文件时,没有进行过滤和验证,存在安全风险。
文章预览
越权重置密码: 漏洞 复现: 新增用户test密码:111111,并登录test用户 看见为test用户,点击修改密码,抓包,将user_id修改为1,则成功修改管理员密码 代码分析: 根据数据包找接口system/user 定位到控制层,找到方法respwd进行分析: 该函数先用获取数据包请求参数,并用equals方法进行一致性对比,失败返回,一致则进入下一层。 创建一个 Record 对象,用于封装待更新的用户信息。再次检查输入密码是否为空,使用 SHA-256 哈希算法对旧密码进行加密,并将其转换为十六进制字符串表示。 并用record对象封装user_id值(此处user_id值由用户传入,为进行任何权限校验,直接用作修改对象的标识符)。 将fengzhuanghaoderecord对象传入,并调用 Db.update() 方法更新数据库表 AdminConst.TABLE_OF_SYS_USER 中用户的密码,由此造成越权修改任意用户密码。 SQL注入漏洞: 漏洞
………………………………