热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php代码审计靶场,记一次简单的php代码审计

PHP代码审计所需工具:(1)环境:PHPstudy我这里直接使用phpstudy。其他的如:xampp,lamp等集成环境

PHP代码审计所需工具:

(1) 环境:PHPstudy

我这里直接使用phpstudy。其他的如:xampp,lamp等集成环境都可以。

Phpsyudy官网地址:https://www.xp.cn

(2) 代码审计工具:

“工欲善其事,必先利其器。”一款好的代码审计工具可以辅助我们的白盒测试,提高挖掘漏洞的效率。下面我来介绍一下两款常用的代码审计工具。

1. RIPS

Rips是PHP语言开发的一款流行的审计工具,只要我们搭建好php环境就可以使用该工具。

官网:http://rips-scanner.sourceforge.net

下载好后,放入到我们本地搭建的网站根目录中,访问即可。下面是rips的界面。

136be34314a57ba454d97dfa8ef5d707.png

2. Seay

这是一款由国内大牛法师(seay)13年期间基于c#开发的一款针对与PHP代码安全性审计的系统。是初学代码审计时常用的一款工具。

136be34314a57ba454d97dfa8ef5d707.png

经验总结:

我这边总结一下我自己个人的经验。我个人是没有系统的学习过php的,所以说的有误的请各位大牛更正。

我认为有几点:

(1)确定框架或了解好文件的作用

为什么要确定好框架呢?因为确定好框架,我们可以去找找该框架的漏洞,也为我们后续审计工作带来更多的便利。怎么确定好一个框架呢?通常我们可以去看看需要审计的cms的官方文档。

为什么需要了解好文件的作用呢?我认为搭建好要审计的代码后,第一步就去找存放有全局函数,全局类的文件或配置文件。为什么呢?因为存放有全局函数的,如过滤xss,sql注入的函数都放在里面,我们可以看看过滤的正则写的怎么样,看看能不能绕过正则。或者如一些获取ip地址的函数,有没有过滤好,如果没有过滤好,往往都会出现http注入。

如何去找这些文件呢?一般有几个命名方式,如存放有全局函数的文件命名一般带有function,而配置文件一般会带有config这个字样,而controller,class多为类文件,存放类文件的目录多为controller或lib。所以说我们从文件名上就可以获取到很多信息。

(2)找好输入点,并确定有没有危险函数。

找好输入点?找什么的输入点呢。我们也知道有几个超全局变量如:$_GET $_POST $_SERVER…..

这几个不难发现都是用来接收外部输入的变量,这就是我们的输入点,而用户的输入都是不可信的。找到危险函数的同时,我们也要确定我们有没有输入点,可以对这个危险函数进行操作,且这个输入点输入的内容,程序有没有进行过滤或者过滤不充足。这几点是我们要考虑的问题。

(3)黑白盒交替进行,懂得抓包分析,逐步调试你觉得可疑的代码。

黑白盒交替进行,运用好抓包分析,对我们代码审计工作有着非常重要的作用。我们开始看到的是一个网站成形的样子,而不是一堆看到眼花缭乱的代码。所以如果是一些刚学代码审计,对代码通读能力较弱的人,可以先进行一下黑盒测试。我们可以一开始找到一个什么留言板,搜索框之类的,去测试有没有xss。有url跳转的地方去测试ssrf,或者登录后台添加或删除用户时,抓包分析,适当删除referer头来看看存不存在csrf。感觉麻烦的就拿AWVS,Nessus这些工具扫一波。

懂得调试代码,我们也可以单独将一段可疑的代码复制到另一个文件调试,多输出你想要的变量,来看看过滤规则等。

(4)最后一点是心态上,一定不能着急,要慢慢来,不要怕被打击,不断地总结经验。

实战演示

(1) SQL注入(演示云业CMS)

这个说真的,我这几天为了帮朋友搞个证书,我随便去源码站那里看看那些cms可以水一波证书,然后刚好看到这个某业,结果洞挖好之后,发现已经有人提交了,所以我不是第一个发现该漏洞的人。这次就用来当做教材分享给大家吧。官方也已经发布补丁。本次教学仅供参考学习,切勿做任何违法活动。

136be34314a57ba454d97dfa8ef5d707.png

好的,我们现在直接到存放有全局函数的文件里,我们可以看到这个getip()用来获取ip的函数后面没有经过任何过滤,直接返回,这样就会造成一个http头注入。既然认为这是个漏洞,剩下我们就去看看哪里调用了这个函数。我这里用的是seay代码审计系统,这有一个全局搜索的功能,我们搜索getip()看看那里调用了该函数。

136be34314a57ba454d97dfa8ef5d707.png

好的,这次我们点开这个/admin/login.php管理员登录文件

136be34314a57ba454d97dfa8ef5d707.png

可以发现这个$logiparr调用了getip()函数,又未经过滤后传入checklogintimes函数,然后我们追踪一下这个函数。

136be34314a57ba454d97dfa8ef5d707.png

可以发现这个过程是未经过任何过滤就传入值,所以我们抓包分析一下,可以发现当我们加了xxf头后,在ip地址后面加个引号会出现MYSQL报错提示。说明存在注入漏洞。

136be34314a57ba454d97dfa8ef5d707.png

剩下偷个懒,直接扔sqlmap。

136be34314a57ba454d97dfa8ef5d707.png

(2) Csrf(YzmCMSV5.5版本)

这个危害比较小,比较很鸡肋(厂商也不收呀),所以我拿来演示Csrf漏洞产生。

首先,是一个黑盒测试。我们直接登录管理员后台添加和删除会员的页面。通过抓取添加和删除会员时的数据包,分析。

网站程序只是简单的验证了一下referer头

136be34314a57ba454d97dfa8ef5d707.png

删除referer头后,成功添加用户

136be34314a57ba454d97dfa8ef5d707.png

所以,当referer头为空或者跟他同源时,则绕过检测。所以我们的paylaod代码就可以用标签配合data协议,以及base64编码实现。然后黑盒测试完成

136be34314a57ba454d97dfa8ef5d707.png

该代码会添加一个haha的用户,实测效果:

136be34314a57ba454d97dfa8ef5d707.png

136be34314a57ba454d97dfa8ef5d707.png

然后我们来看下代码,其实这个关键点的就是,添加用户的的时候,没有加一个token验证,而这个检测只是简单的验证了referer头。

136be34314a57ba454d97dfa8ef5d707.png

136be34314a57ba454d97dfa8ef5d707.png

总结

上面两个只是比较小的案例,我这边建议的是开始最好从dvwa这些靶场,去看看产生漏洞的源码,了解漏洞产生的原因,然后再去找找比较简单,小众的CMS去挖掘。这些cms可以去网上那些源码之家找找。然后多看别人的文章,多参考参考大佬们的经验。看懂后最好自己能复现一下。



推荐阅读
  • 掌握PHP框架开发与应用的核心知识点:构建高效PHP框架所需的技术与能力综述
    掌握PHP框架开发与应用的核心知识点对于构建高效PHP框架至关重要。本文综述了开发PHP框架所需的关键技术和能力,包括但不限于对PHP语言的深入理解、设计模式的应用、数据库操作、安全性措施以及性能优化等方面。对于初学者而言,熟悉主流框架如Laravel、Symfony等的实际应用场景,有助于更好地理解和掌握自定义框架开发的精髓。 ... [详细]
  • 本文首先对信息漏洞的基础知识进行了概述,重点介绍了几种常见的信息泄露途径。具体包括目录遍历、PHPINFO信息泄露以及备份文件的不当下载。其中,备份文件下载涉及网站源代码、`.bak`文件、Vim缓存文件和`DS_Store`文件等。目录遍历漏洞的详细分析为后续深入研究奠定了基础。 ... [详细]
  • Ceph API微服务实现RBD块设备的高效创建与安全删除
    本文旨在实现Ceph块存储中RBD块设备的高效创建与安全删除功能。开发环境为CentOS 7,使用 IntelliJ IDEA 进行开发。首先介绍了 librbd 的基本概念及其在 Ceph 中的作用,随后详细描述了项目 Gradle 配置的优化过程,确保了开发环境的稳定性和兼容性。通过这一系列步骤,我们成功实现了 RBD 块设备的快速创建与安全删除,提升了系统的整体性能和可靠性。 ... [详细]
  • Python学习:环境配置与安装指南
    Python作为一种跨平台的编程语言,适用于Windows、Linux和macOS等多种操作系统。为了确保本地已成功安装Python,用户可以通过终端或命令行界面输入`python`或`python3`命令进行验证。此外,建议使用虚拟环境管理工具如`venv`或`conda`,以便更好地隔离不同项目依赖,提高开发效率。 ... [详细]
  • PHP连接MySQL的三种方法及预处理语句防止SQL注入的技术详解
    PHP连接MySQL的三种方法及预处理语句防止SQL注入的技术详解 ... [详细]
  • MySQL日志分析在应急响应中的应用与优化策略
    在应急响应中,MySQL日志分析对于检测和应对数据库攻击具有重要意义。常见的攻击手段包括弱口令、SQL注入、权限提升和备份数据窃取。通过对MySQL日志的深入分析,不仅可以及时发现潜在的攻击行为,还能详细还原攻击过程并追踪攻击源头。此外,优化日志记录和分析策略,能够提高安全响应效率,增强系统的整体安全性。 ... [详细]
  • 深入解析 AngularJS 表达式的应用与优化技巧
    本文深入探讨了AngularJS表达式的应用及其优化策略。在AngularJS中,表达式主要通过$digest循环进行自动解析,但在某些场景下,手动解析表达式也是必要的。文章详细介绍了如何利用$parse服务实现手动解析,并提供了多种优化技巧,以提高应用性能和响应速度。 ... [详细]
  • AngularJS uirouter模块下的状态管理机制深入解析
    本文深入探讨了 AngularJS 中 ui-router 模块的状态管理机制。通过详细分析状态配置、状态转换和嵌套状态等核心概念,结合实际案例,帮助开发者更好地理解和应用这一强大工具,提升单页面应用的开发效率和用户体验。 ... [详细]
  • 在《OWASP TOP 10 注入漏洞》中,详细探讨了注入攻击的发生机制:当应用程序未能有效识别和拦截恶意输入时,攻击者可以通过 SQL 注入等手段利用这一漏洞。本文将重点介绍 SQL 注入的基本原理及其防范措施,帮助读者全面了解并有效应对这一常见安全威胁。 ... [详细]
  • 本文深入解析了 Apache 配置文件 `httpd.conf` 和 `.htaccess` 的优化方法,探讨了如何通过合理配置提升服务器性能和安全性。文章详细介绍了这两个文件的关键参数及其作用,并提供了实际应用中的最佳实践,帮助读者更好地理解和运用 Apache 配置。 ... [详细]
  • Spring Boot 实战(一):基础的CRUD操作详解
    在《Spring Boot 实战(一)》中,详细介绍了基础的CRUD操作,涵盖创建、读取、更新和删除等核心功能,适合初学者快速掌握Spring Boot框架的应用开发技巧。 ... [详细]
  • ylbtech-进销存管理解决方案:进销存管理,即购销链管理,涵盖企业从采购(进)、库存(存)到销售(销)的全流程动态管控。其中,“进”涉及从市场询价、供应商选择、采购执行直至货物入库及支付流程;“销”则包括产品定价、客户报价、订单处理及销售出库等环节。该解决方案旨在通过信息化手段,提升企业运营效率,优化库存结构,增强市场响应速度。 ... [详细]
  • 本文详细介绍了如何在Linux系统中搭建51单片机的开发与编程环境,重点讲解了使用Makefile进行项目管理的方法。首先,文章指导读者安装SDCC(Small Device C Compiler),这是一个专为小型设备设计的C语言编译器,适合用于51单片机的开发。随后,通过具体的实例演示了如何配置Makefile文件,以实现代码的自动化编译与链接过程,从而提高开发效率。此外,还提供了常见问题的解决方案及优化建议,帮助开发者快速上手并解决实际开发中可能遇到的技术难题。 ... [详细]
  • Spring 中获取 Request 的多种方式及其线程安全性的深入解析
    本文深入探讨了在Spring MVC框架下获取HTTP请求对象的多种方法,详细分析了每种方法的实现原理及其线程安全性,为开发者提供了全面的技术参考。 ... [详细]
  • 在探讨Java动态代理机制时,本文深入分析了其核心原理与实现方式,并详细讨论了该机制在Spring框架中的应用,特别是在AOP(面向切面编程)中的作用。通过实例解析,读者可以更好地理解如何利用动态代理增强代码的灵活性和可维护性。 ... [详细]
author-avatar
琪琪
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有