代码审计
PHP
前期准备
SQL注入篇
文件操作函数汇总
命令执行篇
XML实体注入篇
前端漏洞篇
反序列化篇
小技巧篇
其它资料
本文档使用 MrDoc 发布
-
+
首页
前期准备
# 网上看到的大佬课程,大佬博客地址如下: > https://www.leavesongs.com/ # 前期准备 ## 代码审计需要学到什么程度? - 能看懂,能梳理清楚网站的功能点,能在里面找到有危险的函数调用即可。 ## PHP还是Java - PHP入门较快,漏洞较多,适合入门。 ## PHP审计工具 - 通用工具 - PHPStorm:PHP集成开发环境 - Xdebug:PHP源代码调试工具 - PHPMyAdmin:PHP应用,可以用来管理Mysql数据库 - 虚拟机 - Burpsuite:抓包改包工具 - Windows环境搭建 - PHPStudy:PHP运行环境 - Seay源代码审计系统 - MAC环境搭建 - PHPBrew - XAMPP ### PHPStudy - Windows PHP 环境神器 - 一键切换PHP版本 - 多中间件切换(Apache/Nginx/IIS) - PHP/Apache/Mysql意见配置 ### Seay源代码审计系统 - PHP代码审计神器 - 快速函数定位 - 自定义多窗口搜索 - Mysql执行监控 - 一键调试选中代码 - 自动审计 ### 案例:PHPMailer任意代码执行漏洞分析过程 ### PHP 手工调试 - 万金油函数 - var_dump:将当前变量值或者函数返回结果显示 - 查看上下文内容 - get_defined_functions: - get_defined_vars:获取当前PHP运行时所有的变量 - get_defined_constants - get_included_files - get_loaded_extensions - get_extension_funcs - get_declared_classes - get_declared_interfaces - 查看函数调用过程 - debug_backtrace:输出当前PHP运行的上下文 - debug_print_bactrace - XDebug手工调试 - xdebug_call_file 获取调用当前函数的文件 - xdebug_call_line 货期调用当前函数的文件的行 - xdebug_call_function 获取调用当前函数的函数 - xdebug_dump_superglobals 获取所有超全局变量 - xdebug_get_monitored_functions 监控函数调用 ### PHP运行模式 - 网站运行PHP需要SAPI和web服务器进行通信。SPI就是建立在web服务器和PHP解释器之间的桥梁。SAPI就是运行模式 - CLI:命令行运行PHP程序 - CGI:现在很少:很久以前使用这种方式,特点是用户每访问一次页面就会产生一个新的进程,进程将结果返回给用户后,进程结束。 - PHP Built-in Webserver:PHP自带的webserver,可以通过PHP命令启动一个网站。 如:php -S localhost:9090 ,只适合本地测试 - **Apache php_mod**:常见,Apache的一个扩展,不会启动新的进程,进程在Apache内部。 - **php-fpm(Fastcgi)** :常见,在服务器上启动单独的服务,监听一个新的端口。通过Fastcgi协议和服务器通信。 - Nginx - IIS7+ - Lighttpd - IIS6+ISAPI:IIS6下有个ISAPI扩展。 - Swoole ### PHP 安全的全局配置 - magic_quotes_gpc:5.3后废弃,5.4后移除,将用户所有输入转义 - register_global:4.2后默认为false,将用户传入的超全局变量释放到应用的上下文中, - allow_url_include:默认false,是否允许php包含远程文件 - allow_url_fopen:默认true,是否允许php读取远程文件 - request_order:5.3后从GPC改成GP,5.3之后包含GET,POST,5.3之前还多了一个Cookie。 - request_open_tag:是否允许<?来运行php,5.4+无论是否开启,<?=..?>总是可以被执行的<?=..?>等于echo... - safe_mode:(5.4移除) - open_basedir:限制php能访问哪些目录,哪些不能访问。可以绕过 - disable_functions/disable_classses:哪些函数或者类不能运行 - enable_dl:(5.2默认false)php下是否允许加载扩展,比如用 dl('evil.dll);加载扩展后做一些更危险的事情。 - register_global如果是true,会自动实现这个功能: ``` <?php extract($_REQUEST); echo $name; ?> // 然后访问 localhost/index.php?name=test // 这个时候会出现变量覆盖的问题。 ``` - allow_url_fopen开启效果如下 ``` <?php extract($_REQUEST); echo file_get_contents($url); ?> // 然后访问 localhost?index.php?url=https://baidu.com ``` ### 危险操作、函数、方法、变量 - include/require/include_once/require_once/**spl_autoload** - eval/assert/**preg_replace**/**create_function** - system/passthru/exec/shell_exec/popen/proc_open/**pcntl_exec**/**dl**/**\`xx\`** - file_get_contents/fread/readfile/file/**highlight_file**/**show_source** - file_put_contents/fwrite/mkdir/**fputs** - unlink/rmdir - move_uploaded_file/**copy**/**rename** - curl_exec/**file_get_contents**/**readfile**/**fopen** - extract/parse_str/**$$** - simplexml_load_file/simplexml_load_string/**SimpleXMLElement**/**DOMDocument**/**xml_parse** - **var_dump**/**print_r**/**exit**/**die** - unserialize - urldecode/iconv/mb_convert_encoding/stripslashes/base64_decode/substr ### 查漏补缺 - php文档:php.net - Google.com && Stackoverflow.com - 找一些漏洞源码 - XZ.Aliyun.com - Github.com - wooyun 历史漏洞 - **https://govuln.com/news/**
别卷了
2024年12月18日 16:13
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码