php代码审计,php漏洞详解

这篇具有很好参考价值的文章主要介绍了php代码审计,php漏洞详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、输入验证和输出显示

大多数漏洞的形成原因主要都是未对输入数据进行安全验证或对输出数据未经过安全处
理,比较严格的数据验证方式为:

对数据进行精确匹配
接受白名单的数据
拒绝黑名单的数据
对匹配黑名单的数据进行编码

在 PHP 中可由用户输入的变量列表如下,我们应该对这些输入变量进行检查:

$_SERVER
$_GET
$_POST
$_COOKIE
$_REQUEST
$_FILES
$_ENV
$_HTTP_COOKIE_VARS
$_HTTP_ENV_VARS
$_HTTP_GET_VARS
$_HTTP_POST_FILES
$_HTTP_POST_VARS
$_HTTP_SERVER_VARS

2、命令注入(Command Injection)

PHP 中可以使用下列 5 个函数来执行外部的应用程序或函数

system、exec、passthru、shell_exec、(与 shell_exec 功能相同)

使用方式

string system(string command, int &return_var)
command 要执行的命令
return_var 存放执行命令的执行后的状态值
string exec (string command, array &output, int &return_var)
command 要执行的命令
output 获得执行命令输出的每一行字符串
return_var 存放执行命令后的状态值
void passthru (string command, int &return_var)
command 要执行的命令
return_var 存放执行命令后的状态值

案例
将下面代码放在服务器,我们在浏览器访问

//ex1
<?php
$ip = $_GET["ip"];
if (isset($ip))
{
echo "<pre>";
system("ping ".$ip);
echo "</pre>";
}
?>

可以看到执行了ping命令
php代码审计,php漏洞详解,代码审计,php,chrome,开发语言
由于它没有对 ip 参数进行任何验证或过滤,恶意用户可以通过在 URL 中添加特殊字符来执行任意命令
php代码审计,php漏洞详解,代码审计,php,chrome,开发语言

3、eval 注入(Eval Injection)

eval 函数将输入的字符串参数当作 PHP 程序代码来执行
将下面代码放在服务器,我们在浏览器访问

//ex2
<?php
$var = "var";
if (isset($_GET["arg"]))
{
$arg = $_GET["arg"];
eval("\$var = $arg;");
echo "\$var =".$var;
}
?>

当我们把传递的参数值改为phpinfo的时候,漏洞就产生了
php代码审计,php漏洞详解,代码审计,php,chrome,开发语言
防范方法

1、尽量不要执行外部命令
2、使用自定义函数或函数库来替代外部命令的功能
3、使用 escapeshellarg 函数来处理命令参数
4、使用 safe_mode_exec_dir 指定可执行文件的路径
esacpeshellarg 函数会将任何引起参数或命令结束的字符转义,单引号“’”,替换成“\’”,双引号““”,替
换成“””,分号“;”替换成“;”
用 safe_mode_exec_dir 指定可执行文件的路径,可以把会使用的命令提前放入此路径内

4、跨网站脚本攻击(Cross Site Scripting, XSS)

反射型跨站常常出现在用户提交的变量接受以后经过处理,直接输出显示给客户端;存储
型跨站常常出现在用户提交的变量接受过经过处理后,存储在数据库里,然后又从数据库中读取
到此信息输出到客户端。输出函数经常使用:echo、print、printf、vprintf、<%=$test%>

这里用pikachu的存储型代码进行分析
php代码审计,php漏洞详解,代码审计,php,chrome,开发语言
这段代码它没有对用户输入的留言进行任何验证或过滤,因此可能会受到存储型跨站脚本攻击(Stored XSS Attack)的威胁。存储型跨站脚本攻击是一种常见的网络攻击方式,攻击者通过在网页中插入恶意脚本,来窃取用户信息或破坏网页内容1

5、SQL 注入攻击(SQL injection)

SQL 注入攻击(SQL Injection),是攻击者在表单中提交精心构造的 sql 语句,改动原来的 sql 语句,如
果 web 程序没有对提交的数据经过检查,那么就会造成 sql 注入攻击。

1、攻击者访问有 SQL 注入漏洞的站点,寻找注入点
2、攻击者构造注入语句,注入语句和程序中的 SQL 语句结合生成新的 sql 语句
3、新的 sql 语句被提交到数据库中执行 处理
4、数据库执行了新的 SQL 语句,引发 SQL 注入攻击

SQL 注入因为要操作数据库,所以一般会查找SQL 语句关键字:

insert、delete、update、 select

查看传递的变量参数是否用户可控制,有无做过安全处理,可以使用参数化查询防范

6、跨网站请求伪造攻击(Cross Site Request Forgeries, CSRF)

跨站请求伪造攻击,是攻击者伪造一个恶意请求链接,通过各种方式让正常用户访问后,
会以用户的身份执行这些恶意的请求。我们应该对比较重要的程序模块,比如修改用户密码,添 加用户的功能进行审查,检查有无使用一次性令牌防御
csrf 攻击。

7、Session 会话劫持(Session Hijacking)

会话劫持是指攻击者利用各种手段来获取目标用户的 session id。一旦获取到 session id,那么攻击者可以利用目标用户的身份来登录网站,获取目标用户的操作权限。

服务端和客户端之间是通过 session(会话)来连接沟通。当客户端的浏览器连接到服务器后,服务器就会建立一个该用户的session。
每个用户的 session 都是独立的,并且由服务器来维护。 每个用户的 session是由一个独特的字符串来识别,成为session id。用户发出请求时,所发送的 http 表头内包含 session id 的值。
服务器使用 http 表头内的session id 来识别时哪个用户提交的请求。
session 保存的是每个用户的个人数据,一般的 web 应用程序会使用session 来保存通过验证的用户 账号和密码。在转换不同的网页时,如果需要验证用户身份,就是用 session内所保存的账号和密码来比较。
session 的生命周期从用户连上服务器后开始,在用户关掉浏览器或是注销时用户session_destroy 函数删除 session 数据时结束。如果用户在 20 分钟内没有使用计算机的动作,session也会自动结束。

8、Session 固定攻击(Session Fixation)

如果当权限级别改变时(例如核实用户名和密码后,普通用户提升到管理员),我们就应该
修改即将重新生成的会话 ID,否则程序会面临会话固定攻击的风险。

9、HTTP 响应拆分攻击(HTTP Response Splitting)

HTTP 响应拆分是由于攻击者经过精心设计利用电子邮件或者链接,让目标用户利用一个请求产生两个响应,前一个响应是服务器的响应,而后一个则是攻击者设计的响应。此攻击之所以会发生,是因为 WEB程序将使用者的数据置于 HTTP 响应表头中,这些使用者的数据是有攻击者精心设计的。
可能遭受 HTTP 请求响应拆分的函数包括以下几个:

header(); setcookie(); session_id(); setrawcookie();

注意
PHP 的高版本会禁止 HTTP 表头中出现换行字符,这类可以直接跳过本测试

10、文件上传漏洞(File Upload Attack)

PHP 文件上传通常会使用 move_uploaded_file,也可以找到文件上传的程序进行具体分析文章来源地址https://www.toymoban.com/news/detail-641263.html

防范方式:
使用白名单方式检测文件后缀
上传之后按时间能算法生成文件名称
上传目录脚本文件不可执行
注意%00截断

11、目录穿越漏洞(Directory Traversal)

12、远程文件包含攻击(Remote Inclusion)

13、动态函数注入攻击(Dynamic Variable Evaluation)

14、URL 攻击(URL attack)

15、表单提交欺骗攻击(Spoofed Form Submissions)

16、HTTP 请求欺骗攻击(Spoofed HTTP Requests)

到了这里,关于php代码审计,php漏洞详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • PHP代码审计——PHP中常见的敏感函数列表

    PHP代码审计——PHP中常见的敏感函数列表

          PHP中常见的敏感函数列表。       命令执行函数,执行一个外部程序,不显示输出。       命令执行函数,执行一个外部程序,显示输出。       命令执行函数,执行一个外部程序,显示原始输出。       通过shell 环境执行命令,并且将完整的输出以字符

    2024年02月02日
    浏览(11)
  • 【PHP代码审计】ctfshow web入门 php特性 93-104

    【PHP代码审计】ctfshow web入门 php特性 93-104

    这段PHP代码是一个简单的源码审计例子,让我们逐步分析它: include(\\\"flag.php\\\"); : 这行代码将 flag.php 文件包含进来。如果 flag.php 文件中定义了变量 $flag ,它将在当前文件中可用。 highlight_file(__FILE__); : 这行代码将会将当前文件的源代码进行语法高亮并输出到浏览器,以便我们

    2024年02月14日
    浏览(10)
  • java代码审计之SQL注入漏洞

    java代码审计之SQL注入漏洞

    开更文章了,开一个关于Java代码审计相关的系列。 本来是想写成一本书的模式的,但是越写越发觉,篇幅太多,想了下还是每个专题单独写,而后最后汇总到一起。 慢慢写,基于笔者的理解抒写,如有问题,忘斧正。 关于这个系列不会可能有些不会写修复方案,也不会写得特别细

    2024年02月19日
    浏览(12)
  • 代码审计-ASP.NET项目-未授权访问漏洞

    代码审计-ASP.NET项目-未授权访问漏洞

    代码审计必备知识点: 1、代码审计开始前准备: 环境搭建使用,工具插件安装使用,掌握各种漏洞原理及利用,代码开发类知识点。 2、代码审计前信息收集: 审计目标的程序名,版本,当前环境(系统,中间件,脚本语言等信息),各种插件等。 3、代码审计挖掘漏洞根本: 可控

    2024年02月12日
    浏览(8)
  • Java代码审计安全篇-SSRF(服务端请求伪造)漏洞

    Java代码审计安全篇-SSRF(服务端请求伪造)漏洞

    前言:  堕落了三个月,现在因为被找实习而困扰,着实自己能力不足,从今天开始 每天沉淀一点点 ,准备秋招 加油 注意: 本文章参考qax的网络安全java代码审计,记录自己的学习过程,还希望各位博主 师傅 大佬 勿喷,还希望大家指出错误 SSRF漏洞  SSRF(Server-side Request

    2024年03月15日
    浏览(11)
  • 干货分享 | 3分钟读懂漏洞扫描与代码审计的区别

    很多研发同学常常 将漏洞扫描与代码审计的概念混淆 。有些人认为代码审计就是漏洞扫描,也有些人认为做完漏洞扫描就不需要做代码审计了。今天我们就来讲讲代码审计与漏洞扫描的区别。 造成以上混淆的原因有以下几点: 工具的相似性 漏洞扫描和代码审计都是安全领

    2024年02月01日
    浏览(12)
  • 【代码审计篇】 代码审计工具Fortify基本用法详解

    【代码审计篇】 代码审计工具Fortify基本用法详解

    本篇文章讲解代码审计工具Fortify的基本用法,感兴趣的小伙伴可以研究学习一下,文中部分地方可能会有遗漏,麻烦各位大佬指正,深表感谢!!! Fortify全名叫 Fortify SCA ,是惠普公司HP的出品的一款源代码安全测试工具,这家公司也出品过另一款Web漏洞扫描器,叫做 Webin

    2024年02月05日
    浏览(7)
  • Java代码审计15之Apache log4j2漏洞

    Java代码审计15之Apache log4j2漏洞

    2.1、高版本测试 先说结论,ldap协议, rmi协议 还有就是“ “${jndi:rmi://127.0.0.1:7778/exp}” ” 2.2、测试代码 先引入组件, main.java jndiexp.java 2.3、补充之dns探测 2.3.1、rmi、ldap也可以dnslog探测 在使用dnslog探测漏洞的时候, 其实不仅仅dns协议可以,ldap和rmi协议也可以, 类似的rmi,

    2024年02月10日
    浏览(15)
  • 【代码审计-.NET】基于.NET框架开发的代码审计

    【代码审计-.NET】基于.NET框架开发的代码审计

      博主:网络安全领域狂热爱好者(承诺在CSDN永久无偿分享文章)。 殊荣:CSDN网络安全领域优质创作者,2022年双十一业务安全保卫战-某厂第一名,某厂特邀数字业务安全研究员,edusrc高白帽,vulfocus、攻防世界等平台排名100+、高校漏洞证书、cnvd原创漏洞证书等。 擅长:对

    2024年02月04日
    浏览(12)
  • 代码审计——XSS详解

    代码审计——XSS详解

    跨站脚本攻击(Cross Site Script)是一种将恶意JavaScript代码插入到其他Web用户页面里执行以达到攻击目的的漏洞。 攻击者利用应用程序的动态展示数据功能,在html页面里嵌入恶意代码。当用户浏览该页之时,这些嵌入在html中的恶意代码会被执行,用户浏览器被攻击者控制,从

    2024年02月10日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包