DVWA学习笔记
Security Level: LOW
暴力破解(Brute Force)
?
已知用户名,尝试使用burp爆破密码
随意输入一个密码,将其发送至burpsuit intruder
导入一个字典(在实际生产中需要强大的社会工程学字典)进行暴力破解
一般情况下,不难看出长度不同的即为正确密码
?
命令注入(Command Injection)
Command Injection,即命令注入,是指通过提交恶意构造的参数破坏命令语句结构,从而达到执行恶意命令的目的。PHP命令注入攻击漏洞是PHP应用程序中常见的脚本漏洞之一。和RCE不同,命令注入执行的是一个命令,而RCE是执行代码。
当应用需要调用一些外部程序去处理内容的情况下,就会用到一些执行系统命令的函数。如PHP中的system,exec,shell_exec等,当用户可以控制命令执行函数中的参数时,将可注入恶意系统命令到正常命令中,造成命令执行攻击。
Command Injection Source
vulnerabilities/exec/source/low.php
<?php
?
if( isset( $_POST[ 'Submit' ] ) ) {
// Get input
? ?$target = $_REQUEST[ 'ip' ];
//stristr() 函数搜索字符串在另一字符串中的第一次出现。
//php_uname( 's' ) 获取系统类型
// Determine OS and execute the ping command.
? ?if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
? ? ? ?// Windows
? ? ? ?$cmd = shell_exec( 'ping ' . $target );
? }
? ?else {
// *nix
? ? ? ?$cmd = shell_exec( 'ping -c 4 ' . $target );
? }
// Feedback for the end user
? ?echo "<pre>{$cmd}</pre>";
}
?>
服务器只判断操作系统的类型,没有对IP这个参数进行过滤,这就导致了命令注入。
php_uname(mode)这个函数会返回运行php的操作系统的相关描述,参数mode可取值”a” (此为默认,包含序列”s n r v m”里的所有模式),”s ”(返回操作系统名称),”n”(返回主机名),” r”(返回版本名称),”v”(返回版本信息), ”m”(返回机器类型)。用逻辑运算符连接系统命令即可。
在输入框输入127.0.0.1 && dir即可
?
|