命令执行漏洞
程序员文章站
2022-05-26 07:51:07
...
先来查看一下dvwa中命令执行漏洞源码:
<?php
if( isset( $_POST[ 'submit' ] ) ) {
$target = $_REQUEST[ 'ip' ];//对输入没有任何过滤
// Determine OS and execute the ping command.
if (stristr(php_uname('s'), 'Windows NT')) {
// 这句话说明操作系统是windows
$cmd = shell_exec( 'ping ' . $target );
echo '<pre>'.$cmd.'</pre>';
} else {
$cmd = shell_exec( 'ping -c 3 ' . $target );//linux系统ping3次·
echo '<pre>'.$cmd.'</pre>';
}
}
?>
stristr() 函数搜索字符串在另一字符串中的第一次出现。
php_uname() 返回了运行 PHP 的操作系统的描述。php_uname(‘s’)返回操作系统名称。
shell_exec():通过shell执行命令并将完整输出作为字符串返回。
exec():执行外部命令,可以传递一个可选变量,用于接收一组输出行。
命令执行漏洞利用原理:
无论是windows系统还是linux系统都可以通过&&执行多条命令。
连接符的使用:
command1 && command2:先执行command1,再执行command2
command1 & command2:两个命令同时执行,顺序先后不一定
command1 || command2:command1执行失败,执行command2
command1 | command2:只执行command2
1 在靶机上执行who命令:
在靶机上测试:
2 在靶机上执行ls:
| ls:只执行ls
ls:查看目标系统当前目录的内容