0x01 起因及想法

起因:好久没更新博客了,我在乌云社区看到一篇代码审计的整体学习思想如下:

学习代码审计目标:能独立完成对一个CMS代码安全的监测

思路:

A、通读全文代码,从功能函数代码开始阅读,例如include文件夹下的comm_fun.php,或者类似关键字的文件。

B、看配置文件,带有config关键字的文件,找到mysql.class.php文件的connect()函数,查看在数据库连接时是否出现漏洞。

C、跟读首页文件,了解程序运行时调用那些函数和文件,以首页为基线,一层层去扩展阅读所包含的文件。

0x02 命令注入学习

形成原因:对一些危险函数没有做过滤。

相关函数:system()、exec()、passthru()、‘‘反引号、shell_exec()、popen()、proc_open()等等。

0x03 利用演示

由于用法差不多,这里以system()为例进行演示。

演示代码:

查看权限:

添加用户:

写入一句话菜刀连接:

其他利用在自行摸索。

0x04 防护

PHP中命令注入攻击漏洞带来的危害和影响很严重。防范命令注入攻击漏洞的存在可以通过以下几种方法。

1.、尽量不要执行外部的应用程序或命令。

2.、使用自定义函数或函数库实现外部应用程序或命令的功能。

3、 在执行system、eval等命令执行功能的函数前,确定参数内容。

4、escapeshellcmd()函数会转义命令中的所有shell元字符来完成工作。这些元字符包括:#&;`,|*?~<>^()[]{}$\\。例如写入一句话可被过滤 ,所以命令无法执行成功,无法生成一句话文件。

5、使用escapeshellarg函数处理相关参数。Escapeshellarg函数会将任何引起参数或命令结束的字符进行转义,如单引号“’”会被转义为“\’”,双引号“””会被转义为“\””,分号“;”会被转义为“\;”,这样escapeshellarg会将参数内容限制在一对单引号或双引号里面,转义参数中所包含的单引号或双引号,使其无法对当前执行进行截断,实现防范命令注入攻击的目的。

6、使用safe_mode_exec_dir执行可执行的文件路径。将php.ini文件中的safe_mode设置为On,然后将允许执行的文件放入一个目录中,并使用safe_mode_exec_dir指定这个可执行的文件路径。这样,在需要执行相应的外部程序时,程序必须在safe_mode_exec_dir指定的目录中才会允许执行,否则执行将失败。

转载于:https://www.cnblogs.com/ECJTUACM-873284962/p/8039218.html

代码审计:命令注入学习相关推荐

  1. 命令注入_命令注入绕过方式总结 (20210111学习笔记)

    前言 命令注入是web中常见的漏洞之一,由于web应用程序未对用户提交的数据做严格的过滤,导致用户输入可以直接被linux或windows系统当成命令执行,一般都会造成严重的危害. 常用符号 分号(; ...

  2. CTF之web学习记录 -- 命令注入

    命令注入 概述 常见攻击方式 使用管道符号 escapeshellarg和escapeshellcmd 无参RCE 模板注入 命令执行漏洞修复 总结 概述   web服务器后端代码有时会调用一些执行系 ...

  3. SQL注入学习资料总结

    什么是SQL注入 SQL注入基本介绍 结构化查询语言(Structured Query Language,缩写:SQL),是一种特殊的编程语言,用于数据库中的标准数据查询语言.1986年10月,美国国 ...

  4. php如何检测在另一台设备登录怎么做_如何使用Metasploit的Web Delivery Script和命令注入弹出Shell(翻译)...

    Web交付概述 Metasploit包含一个有用的模块,它在你的的设备上创建的服务器上承载一个负载.一旦目标设备连接到服务器并执行负载,就会运行web交付脚本.这个模块是通用的,因为它可以面向Pyth ...

  5. 【安全漏洞】Cisco命令注入漏洞CVE-2021-1414分析

    概述 最近关注了Cisco的一个命令注入漏洞CVE-2021-1414,命令注入之后可导致远程代码执行: 漏洞存在于固件版本低于V1.0.03.21的RV340系列路由器中,当前最新版本V1.0.03 ...

  6. 【CyberSecurityLearning 59】OS命令注入

    目录 OS命令注入 原理以及成因 漏洞危害 相关函数 1.system() 2. exec() 3.shell_exec()  应用最广泛 4.passthru() 5.popen() 6.反引号 漏 ...

  7. 对开源库 limdu 命令注入漏洞 (CVE-2020-4066) 的简要分析

     聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 开源库Limdu 的 trainBatch 函数中存在一个命令注入漏洞 (CVE-2020-4066). Limdu 是 Node.j ...

  8. 关于命令注入的一些介绍

    勤学以增智,修德以立身, 明辨以正心,笃实以为公. 平常以博客的形式来记录自己的笔记,因为学了IT以后才知道,这可不是抖音上vbs,bat那么easy,不是喊喊口号就能热血沸腾,所以平常学习的时间还是 ...

  9. php代码审计命令执行,PHP代码审计笔记--命令执行漏洞

    命令执行漏洞,用户通过浏览器在远程服务器上执行任意系统命令,严格意义上,与代码执行漏洞还是有一定的区别. 0x01漏洞实例 例1: $target=$_REQUEST['ip']; $cmd = sh ...

最新文章

  1. oracle11g的安装
  2. python图像分割算法_Opencv(二)—图像分割之分水岭算法!
  3. 信息服务器怎么填写,如何设定服务器信息
  4. 【★】假如人类使用16进制
  5. WIN10 查看已经连接的wifi的密码
  6. 算法有偏见?总比人类识别强吧!
  7. 使用EmBitz开发STM32项目开发环境配置
  8. 什么是大数据,大数据到底应该如何学?
  9. Kaggle新赛:自动检测赛场上的头盔撞击事件
  10. 如何做思维导图?用这两个软件就可以了
  11. 咨询博客园文章如何维权
  12. (转载)消息队列详解
  13. 霍纳法则c语言算法代码,霍纳法则(Horner Rule)介绍及C语言实现
  14. 王者荣耀服务器维护多久结束,王者荣耀健康系统重置时间 时间限制规则详解...
  15. python word修改神器docxtpl
  16. Tiled结合Unity实现瓦片地图——Unity实战篇
  17. 一文了解边缘计算和边缘AI
  18. 数据库为啥查询那么慢?
  19. php微信访问,PHP开发之判断微信浏览器访问
  20. Navicat如何显示导航窗格

热门文章

  1. android6.0原生brower_Android Browser学习一 application的初始化
  2. python画数学函数_Python 绘制你想要的数学函数图形 !
  3. linux删除eth2设备_Linux卸载/删除多余网卡
  4. 在C / C ++中使用INT_MAX和INT_MIN
  5. adalm pluto_Apache Pluto和Velocity集成教程示例
  6. [msi]获取msi安装包的ProductCode
  7. 开课吧:深入了解C++和C语言的血缘关系
  8. Java常见面试题:Oracle JDK 和 OpenJDK 的区别?
  9. 这些Java面试题,你一定要记住!
  10. 基于mykernel的时间片轮转调度