• 54:代码审计-TP5框架审计写法分析及代码追踪


    思维导图

    案例1:demo代码段自写和规则写分析

    具体见上一篇文章

    案例2:hsycms-TP框架-不安全写法-未过滤

    <1>分析程序源码,首先找到入口文件

    <2>然后修改config.php文件,使app_debug=true,app_trace=true,打开调试模式。

    <3>寻找网址对应的程序文件。

    方法1:使用phpstorm或者seay系统打开程序源码,寻找路由,查看路由规则,找到各url访问地址对应的程序文件。比如product/133.html对应的程序文件就是/index/show/index,即app/index/controller/show.php页面中的index()方法。-->优点是可以直接找到对应的方法。

    方法2:刷新页面,查看调试信息-流程页面,找到网址对应的文件,一步到位。-->缺点是只能找到对应的文件show.php,至于对应的方法还需进一步分析。

    <4>查看新闻,发现每个新闻对应不同的id,比如下面新闻对应id=150

    <5>查看该新闻页面对应的程序源码,发现了使用TP5框架规则写好的sql语句

    <6>刷新页面时,使用数据库监控软件监控到了执行的SQL语句,正好与源码对应。

    <7>尝试注入测试,将id修改为150sads,发现值未被过滤,直接被带入SQL语句。

    <8>使用sqlmap尝试扫描,确定有sql注入。

    小技巧:在注入点处加*,提示sqlmap扫描此处。

    sqlmap.py -u http://127.0.0.1/news/150*.html --batch --current-user --current-db
    

    <9>寻找原因。查询源代码,发现虽然SQL语句使用规则写法,但是接收变量id时不规范,使用了自定义的input方法。

    进一步跟进input方法,发现使用其方法传参无过滤,导致ID可控,存在注入。 

    <10>修复建议:使用规范方法传参,比如:

    $id = input(‘?get.id’);
    
    $id = input('?post.id');
    
    $id = request()->get('id/a');
    

    参考:https://www.cnblogs.com/7bit/articles/10551499.html

    案例3:weipan21-TP框架-规则写法-内置过滤

    <1>通过url地址可以猜测到路由地址未更改

    <2>审计源码,发现均使用了规则写法,追踪调试,也没发现漏洞。

    <3>查看版本,网上搜索相关版本对应的漏洞,使用公开payload测试,寻找可能的漏洞点。

    thinkphp历史漏洞集合:https://github.com/Mochazz/ThinkPHP-Vuln

    <4>查看框架历次更新说明,寻找可能的漏洞点。重点看每次版本迭代都修改了哪些代码,找到对应漏洞点。很多漏洞可能网上并没有发布,通过这种方法可以分析出来。

  • 相关阅读:
    Uipath-Close Application和Close Window区别
    我与某猪同学斗智斗勇的那些事
    可视报表(Project)
    自定义函数(Power Query 之 M 语言)
    报表(Project)
    拆分…Split…(Power Query 之 M 语言)
    参加Mos考试
    主要视图展示(Project)
    听听文档(视频)-Power Pivot
    突出显示(Project)
  • 原文地址:https://www.cnblogs.com/zhengna/p/15179395.html
Copyright © 2020-2023  润新知