SongShuA

SongShuA

胸中梦黄粱,手握自在心 一个充满想法的网络安全从业人员 A person with dreams in their heart and the ability to control their own destiny, who is a creative professional in the field of cybersecurity.
github

久草CMS監査の記録

最近、暇なのでセキュリティ監査の練習をしようと思いました。

ずっと H サイトの運営モデルに興味があったので、H サイトのプログラムを対象にしました。

このような動画サイトのソースコードで有名なものは実際にはほとんどありません。以前はアップルとオーシャンもありましたが、今は国内での違法コピー対策で(地下に)移行したようです。だから、私は久草しか知りません。

正直言って、以前は久草も動画サイトのプログラムだと思っていましたが、巧妙に利用されているだけだと思いました。しかし、初めて公式のフォーラムを開いた時に驚きました。

公然とした ghs

1013745319

(この画像は公式のテンプレートです)

どうでもいい、ソースコードをダウンロードして監査を始めましょう。

最新バージョンをダウンロードしました。

1538000121.png

│─adminx //バックエンドディレクトリ
│─assets //バックエンドのスタイルシート
│─class //バックエンドのカテゴリ
│─Jccms_json //データの保存場所
│─JCSQL //ビデオデータ
│─lib //データモジュール
│─static //プレーヤーファイル
│─template //テンプレート
│─index.php //エントリーファイル

(公式の構造説明)

ソースコードを手に入れて、phpstudy に入れてみましたが、インストールディレクトリが見つかりませんでした。説明を見てみると、実際にはインストールする必要がないようです。これには疑問がわきました。インストールしないと、データはどこに保存されているのでしょうか?

ホームページに直接アクセスしてみると、ビデオなどが表示されることがわかりました。おそらくリモートから直接取得しているのでしょう(これにより、ビデオの保存問題も解決しました。小さな映画サイトがすべてのファイルをローカルに保存するわけがありません)。

それでは始めましょう。

まず、Seay Audit を使用して自動監査を行います。予め設定されたルールに従って、何も見逃さないはずです。

1511678838.png

まずは脆弱性を見つける必要があります。だから、まずはフロントエンドの脆弱性を探しましょう。このウェブサイトの性質から考えると、インタラクションはあまりないと思いますので、直接インジェクションを探しましょう。しばらく探してみると、このプログラム全体が SQL インジェクションに対して無防備であることがわかりました。

しかし、見つけた時にユーザー認証の方法を発見しました。

JCSQL/Admin/Security/AdminUser.php

このファイルにはユーザーのアカウントとパスワードが保存されており、データベースの役割を果たしています。テキスト形式で保存されているため、SQL インジェクションのリスクはありませんし、PHP 形式で存在するため、ダウンロードされることもありません。すばらしいですね。

34552043.png

次に、3 行目を見てみましょう。IP フィルタリングという名前です。

844944929.png

バックエンドにはこの機能があります。

では問題です。情報を変更すると、実際にはテキストが読み書きされます。そして、テキストは PHP 形式で保存されます。したがって、適切なペイロードを挿入すると、任意のファイルの読み書きが直接行われます。さて、もう一度見てみましょう。IPPASS の値

2823887452.png

いいですね、直接文字列が書き込まれています。他のセキュリティ関数はフィルタリングされていません。このプログラム自体にはフィルタリング関数があります。

クラシックな防御

3779957410.png

(他にも何か関数があるような気がしますが、記事を書く時に見つけられませんでした)

では、この任意のファイルの読み書きの脆弱性を利用してみましょう。目標は AdminUser.php ファイルです。まず、ブラウザでアクセスしてみて、403 などが表示されるかどうか確認しましょう。アクセス後、空白が表示される場合、任意のユーザーがアクセスできることを意味しますが、表示されるコンテンツはありません(コードは 3 行しかないので、表示するものはありません)。

バックエンドに戻り、ホワイトリストに私たちのペイロードを入力します。

コードの元の形式と組み合わせると、最初のシングルクォートを閉じ、私たちのコードを挿入し、後ろのシングルクォートと括弧を閉じる必要があります。

大まかに言えば、このような形式になります:');payload; //'127.0.0.1

例えば、ファイルに書き込みたい場合:

');$myfile = fopen ("1.txt", "w") ;$txt = "奥里给";fwrite ($myfile, $txt); //'127.0.0.1

書き込みが完了したら、AdminUser.php にアクセスしてコードを実行します。その後、同じディレクトリにある 1.txt にアクセスして「奥力给」を確認できます。

基本的にはこれで終わりです。この CMS は非常に小さく、構造がシンプルで巧妙なため、面白いことはありません。

最後に、リフレクション XSS を 1 つ紹介します。

自動監査で 3 つの XSS の疑わしいポイントが見つかりました。

3054470100.png

最初のものを見てみましょう。

3326636597.png

script の src に GET パラメータの Play が直接出力されていることがわかります。

同じように構築すればいいので、直接ペイロードを作成します。方法はたくさんあります。

このファイルにアクセスする際には、XXXX.PHP?Paly=payload というパラメータを追加するだけです。

 

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