버그 형태
KorWeblog 1.6.2-cvs 버전의 "아이콘 보기" 기능 상에 존재하는 "디렉터리 이동" 버그
해당 버그의 재현 방법
http://[victim]/viewimg.php?
path=images.d/face/../../../../../../../&form=Com&var=faceicon
현재 구현 상 위와 같이 하는 경우 임의의 디렉터리의 파일 리스트를 파악 가능합니다.
수정 방안
viewimg.php 의 65행과 72행에서
$path 변수를 images.d/face 로 대체
> $img_file = KWL_GetFileName("$CONF
[G_PATH]/images.d/face");
> ...
> <IMG SRC=\"$CONF
[G_URL]/images.d/face/$img
> ...
파급 효과
물론 이 버그는 서버 침해에 이르는 심각한 버그는 아닙니다.
그러나 악의적인 공격자가 다른 웹 어플리케이션의 취약점을 이용하여 공격용 도구(php
스크립트 등)를 업로드한 경우, 이 도구를 업로드한 위치를 파악하는데 유용하게 사용
될 수 있습니다.
또한 디렉터리의 파일 리스트를 보고 운영 체제에 관한 정보를 수집할 수 있습니다.
--- viewimg-org.php 2004-09-21 13:08:15.000000000 +0900
+++ viewimg.php 2004-09-21 13:08:44.000000000 +0900
@@ -63,13 +63,13 @@
<TABLE BORDER="0" CELLSPACING="3" CELLPADDING="5" ALIGN="CENTER">
<TR>
<?
-$img_file = KWL_GetFileName("$CONF
[G_PATH]/$path");
+$img_file = KWL_GetFileName("$CONF
[G_PATH]/images.d/face");
$x = 0;
if (is_array($img_file)) {
foreach($img_file as $img) {
if (isset($fix)) $tmp = "$path/$img";
else $tmp = $img;
- echo "<TD ALIGN=CENTER><A HREF=\"javascript:pick('$tmp')
\"><IMG SRC=\"$CONF
[G_URL]/$path/$img\" BORDER=\"0\" VSPACE=\"5\" HSPACE=\"5\"
ALT=\"$img\"></A>\n";
+ echo "<TD ALIGN=CENTER><A HREF=\"javascript:pick('$tmp')
\"><IMG SRC=\"$CONF
[G_URL]/images.d/face/$img\" BORDER=\"0\" VSPACE=\"5\"
HSPACE=\"5\" ALT=\"$img\"></A>\n";
$x++;
if ($x==7 || isset($br)) { echo "</TR><TR>\n"; $x=0; }
}