注意:仅用于本人学习的笔记记录,禁止进行传播分享,一旦造成严重后果与本人无关!!!
一、命令执行漏洞原理
代码执行:用户输入的数据当做后端代码执行<?php eval($_REQUEST[8])? >
命令执行:用户输入的数据当做系统命令执行[cmd命令 shell/bash命令]
共生关系:
代码执行的时候可以通过调用命令执行的函数来达到命令执行的效果
命令执行也可以写文件得到一句话木马,来达到代码执行的效果
区分方式:真正第一次执行代码所用的函数
二、造成命令执行函数解析
1、system函数
自动输出、且多行执行【&url编码%26】,传参的时候传入的数据是否会被曲解
2、exec函数
手动输出,需要echo输出,只能输出单行
可以直接写一句话木马,或者将内容直接写入文件中[ systeminfo > 1.txt ]
3、shell_exec()
手动输出多行
4、passthru()
自动输出,输出多行,和system一样
5、反引号(`)
在php中是shell_exec的简写,手动输出echo(`whoami`)
6、popen(要执行的命令,参数)
$a = popen(`whoami`,`r`);echo fread($a,1024);
考虑情况:
1、代码审计的时候,里面什么函数是开发决定不是你决定
2、你想用的函数会不会被过滤被禁用【禁止使用】
php: disable_function配置文件中禁用
扩展内容:
1、webshell echo "<?php eval($_REQUEST[8])?>" > 123.php
2、反弹shell [把自己的cmd操作权限给别人]别人可以远程控制你的cmd/bash
木马写进入了,写不出后缀
1、找文件包含漏洞
2、绕过他的过滤[在命令行中用其他东西代替,就可以了]
=> 对cmd和bash的使用技巧