首页 > 编程语言 >记一次PHP路由审计

记一次PHP路由审计

时间:2023-09-05 20:44:56浏览次数:43  
标签:审计 index php name upload webauth file PHP 路由

本篇文章作者幽壑,本文属i春秋原创奖励计划,未经许可禁止转载。
https://bbs.ichunqiu.com/thread-63544-1-1.html

记一次PHP路由审计

工具:Seay源代码审计系统

0x1 反射型xss
首先进行一个自动化扫描,根据结果进行跟进排查
image
跟进/user/tpl/_user_import.php文件
image
可以看到直接输出了多个参数echo $useripcw,echo $cfusername,echo $cfuserip,echo $cfusermac,没什么过滤
我们这里直接传入一个xss语句触发xss
image
0x2 SQL注入漏洞
image
跟进/gauserreg/edit_rzfjb.php

<?php
require_once("../session.php");
require_once('../funlist.php');
require_once('../global.func.php');

conn();
if(isset($_GET['id'])) 
{
	$get_id = $_GET['id'];
}
if(isset($_POST['hid_id']))
{
	$get_id = $_POST['hid_id'];
}
$sql = "select * from tb_Web_Addition where id = $get_id";
$result = mysql_query($sql);
$data = @mysql_fetch_array($result);
$name = $data['name'];
//echo $name;
$sex = $data['sex'];
$type = $data['type'];
$certificate_no = $data['certificate_no'];
$check_in_time = $data['check_in_time'];
$web_id = $data['web_id'];
require_once("tpl/_edit_rzfjb.php");
……

通过get或者post方式获得get_id参数,直接带入了查询
构造sql语句/gauserreg/edit_rzfjb.php?id=1%20union%20select%201,2,3,4,5,6,(select%20group_concat(SCHEMA_NAME)%20from%20information_schema.SCHEMATA),8

select 1 union select 1,2,3,4,5,6,(select group_concat(SCHEMA_NAME) from information_schema.SCHEMATA),8 from tb_Web_Addition where id = $get_id"

image
0x3 文件上传getshell
一处文件上传,代码如下

……
if(isset($_POST['uppictxt']))
{
if($_FILES['upfile']['tmp_name'])
{
  $file_upload = $_FILES['upfile']['tmp_name'];
  $file_upload_name = $_FILES['upfile']['name'];
  if(!file_exists("/jffs2/webauth/img"))
  {
exec("mkdir -p /jffs2/webauth/img/");
  }
chdir("/jffs2/webauth/img/");

  if(!copy($file_upload,"/jffs2/webauth/img/$file_upload_name"))
  {
   alert($LANG_OPT_FAILD,"edit_alive.php");
   exit();
  }
}
$uploadfile = true;
……

检测images目录是否存在,不存在则创建目录
然后将上传的文件保存到/jffs2/webauth/images/$file_upload_name目录

image
上传post.php文件
访问上传的shell文件
image

0x4 前台RCE
在进行阅读代码时发现一个疑似后门的文件

if(isset($_POST['previewtxt']))
{
$index = $_POST['previewtxt'];
$index = str_replace("&lt;","<",$index);
$index = str_replace("&gt;",">",$index);
$index = stripslashes($index);

$fp = fopen("/usr/hddocs/nsg/template/___index.php","w");
fwrite($fp,$index);
fclose($fp);
……

该文件通过fwrite将传入的参数写入了/usr/hddocs/nsg/template/_index.php
文件
尝试写入一句话木马
image
访问小马验证执行
image

关于CNVD要求
1、为中危及以上,评分大于4.0
2、注册资产大于5000万
3、并且测试案例要大于10,并且写出至少3例完整复现过程


image
image

标签:审计,index,php,name,upload,webauth,file,PHP,路由
From: https://www.cnblogs.com/Y0uhe/p/17324779.html

相关文章

  • 9个视图子类,视图类,视图集,ViewSetMixin, drf之路由
    1.9个视图子类fromrest_framework.genericsimportListAPIView,CreateAPIView,ListCreateAPIViewfromrest_framework.genericsimportRetrieveAPIView,DestroyAPIView,UpdateAPIViewfromrest_framework.genericsimportRetrieveUpdateDestroyAPIView,RetrieveDes......
  • 在 PHP 数组中的两个字符串之间切换
    在PHP中,你可以使用array_flip()函数和条件语句来在数组中的两个字符串之间进行切换。以下是一个示例://创建一个数组,包含两个字符串的映射关系$mapping=array('string1'=>'value1','string2'=>'value2');//定义当前需要切换的字符串$currentString='string......
  • 为什么 php 命令刷新在 Safari 中不起作用?
    在Safari浏览器中,当使用PHP命令进行刷新可能无法起作用的原因有以下几点:缓存问题:Safari浏览器可能会对页面进行缓存,以提高加载速度。这意味着当你进行PHP命令刷新时,浏览器可能仍然加载缓存的页面而不是重新请求服务器。你可以尝试在刷新页面时使用Command+Shift+R快捷......
  • 9个视图子类、视图集、drf之路由
    9个视图子类fromrest_framework.genericsimportListAPIView,CreateAPIView,ListCreateAPIViewfromrest_framework.genericsimportRetrieveAPIView,DestroyAPIView,UpdateAPIViewfromrest_framework.genericsimportRetrieveUpdateDestroyAPIView,RetrieveDestroy......
  • 基本路由
    基本路由路由是指确定应用程序如何响应对特定终结点的客户端请求,该终结点是URI(或路径)和特定的HTTP请求方法(GET、POST等)。每个路由可以有一个或多个处理程序函数,这些函数在路由匹配时执行。路由定义采用以下结构:app.METHOD(PATH,HANDLER)哪里:app是的实例。expressMET......
  • 代码审计入门之XHCMS
    啥是xhcms熊海CMS是由熊海开发的一款可广泛应用于个人博客,个人网站,企业网站的一套网站综合管理系统,采用了前后端整套,只需要环境Apapche+Mysql+PHP5即可开箱即用。现在好像停止维护了工具准备seay源代码审计系统环境安装环境下载:https://www.lanzoux.com/izeFjfxbxah......
  • vue--day77--路由的简介
    1.vue-router的理解vue的一个插件库专门用来实现SPA应用2.SPA应用的理解单页web应用,(singlepagewebapplication SPA)整个页面只有一个完整的页面点击页面中的导航链接不会刷新页面只会做页面的局部更新数据需要通过ajax请求获取3.路由的理解1.理解:一个路由......
  • 速览 PHP 基础语法
    1.HelloWorld<?phpecho"Hello,World!"; //>Hello,World!2.注释// /**/3.数据类型数据类型类型中文名类型名标量类型布尔型boolean整型integer浮点型float字符串string复合类型数组array对象object查看数据类型voidvar_d......
  • win2016系统php7.4安装oracle oci8扩展
    查看php版本,判断操作系统是否64位;phpinfo();判断PHP是否TS查看ThreadSafety的值,如果是disabled就是NTS,否则是TS,下载的时候要区分;下载扩展oci82.2.0forWindows:https://pecl.php.net/package/oci8/2.2.0/windows下载并解压,把php_oci8.dll,php_oci8_11g.dll,php_oci8_12c......
  • IRIS路由注册(接路由底层分析)
    IRIS路由注册实例化完Application对象,接着就是路由注册了。也就是类似下面的代码  看看api.Get 实现我们主要看app.Get("/home",HomeHandler)这个函数的实现。进入该Get函数的源码,发现调用者是APIBuilder结构体,如下:这是因为在Application结构体中嵌套了router.APIBuild......