


http://192.168.204.137:8081/admin/login
本次代码审计我们的重点在于关注用户登录认证过程中的业务设计缺陷的挖掘,所以我们这里主要审计登录认证部分的代码,我们直接来到后台对应的登录认证的Controller一层看一下关于后台登录的认证逻辑,从下面可以看到这里首先是获取了用户登录认证的失败次数,随后获取了用户的用户名和密码进行身份认证
blog-master\src\main\java\com\my\blog\website\controller\admin\AuthController.java




<when test="criterion.noValue">
and ${criterion.condition}
</when><when test="criterion.singleValue">
and ${criterion.condition} #{criterion.value}
</when>



select count(*) from t_users where username = #{usernam}





package com.my.blog.website;
import com.my.blog.website.constant.WebConst;
import com.my.blog.website.utils.Tools;
public class CookieSecTest {
public static void main(String[] args) throws Exception{
System.out.println(Tools.enAes("1", WebConst.AES_SALT));
}
}
S_L_ID=EqTraX5StRb4FiQjWzL90g==

本篇文章通过CMS代码审计案例对登录认证过程中不安全的业务逻辑设计和编码进行了漏洞风险介绍和梳理,同时借助这一个案例对Mapper文件中的动态SQL语句的构造以及对应的一些看似未使用预编译缺不存在SQL注入的场景和原因进行了介绍分析,当然在审计中大家也要和具体的场景相互结合来判定是否存在SQL注入安全问题,并不是这一大类不存在SQL注入问题哦,比如:limit入参从用户一侧入参并在后端直接使用拼接的方式进行拼接,那么这样就可以导致SQL注入安全问题
推 荐 阅 读





横向移动之RDP&Desktop Session Hija