phpstyduy安装

1.安装PHPstudy 以及VC9和VC11环境

2.切换phpstudy版本至PHP-5.6.27

3.修改站点域名和host文件

zzcms审计

4.phpstudy--其他选项菜单---mysql工具---设置或修改密码

phpstorm安装

zzcms审计

phpstorm设置

file----setting--languages&frameworks---php

zzcms审计

添加 选取本地

zzcms审计
zzcms审计

找到debug路径

zzcms审计

配置PHP.ini

phpstudy--打开配置文件---PHP.ini

zzcms审计

[XDebug]

xdebug.profiler_output_dir="C:\phpStudy\tmp\xdebug"

xdebug.trace_output_dir="C:\phpStudy\tmp\xdebug"

zend_extension="C:\phpStudy\php\php-5.6.27-nts\ext\php_xdebug.dll"

;zend_extension="C:\phpStudy20161103\php\php-5.6.27-nts\ext\php_xdebug.dll"

xdebug.remote_enable = On

xdebug.remote_host="127.0.0.1"

xdebug.remote_port=9001

xdebug.remote_handler=dbgp

xdebug.idekey="PHPSTORM"

xdebug.profiler_enable = off

xdebug.profiler_enable_trigger = off

xdebug.profiler_output_dir ="c:/wamp64/tmp"

xdebug.show_local_vars=0

xdebug.profiler_output_dir="C:\tmp"

在PHPstorm中进行配置Xdebug插件(与php.ini相对应)

file---settings--languages& frameworks--php--debug 设置端口9001

zzcms审计

填写dbgp proxy(与php.ini对应)

zzcms审计

配置SERVER localhost

zzcms审计

配置运行时选项

zzcms审计

配置如下 http://localhost/daima2.php

zzcms审计

1.首先使用软件进行自动审计

zzcms审计

2.跟据漏洞描述,进行漏洞排查,这里介绍ask.php

zzcms审计

sql注入漏洞

zzcms审计
zzcms审计

只要我们可以控制cookie的内容,可以执行sql语句并将传递给$rs

使用burp抓包进行cookie注入

zzcms审计

2.重装漏洞

zzcms审计

查找源代码install/install.php

zzcms审计

并未发现

安装向导已运行安装过,如需重安装,请删除 /install/install.lock 文件

字样。可能存在于包含文件。

zzcms审计

command+左键进入该文件进行查找,均未发现

使用ctrl+shift +f进行全局查找

zzcms审计

双击可以进入,回到index.php查看index.php如何调用step1的代码

zzcms审计

发现相关代码 设置断点进行调试

zzcms审计

调试至53行,$step仍为1  调试到第54行,代码跳转到step1.php页面

zzcms审计

这是需要判断step是否为1,若为1,则执行srep1.php

zzcms审计

若存在install.lock,则显示安装向导已运行安装过,如需重安装,请删除 /install/install.lock 文件

对index.php进行分析,查询$step

$step = isset($_POST['step']) ? $_POST['step'] : 1;

zzcms审计

尝试抓取数据包修改为post类型,并指定为step2

zzcms审计

放掉burp拦截,断点执行到11行,且显示step为2

zzcms审计
zzcms审计

进行到下一个断点 发现成功绕过

zzcms审计

断点直接进入step2

zzcms审计
zzcms审计

成功绕过

储存型xss漏洞

zt/show.php 发现在256行存在stripfxg函数

该行的意思为拼接

stripfxg函数出现的地方,可能存在xss漏洞

(当strip的第二个参数为htmlspecialchars_decode为turl时,可以将htmlspecialchars处理的内容还原)

zzcms审计

查找$gsjj是否打印出来,在源码中依次查询,发现第374行存在替换命令,赋给$strout ,并且$strout函数可以被打印

zzcms审计

发现$gsjj函数为网页html信息,无法控制,我们判断56行中$content是否可以控制,若可以控制,便有机会制造xss

zzcms审计

发现$content函数仅仅存在一次,那么$content可能存在包含文件中

在以下文件中找 command+左键进入文件进行搜索

zzcms审计

top.php出现一个

zzcms审计

这个时候要找$row被如何赋值

$row被$rs赋值

(fetch_array从结果集中取得一行作为数字数组或关联数组)

zzcms审计

$rs为查询$sql的值

zzcms审计

查找$sql

zzcms审计

可判断出总体流程为

$sql="select * from zzcms_user where id='$id'";

$rs=query($sql);  执行查询

$row=fetch_array($rs);   遍历

$content=$row["content"];

$gsjj=$gsjj. stripfxg($content,true);   拼接

$strout=str_replace("{#gsjj}",$gsjj,$strout);  替换

echo  $strout;

接下来使用debug进行调试,验证流程

zzcms审计

从show.php开始调试,一直到top.php第十七行,进行详细调试至25行,发现

zzcms审计

查找变量$rs和$sql

zzcms审计

因为数据库没有设置太多数据,将设置为id=1

调试进入35行

zzcms审计
zzcms审计

做后一步,控制content,有上述的流程可以得出,content可能是sql中数据库的内容

$sql="select * from zzcms_user where id='$id'";

有上述语句中,我们可以得出content可能在zzcms_user ,全局查找可以修改数据zzcms_user

update zzcms_user   或者    content

最后在admin/usermodify.php

zzcms审计

query("update zzcms_user set usersf='$usersf',sex='$sex',email='$email',homepage='$homepage',comane='$comane',content='$gsjj',

由于content='$gsjj 在该文件找$gsjj,并未发现,查找包含文件admin.php同样未发现

zzcms审计

本页源代码找不到,并且在文件包含的admin.php中也没有找到

该语句包含在if框架里进行折叠分析

折叠后发现该命令存在于65行中,而65行的if语句存在于49行的if判断语句中

zzcms审计

根据上下文分析 发现

当用户存在

当$action==modify以及id有参数,¥Doundeer=0时流程可以执行下来

zzcms审计

即在用户进行信息修改可以控制xss

zzcms审计

抓包

zzcms审计
zzcms审计

继续上下文分析

manage.php包含了conn.php,进行断点调试

zzcms审计

调用了stopsqin的非法参数检测函数

zzcms审计
zzcms审计
zzcms审计

添加参数 asd=siteconfig.php

zzcms审计

相关文章:

  • 2022-02-03
  • 2022-12-23
  • 2022-12-23
  • 2021-08-05
  • 2021-05-17
  • 2021-06-19
  • 2021-05-29
  • 2021-11-09
猜你喜欢
  • 2021-06-27
  • 2021-10-03
  • 2021-11-10
  • 2022-12-23
  • 2021-04-24
  • 2021-12-21
相关资源
相似解决方案