Webセキュリティの研究ノート(6)コマンドが実行される脆弱性&&ファイルアップロードの脆弱性

0.はじめに

上記について話しましたかOWASPBWAの低いドローン、利用のセキュリティレベルでのファイルアップロードの脆弱性。この記事では、バイパスファイルのアップロード制限、高セキュリティのレベル、およびどのようにコマンドが実行される脆弱性を使用するに話す方法について説明します。

1.コマンドが実行される脆弱性

Webアプリケーションの一部は、たとえば、Webサイトの一部は、pingコマンドにいくつかのインタフェースを提供します、基礎となるオペレーティング・システム・コマンドを呼び出し、pingが周りの応答速度でサイトをテストするために使用:
ここに画像を挿入説明
に建てられた私たちのドローンで、同様の機能があります:
ここに画像を挿入説明
ユーザーコマンドボックスは、一定の時間のIPアドレスを入力すると、ソースコードを学習することができる表示する]をクリックし、システムが適切な速度をテストするには、pingコマンドを呼び出します。

<?php

if( isset( $_POST[ 'submit' ] ) ) {

    $target = $_REQUEST[ 'ip' ];

    // Determine OS and execute the ping command.
    if (stristr(php_uname('s'), 'Windows NT')) { 
        $cmd = shell_exec( 'ping  ' . $target );
        echo '<pre>'.$cmd.'</pre>';     
    } else { 
        $cmd = shell_exec( 'ping  -c 3 ' . $target );
        echo '<pre>'.$cmd.'</pre>';
    }
}
?>

入力baidu.comは、その後の引数は、オペレーティング・システム、「ピング-c 3 baidu.com」の実施を決定するbaidu.com $ターゲット、この時間は、渡されますとき。ここでは、非常に多くのSQLインジェクションのようなもので、SQLインジェクションでは、我々はXXXから書き込ま死SELECT XXXをmodify'veすることはできませんが、しかし、あなたは、いくつかの他の目的を達成するために、バックのパラメータを変更することができます。
コマンドが実行される脆弱性では、それは同じです。システム命令を操作する、2つの命令は、多くの場合、&&と結合することができます。コマンドボックスで、我々が入力した場合、baidu.com && LS:
ここに画像を挿入説明
次のようにオペレーティングシステム上で実行:

ping -c 3 baidu.com && ls

この脆弱性は、たとえば、私たちは/ etc / passwdファイル内のファイルをも見ることができ、非常に危険です。
ここに画像を挿入説明
もちろん、ほかに&& 2つのコマンドを接続することができ、&​​、|、||記号は、2つのコマンドが異なっている接続することができます異なる記号、異なる実行コマンドが接続されています。

command A && command B #先执行A命令再执行B命令
command A & command B  #先执行B命令再执行A命令
command A || command B #若A命令执行失败,执行B命令
command A | command B  #只执行B命令

2.ピクチャートロイの木馬

セキュリティのドローンハイレベルで、ファイルのアップロードページのソースコードを表示します。

File Upload Source
<?php
if (isset($_POST['Upload'])) {

            $target_path = DVWA_WEB_PAGE_TO_ROOT."hackable/uploads/";
            $target_path = $target_path . basename($_FILES['uploaded']['name']);
            $uploaded_name = $_FILES['uploaded']['name'];
            $uploaded_ext = substr($uploaded_name, strrpos($uploaded_name, '.') + 1);
            $uploaded_size = $_FILES['uploaded']['size'];

            if (($uploaded_ext == "jpg" || $uploaded_ext == "JPG" || $uploaded_ext == "jpeg" || $uploaded_ext == "JPEG") && ($uploaded_size < 100000)){


                if(!move_uploaded_file($_FILES['uploaded']['tmp_name'], $target_path)) {
                    
                    echo '<pre>';
                    echo 'Your image was not uploaded.';
                    echo '</pre>';
                
                  } else {
                
                    echo '<pre>';
                    echo $target_path . ' succesfully uploaded!';
                    echo '</pre>';
                    
                    }
            }
            
            else{
                echo '<pre>';
                echo 'Your image was not uploaded.';
                echo '</pre>';
            }
        }
?>

可以发现,在高安全级别下,代码不仅仅对文件名做了限制(最后一个.的后面应该为jpg或jpeg), 并且用函数move_uploaded_file()对上传文件的合法性做了判断。
因此,为了绕过这一设定,我们可以构建一个图片木马。
首先,讲文件的命名改为shell.jpg,再使用二进制编辑文件进行编辑,插入jpg文件头特征码:ff d8 ff
ここに画像を挿入説明
此时上传文件,发现文件上传成功。
ここに画像を挿入説明
虽然成功将恶意代码上传,但是是否可以达到目的,还需要从以下的角度考虑:

3.web容器解析漏洞

3.1 IIS解析漏洞

在IIS 6.0版本中,存在两种解析漏洞
1.当建立*.asa或 .asp 文件夹下,目录下的任意文件文件都会被当作asp文件进行解析。也就是说,如果我们可以讲shell.jpg上传到asp文件夹下,就可以被解析执行,那么我们也就可以通过蚁剑进行连接了。
2.当文件名为*.asp;xxx.jpg时,IIS6.0 同样会以asp脚本来执行,也就是说,如果我们发现服务器的web容器为IIS6.0时,重命名脚本为xxx.asp;xxx.jpg时,上传成功后,恶意脚本就会被解析,拿到控制权了。

3.2 Apache解析漏洞

在Apache 1.X 何 Apache 2.x 中同样存在解析漏洞。但是与IIS 6.0的解析漏洞不同,Apache在解析文件时,会按照从后往前进行识别。比如我们在windows环境下,看到一个文件的后缀为xxx.txt,那么就认为他是一个文本文件,但是在Apache中,Apache如果发现最后的后缀不认识,那么就会从后往前解析。例如文件shell.php.xxx Apache不认识后缀xxx,那么就会当作php文件进行解析。具体的Apache认识哪些后缀,linux环境下可以在/etc/mime.types查看
ここに画像を挿入説明

他のアイデア4.ファイルアップロードの脆弱性

我々は先に述べたように、サーバーのコマンド実行の脆弱性部分があります。私たちは、ファイルにより、この脆弱性をアップロードするファイルをアップロードして、コマンドが実行される脆弱性があることができれば、限り、我々はファイルのアップロードへのパスを知っているように、あなたは裁判官バイパスへのアップロード、およびコマンドが実行される脆弱性の利用、ファイル拡張子を変更することができます.PHPそれは解析され、接続することができます。

リリース8元の記事 ウォン称賛10 ビュー4231

おすすめ

転載: blog.csdn.net/qycc3391/article/details/104534142