首页 > 其他分享 >代码审计连载-工具介绍及简单思路

代码审计连载-工具介绍及简单思路

时间:2024-07-04 11:28:30浏览次数:21  
标签:审计 连载 代码 漏洞 PHP 上传 调试

相信很多刚入门的朋友来讲, php 代码审计很陌生,很多网友喜欢直接扔 seay 等自动化工具,这方法也算是一种最快的一种审计方式。之前看 w 师傅的一篇文章,开始部分说了一段话 ” 对于面向过程写法的程序来说,最快的审计方法可能时直接丢 seay 审计系统里,但对于基于 mvc 模式的程序来说,你直接丢 seay 审计系统的话,那不是给自己找麻烦吗? ”

确实如此,对于mv模式的程序,确实给自己找麻烦。

进入今天的正题,如何快速挖掘漏洞,以下是我自己之前用的方法,今天给大家分享一下,适合刚接触代码审计的朋友,大佬勿喷。

首先我们需要一个好的测试环境。

工具篇之开发环境 ( 个人推荐,排名不分先后 )

0x01.PhpStorm

PhpStorm 是 JetBrains 公司开发的一款商业的 PHP 集成开发工具,旨在提高用户效率,可深刻理解用户的编码,提供智能代码补全,快速导航以及即时错误检查 ,是一个非常不错的开发环境。

主要特点:

1. 跨平台 。

2. 对 PHP 支持 refactor 功能。

3. 自动生成 phpdoc 的注释,非常方便进行大型编程。

4. 内置支持 Zencode 。

5. 生成类的继承关系图,如果有一个类,多次继承之后,可以通过这个功能查看他所有的父级关系。

6. 支持代码重构,方便修改代码。

7. 拥有本地历史记录功能( local history 功能)。

8. 方便的部署,可以直接将代码直接 upload 到服务器。

9b82025fc0990a307a3e7f3eeee35e1e.png

下载链接:

https://www.jetbrains.com/zh-cn/phpstorm/promo/?utm_source=baidu&utm_medium=cpc&utm_campaign=cn-bai-pro-phpstorm-ph-pc&utm_content=phpstorm-php-software&utm_term=php%e8%bd%af%e4%bb%b6

0x02.PhpStudy

phpStudy是一个PHP调试环境的程序集成包。该程序包集成最新的 Apache + PHP +MySQL+ phpMyAdmin + ZendOptimizer ,一次性安装,无须配置即可使用,是非常方便、好用的PHP调试环境。该程序不仅包括PHP调试环境,还包括了开发工具、开发手册等。

主要特点:

集成最新的 Apache + PHP +MySQL+ phpMyAdmin + ZendOptimizer , 一次性安装 , 无须配置即可使用 , 是非常方便、好用的 PHP 调试环境 . 该程序不仅包括 PHP 调试环境 , 还包括了开发工具、开发手册等 。

a93d5e995b370a1a8e6cba61ef9ea53c.png

下载链接:

https://www.xp.cn/download.html

工具篇之审计工具 ( 个人推荐,排名不分先后 )

0x01.RIPS

Rips 是使用PHP语言开发的一个审计工具,所以只要有可以运行PHP的环境就可以轻松实现PHP的代码审计,它现在的最新免费开源版本是0.55版本 。

主要特点:

1. 能够检测 XSS 、 SQL 注入、文件泄露、本地 / 远程文件包含、远程命令执行以及更多种类型的漏洞。

2. 有 5 种级别选项用于显示以及辅助调试扫描结果。

3. 详细列出每个漏洞的描述、举例、 PoC 、补丁和安全函数。

4. 7 种不同的语法高亮显示模式。

5. 使用自顶向下或者自底向上的方式追溯显示扫描结果。

6. 一个支持 PHP 的本地服务器和浏览器即可满足使用需求。

7. 正则搜索功能。

2507c13db328dea200a3c3092c7a2174.png

下载链接:

https://sourceforge.net/projects/rips-scanner/files/

0X02. VCG

VCG是一个基于字典的自动化源代码扫描工具,可以由用户自定义需要扫描的数据。它可以对源代码中所有可能存在风险的函数和文本做一个快速的定位。

主要特点:

1. 除了执行一些更复杂的检查外,它还为每种语言提供了一个配置文件,基本上允许您添加任何要搜索的错误函数(或其他文本)。

2. 以饼图的形式显示扫描后结果。

25d261b83eec8360ad5b5f788e6843ae.png

下载连接:

https://sourceforge.net/projects/visualcodegrepp/?source=directory

0x03.Seay源代码审计系统

这是一款基于C#语言开发的一款针对PHP代码安全性审计的系统,主要运行于Windows系统上。这款软件能够发现SQL注入、代码执行、命令执行、文件包含、文件上传、绕过转义防护、拒绝服务、XSS跨站、信息泄露、任意URL跳转等漏洞。

主要特点:

1. 一键自动化白盒审计

2. 代码调试

3. 正则编码

4. 自定义插件及规则

ae3d2c2021d6342f1f962267d066ec4f.png

下载连接:

https://download.csdn.net/download/aiwennba/10130771

审计思路篇 ( 小白方法,大佬勿喷 )

说到思路大家想到的就是找可控变量,功能函数等等。

但是呢,对于初学者来说这种思路很费时间。下面说一下个人的思路。

首先看源码的目录结构,对源码进行初步的了解,再去本地搭建此套源码,针对部分漏洞先进行一次简单的灰盒测试。查找前台,后台的一些关键性功能部分,比如:

0x01.SQL注入

前台 :新闻,xx介绍,搜索框,登录,后台:登录,查询用户(新闻....),数据库管理等。

0x02.跨站脚本漏洞(XSS)

前台:搜索框 (很多环境下一般是反射性XSS),留言板,招聘等类似功能处,                       个人资料等。

0x03.文件上传

前台:个人资料处上传头像 ,招聘等类似功能处上传文件,后台:发布新闻附件上传,网站logo上传,新建模板,插入第三方js脚本等。

再到源码查找以上测试部分功能处的正则,waf的特点,再去考虑漏洞的产生和利用。

0x04.逻辑漏洞和未授权访问

前台:个人资料修改,购买商品,网站部分插件(上传...);后台:附件删除等。

充分利用burp suite,wireshark等工具进行流量分析,仔细观察,并记录每次传参的变量,再到源码查找此变量,并判断传入参数是对普通用户的身份验证。

这里很多朋友的问题来了, ” 你这个方法,跟直接扔 seay查找功能函数有什么区别啊,是在曾流量?”

刚开始接触代码审计的朋友们应该知道,去查找可控变量,功能函数,到后面去利用此变量,函数。是较困难的。所以呢针对初学者来说先对网站的结构进行了解,查找可疑存在漏洞处,是很不错的一种审计方法。

标签:审计,连载,代码,漏洞,PHP,上传,调试
From: https://blog.csdn.net/aihua002/article/details/140058927

相关文章

  • 网络爬虫之什么是代码混淆?初步理解代码混淆
    爬虫逆向之什么是代码混淆?初步理解代码混淆在网络爬虫和逆向工程的过程中,代码混淆是一项常见的技术,旨在保护代码不被轻易理解和逆向。对于爬虫工程师来说,理解并破解代码混淆是一个重要的技能。本文将详细介绍代码混淆的基本概念、常见的混淆技术以及如何逆向这些混淆代码......
  • 【Python函数编程实战】:从基础到进阶,打造代码复用利器
    文章目录......
  • 临时存储代码
    代码临时存储funcmain(){ r:=gin.Default() r.GET("/stream",func(ctx*gin.Context){ ctx.Writer.Header().Set("Content-Type","text/event-stream") ctx.Writer.Header().Set("Cache-Control","no-cache") ......
  • 微信小程序-详细登录流程 - (图解+代码流程)
    目录项目准备     注册小程序和创建项目一、登录页面效果图头部区域头部区域代码展示布局组件和图片组件的使用弹性布局display:flex;登录内容区域登录内容区域代码展示bindsubmit="uplogin"代码注解切换登录区域切换登录区域代码展示<radio-group/><radio/>......
  • JSOI2017 代码
    \(\text{JSOI2017day1t1代码}\)题解设\(d_i\)表示长度为\(i\)的库函数数量,\(h_i\)表示长度为\(i\)的可编译代码的数量,\(f_{i,j}\)表示寄存器初始值为\(j\)、终值为\(0\)的代码数量,\(F_{i,j}\)表示寄存器初值为\(0\)、终值为\(j\)的代码数量,\(g_{i,j}\)表示长度为\(i\)可以加上......
  • 代码随想录算法训练营第四十八天 | 188.买卖股票的最佳时机IV 309.买卖股票的最佳时
    188.买卖股票的最佳时机IV题目链接文章讲解视频讲解动规五部曲:dp数组的含义:dp[j][2*i-1]表示第i次持有股票dp[j][2*i]表示第i次不持有股票递推公式:dp[j][2i-1]=max(dp[j-1][2i-1],dp[j-1][2*i-2]-prices[j]);dp[j][2i]=max(dp[j-1][2i],dp[j-1][2*i-1]......
  • 代码随想录第四十六天 | 322. 零钱兑换,279.完全平方数,139.单词拆分
    322.零钱兑换看完想法:此处是求最小值,所以递推公式中含Min,即dp[j]=min(d[[j],dp[j-coins[i]]+1),初始化都为INT_MAX,且dp[0] =0。由于不是求组合数,所以物品和背包重量的遍历先后顺序都是可以的。此处要注意一个细节,如果是物品for外循环,背包从coins[j]开始并且j++,(之......
  • Python学习笔记27:进阶篇(十六)常见标准库使用之质量控制中的代码质量与风格第一部分
    前言本文是根据python官方教程中标准库模块的介绍,自己查询资料并整理,编写代码示例做出的学习笔记。根据模块知识,一次讲解单个或者多个模块的内容。教程链接:https://docs.python.org/zh-cn/3/tutorial/index.html质量控制质量控制(QualityControl,QC),主要关注于提高......
  • 编译原理 第六章&编译原理必考大题: 语义分析及中间代码生成&必考大题语句翻译
    第六章语义分析及中间代码生成&必考大题语句翻译文章目录第六章语义分析及中间代码生成&必考大题语句翻译写在最前6.1语义分析6.2中间代码6.2.1逆波兰式6.2.2四元式6.2.3三元式6.3语句翻译(必考大题)6.3.1布尔表达式的翻译6.3.2if语句的翻译6.3.3while语句翻......
  • 代码随想录算法训练营第一天 | 704. 二分查找、27. 移除元素
    704.二分查找这个之前有写过,最重要的就是把握住要去搜索的区间的形式,包括左闭右闭以及左闭右开两种classSolution{publicintsearch(int[]nums,inttarget){intleft=0,right=nums.length;while(left<right){//左闭右开的版本,结果存储......