• zzcms审计


    phpstyduy安装

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

    2.切换phpstudy版本至PHP-5.6.27

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

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

    phpstorm安装

    phpstorm设置

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

    添加 选取本地

    找到debug路径

    配置PHP.ini

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

    [XDebug]

    xdebug.profiler_output_dir="C:phpStudy mpxdebug"

    xdebug.trace_output_dir="C:phpStudy mpxdebug"

    zend_extension="C:phpStudyphpphp-5.6.27-ntsextphp_xdebug.dll"

    ;zend_extension="C:phpStudy20161103phpphp-5.6.27-ntsextphp_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: mp"

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

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

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

    配置SERVER localhost

    配置运行时选项

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

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

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

    sql注入漏洞

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

    使用burp抓包进行cookie注入

    2.重装漏洞

    查找源代码install/install.php

    并未发现

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    断点直接进入step2

    成功绕过

    储存型xss漏洞

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

    该行的意思为拼接

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

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

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

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

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

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

    top.php出现一个

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

    $row被$rs赋值

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

    $rs为查询$sql的值

    查找$sql

    可判断出总体流程为

    $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进行调试,验证流程

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

    查找变量$rs和$sql

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

    调试进入35行

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

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

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

    update zzcms_user   或者    content

    最后在admin/usermodify.php

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

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

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

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

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

    根据上下文分析 发现

    当用户存在

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

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

    抓包

    继续上下文分析

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

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

    添加参数 asd=siteconfig.php



  • 相关阅读:
    过河卒(Noip2002)
    暑假学习日记2013/7/18
    暑假学习日记2013/7/16
    iOS中利用CoreTelephony获取用户当前网络状态(判断2G,3G,4G) by徐文棋
    隐藏键盘的N种方法
    cell重用
    关于viewControllers之间的传值方式
    iOS开发之工欲善其事,必先利其器
    NSLog输出格式及随机数
    iOS团队代码规范
  • 原文地址:https://www.cnblogs.com/bingtang123/p/15136364.html
Copyright © 2020-2023  润新知