代码审计:命令注入学习
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
代码审计:命令注入学习相关推荐
- 命令注入_命令注入绕过方式总结 (20210111学习笔记)
前言 命令注入是web中常见的漏洞之一,由于web应用程序未对用户提交的数据做严格的过滤,导致用户输入可以直接被linux或windows系统当成命令执行,一般都会造成严重的危害. 常用符号 分号(; ...
- CTF之web学习记录 -- 命令注入
命令注入 概述 常见攻击方式 使用管道符号 escapeshellarg和escapeshellcmd 无参RCE 模板注入 命令执行漏洞修复 总结 概述 web服务器后端代码有时会调用一些执行系 ...
- SQL注入学习资料总结
什么是SQL注入 SQL注入基本介绍 结构化查询语言(Structured Query Language,缩写:SQL),是一种特殊的编程语言,用于数据库中的标准数据查询语言.1986年10月,美国国 ...
- php如何检测在另一台设备登录怎么做_如何使用Metasploit的Web Delivery Script和命令注入弹出Shell(翻译)...
Web交付概述 Metasploit包含一个有用的模块,它在你的的设备上创建的服务器上承载一个负载.一旦目标设备连接到服务器并执行负载,就会运行web交付脚本.这个模块是通用的,因为它可以面向Pyth ...
- 【安全漏洞】Cisco命令注入漏洞CVE-2021-1414分析
概述 最近关注了Cisco的一个命令注入漏洞CVE-2021-1414,命令注入之后可导致远程代码执行: 漏洞存在于固件版本低于V1.0.03.21的RV340系列路由器中,当前最新版本V1.0.03 ...
- 【CyberSecurityLearning 59】OS命令注入
目录 OS命令注入 原理以及成因 漏洞危害 相关函数 1.system() 2. exec() 3.shell_exec() 应用最广泛 4.passthru() 5.popen() 6.反引号 漏 ...
- 对开源库 limdu 命令注入漏洞 (CVE-2020-4066) 的简要分析
聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 开源库Limdu 的 trainBatch 函数中存在一个命令注入漏洞 (CVE-2020-4066). Limdu 是 Node.j ...
- 关于命令注入的一些介绍
勤学以增智,修德以立身, 明辨以正心,笃实以为公. 平常以博客的形式来记录自己的笔记,因为学了IT以后才知道,这可不是抖音上vbs,bat那么easy,不是喊喊口号就能热血沸腾,所以平常学习的时间还是 ...
- php代码审计命令执行,PHP代码审计笔记--命令执行漏洞
命令执行漏洞,用户通过浏览器在远程服务器上执行任意系统命令,严格意义上,与代码执行漏洞还是有一定的区别. 0x01漏洞实例 例1: $target=$_REQUEST['ip']; $cmd = sh ...
最新文章
- oracle11g的安装
- python图像分割算法_Opencv(二)—图像分割之分水岭算法!
- 信息服务器怎么填写,如何设定服务器信息
- 【★】假如人类使用16进制
- WIN10 查看已经连接的wifi的密码
- 算法有偏见?总比人类识别强吧!
- 使用EmBitz开发STM32项目开发环境配置
- 什么是大数据,大数据到底应该如何学?
- Kaggle新赛:自动检测赛场上的头盔撞击事件
- 如何做思维导图?用这两个软件就可以了
- 咨询博客园文章如何维权
- (转载)消息队列详解
- 霍纳法则c语言算法代码,霍纳法则(Horner Rule)介绍及C语言实现
- 王者荣耀服务器维护多久结束,王者荣耀健康系统重置时间 时间限制规则详解...
- python word修改神器docxtpl
- Tiled结合Unity实现瓦片地图——Unity实战篇
- 一文了解边缘计算和边缘AI
- 数据库为啥查询那么慢?
- php微信访问,PHP开发之判断微信浏览器访问
- Navicat如何显示导航窗格
热门文章
- android6.0原生brower_Android Browser学习一 application的初始化
- python画数学函数_Python 绘制你想要的数学函数图形 !
- linux删除eth2设备_Linux卸载/删除多余网卡
- 在C / C ++中使用INT_MAX和INT_MIN
- adalm pluto_Apache Pluto和Velocity集成教程示例
- [msi]获取msi安装包的ProductCode
- 开课吧:深入了解C++和C语言的血缘关系
- Java常见面试题:Oracle JDK 和 OpenJDK 的区别?
- 这些Java面试题,你一定要记住!
- 基于mykernel的时间片轮转调度