一.Brute_Force(爆破)
①Brute_Force——low、medium
low、medium可直接通过burpsuite密码爆破,攻击类型为集束炸弹,账号密码直接添加也准备好的社工库。
②Brute_Force——High
将DVWA调至high级别,发现用之前的暴力破解就不好使了,因为其使用了随机token机制来防止CSRF,从而在一定程度上防止了重放攻击,增加了爆破难度。但是依然可以使用burpsuite来爆破。
强调一下,这里直接使用burpsuite的前提是在知道攻击者账号的情况下,使用音叉密码和token一一对应,爆破,若要不知道账号爆破,就应该采取自己写脚本破解获取token值绕过利用xss注入嵌入脚本图片,读取页面,获取token,再进行密码爆破(个人理解)。
1. 将登录请求进行拦截,发现增加了user_token参数,所以爆破要选择两个参数来进行,先将请求发送到intruder(测试器)。
2.攻击模式选择Pitchfork(音叉),清除所有变量,并分别添加&password、&user_token的值为变量,然后进入有效载荷
3.分别在有效负载集1 的列表单添加(add)密码社工库,手动添加也可以,点击进入选项。
4.将线程数设置为1
5.将关注重定向(Redirections)设置为总是(Always)
6.在Grep-Extract中,点击Add添加,意思是用于提取响应消息中的有用信息,进入下一页面。
7.首先点击获取回复,记下来就会浮现出html代码,查找所要索取的token值,选取标红,并复制,完事点ok。
8.回到有效载荷界面,如图步骤操作。
9.在爆破结束后,可以按照长度排列,发现,2行的密码为password最为显眼,经验证,密码正确。
二.Command Injection (命令行注入)
命令连接符”&&“,”&“,”||“,”|“的区别:
命令1”&&“命令2 命令1执行成功的条件下才会执行命令2
命令1”&“命令2 命令1执行无论成功与否都会执行命令2
命令1”||“命令2 命令1执行失败的条件下才会执行命令2
命令1”|“命令2 “|”是管道符,表示将命令1的输出作为命令的输入,并且只打印命令2执行的结果。
①Command Injection——Low
源代码:
<?php
if( isset( $_POST[ 'Submit' ] ) ) {
// Get input
$target = $_REQUEST[ 'ip' ];
// 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>";
}
?>
漏洞利用
由代码可知,没有对命令连接符的过滤,因此可以使用“&&","&","||","|"符号来连接命令。
命令:127.0.0.1&& echo 123
②Command Injection——Medium
源代码:
<?php
if( isset( $_POST[ 'Submit' ] ) ) {
// Get input
$target = $_REQUEST[ 'ip' ];
// Set blacklist
$substitutions = array(
'&&' => '',
';' => '',
);
// Remove any of the charactars in the array (blacklist).
$target = str_replace( array_keys( $substitutions ), $substitutions, $target );
// 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>";
}
?>
相比Low级别的代码,服务器端对ip参数做了一定过滤,即把"&&",";"删除,本质上采用的是黑名单机制,因此依旧存在安全问题。
漏洞利用
因为被过滤的只有"&&"与" ;",所以"&","|","||"的使用并不会受影响。命令:127.0.0.1& echo 123
③Command Injection——High
源代码:
<?php
if( isset( $_POST[ 'Submit' ] ) ) {
// Get input
$target = trim($_REQUEST[ 'ip' ]);
// Set blacklist
$substitutions = array(
'&' => '',
';' => '',
'| ' => '',
'-