天涯论坛

 找回密码
 立即注册
搜索
查看: 96|回复: 0

PHP代码审计

[复制链接]

2942

主题

2万

回帖

9997万

积分

论坛元老

Rank: 8Rank: 8

积分
99979441
发表于 2024-7-11 18:37:10 | 显示全部楼层 |阅读模式

前言

官方文档:http://php.net

php官方文档是非常详情,好用的,在遇到不清楚功效的函数时能够进行查找

白盒测试做代码审计最重点的知识是要去认识一个漏洞应该有那些防御方式,由于大部分的漏洞都是由于修复做的全面,修复思虑有些状况引起漏洞。

代码审计流程

正向查询流程

a. 从入口点函数出发(如index.php)

b. 找到掌控器,理解URL派发规则(URL详细映射到哪个详细的代码里)

c. 跟踪掌控器调用,以理解代码为目的进行源代码阅读

d. 最后在阅读代码的过程和尝试中,可能发掘漏洞

本质:程序员疏忽或规律问题引起漏洞

特点:

繁杂必须极其认识目的源码的功能与框架跳跃性大:触及M/V/C/Service/Dao等多个层面漏洞的组合:一般是多个漏洞的组合,很可能存在规律关联的漏洞

反向查询流程

a. 经过危险函数,回溯可能存在的漏洞

1. 查询可控变量

2. 传递的过程中触发漏洞

特点:

与上下文关危险函数,调用即漏洞

代码审计工具功能大多便是这个原理

双向查询流程(手动审计重点方式)

略读代码,认识框架(正向流程,如:网站都有那些功能,什么样的架构如mvc:它的m在哪v,c在哪,用了什么模板引擎,是不是用了orm(倘若运用了ORM那样sql注入就很少了,倘若没用是手工写的sql语句,能够关注是不是存在sql漏洞)等...)是不是有全局过滤机制

1. 有:是不是能够绕过?

1).能够:寻找漏洞触发点(反向查询流程,找危险函数)

2).不能够:寻找过滤的变量

2.那样就看它详细怎样处理的,详细代码详细分析

1).有处理:寻找遗漏的处理点(如忘记处理的地区处理不太正确的地区

2).完全处理:能够挖成筛子(很少)

3. 找到了漏洞点,漏洞利用是不是有坑

根源:理解程序执行过程,找寻危险规律

特点:

有效:如挖隧道,双向开工,时间减半(不必须去完全理解网站内部原理和函数功效)

知识面广:必须同期把握正向,反向挖掘技巧,并进行结合

以及所有正向,反向的优点

SQL注入漏洞挖掘技巧

PHP+mysql链接方式有:

mysql(废弃,但老的仍然有)

mysqli

PDO

sql注入平常过滤办法

intval:把用户输入的数字后面的所有不是数字的都过滤掉

addslashes:把 前加\转义掉

mysql_real_escape:和第二个类似,但会思虑用户输入和mysql的编码,避免像宽字节注入问题

mysqli_escape_string / mysqli_real_escape_string / mysqli::escape_string (和mysqli搭配运用,和前面的功能类似)和她们的差别是会主动加引号包裹

PDO: quote

参数化查找

平常注入过滤绕过办法

intval:不晓得

addslashes / mysql_real_escape

1.宽字节注入

2.数字型sql语句

3.寻找字符串转换函数(传入编码好的字符绕过过滤,在后面被转换成sql语句)

urldecode

base64_decode

iconv

json_decode

stripshasles

simple_xml_loadstring

例如:传入id被过滤但后面有一处代码是解码base64,因此咱们能够传入 的base64编码绕过

<?php $id = addslashes($_GET[id]); .... $id = base64_decode($id); .... $sql = "select * from flag where id = $id"; ?>

mysqli::escape_string // PDO::quote

1.宽字节注入

参数化查找

1.寻找非sql值的位置

研发





上一篇:怎么样学习代码审计?
下一篇:php代码简单审计
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点统计|Archiver|手机版|小黑屋|天涯论坛 ( 非经营性网站 )|网站地图

GMT+8, 2024-11-22 11:38 , Processed in 0.122524 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.