该项目演示了在 id 参数中 SQL 注入漏洞的复现,并随后提供了缓解和解决此安全问题的见解。
https://www.cvedetails.com/cve/CVE-2017-17917/?q=CVE-2017-17917
技术栈:
Ruby: 3.2.2
Rails: 7.0.8
Docker 24.0.5
Docker-Compose 1.29.2
PostgreSQL

我们选择此 CVE 是为了强调该问题在最新版本的 Rails 中仍持续出现,重申了开发最佳实践的相关性。

要求:
docker
docker-compose
构建项目的步骤:
sudo docker-compose build

sudo docker-compose run web bundle install

sudo docker-compose run web rails db:create db:migrate db:seed

sudo docker-compose up



SQL 注入参数 1 OR id > 1

通过此 SQL 注入,攻击者可以检索正常情况下无权查看的用户数据。
执行难度等级:简单
问题出在控制器方法中,具体是在调用 where 子句时,如下所示:
@clients = Client.where("id = #{params[:id_search]}")
代码链接
通过以下方式解决问题:
@clients = Client.where(id: "#{params[:id_search]}")
代码链接
sudo docker-compose run web rspec
