본문 바로가기

웹해킹/webhacking.kr

webhacking.kr old 52번 문제풀이(Writeup) http 헤더 인젝션 문제.

반응형

webhacking.kr old 52번 문제풀이(Writeup)

old 52번 문제풀이 1

문제를 들어가면 위와 같이 출력된다. admin page에 로그인하면 문제가 풀린다.

 

old 52번 문제풀이 2

admin page를 누르니 바로 로그인 창이 나온다. 혹시 해서 guest 계정으로 로그인 후 쿠키를 봤는데 쿠키로 푸는 문제는 아니었다. 취소를 누르니 view-code가 나와서 코드를 확인했다.

 

old 52번 문제풀이 3

 

 

old 52번 문제풀이 4

프록시를 눌러보니 request와 response가 나온다.  여기까지가 문제 사이트를 확인해본 결과이다. 이제 문제를 풀어보자.

먼저 코드를 살펴보면, id가 admin이고, 주소가  172.17.0으로 시작해야 한다. 이후 웹 인증 개념에 대해서 알아야 한다.

 

이번 문제는 기본 인증 취약점을 통해 해결하는 문제이다. 코드에서 보면 pw는 md5로 암호화하기 때문에 공격이 어려울 것으로 보인다. 먼저 id를 타깃으로 해서 인증 우회를 시도했다.

 

old 52번 문제풀이 5
old 52번 문제풀이 6

SQL에서 로그인 인증 우회 때 사용하는 방식으로 주석 처리를 시키는 방법을 사용했다. 

 

old 52번 문제풀이 7

로그인이 되었다.  admin으로 로그인이 되었으니 이제 127.17.0 으로 접속하면 flag가 나올 것이다.

 

 

old 52번 문제풀이 8

admin 로그인이 되었으니, 다시 프록시 페이지로 와서 /admin/으로 접속을 시도했다. 당연히 안될 줄 알았고 Login Fail이 나왔다. IP가 아직 내 IP로 되어 있어서 접속이 안된다. 그래서 개행 문자를 넣어서 header 부분에서 injection을 시도했다.

2022.09.22 - [웹해킹/webhacking.kr] - webhacking.kr old 38번 문제풀이(Writeup) 및 Log Injection 설명

 

webhacking.kr old 38번 문제풀이(Writeup) 및 Log Injection 설명

webhacking.kr old 38번 문제 개요(Writeup) 문제를 들어가면 위와 같이 출력된다. 이번 문제는 Log Injection 문제이다. 문제를 풀기 전에 Log Injection이 무엇인지 알아보자. Log Injection이란? Log Injection은 사용

aiton.tistory.com

예전에 푼 log injection문제에서 힌트를 얻어왔다. 개행 문자는 % 0d%0a이다. header injection을 위해 먼저 Burp Suite에서 패킷 구성을 다시 확인했다.

 

 

old 52번 문제풀이 9

?page=/admin/ 공백 HTTP/1.1 개행

Host: webhacking.kr:10008개행

Cookie: admin 쿠키값 개행

User-Agent:

위와 같이 넣어줬다. 

 

 

?page=/admin/%20HTTP/1.1%0d%0aHost:%20webhacking.kr:10008%0d%0aCookie:%20PHPSESSID=lc9d5obr4805hama3hjhbmiqjm
%0d%0aConnection:%20Close%0d%0a%0d%0a

old 52번 문제풀이 10

flag가 출력되었다. 이번 문제는 생각보다 어려웠어서 공부가 많이 되었다.


웹 인증이란

클라이언트가 자신이 주장하는 사용자와 같은 사용자인지를 확인하는 과정. 유저가 누구인지 확인하는 절차이다. 따라서 id와 pw를 이용하여 인증을 주로 한다.

 

1) 기본 인증 Basic Authentication

이 방법은 base64로 인코딩한다지만, base64는 디코딩이 가능하기 때문에 패스워드를 직접적으로 보내는 것에 의하여 HTTPS/TLS 가 아닐 경우 감청당할 수 있는 보안 이슈가 있기 때문에, HTTPS/TLS를 사용하더라도 되도록이면 사용하지 않도록 권고되고 있다

 

2) NTLM 인증

NTLM(NT LAN Manager) 인증은 다이제스트 인증의 보다 안전한 변형인 시도/응답 스키마이다. NTLM에서는 Windows 자격 증명을 사용하여 인코딩 되지 않은 사용자 이름 및 암호 대신 시도 데이터를 변형한다. NTLM 인증의 경우 클라이언트와 서버 간 다중 교환이 필요한다. 서버 및 개입된 모든 프록시에서는 인증을 성공적으로 완료하기 위해 영구 연결을 지원해야 한다.

 

3) HTTP Digest 인증

HTTP Digest 인증 기법은 HTTP Basic 인증 기법의 보안 취약점을 개선하기 위한 인증 기법이다.

 

 

 

 


참고문헌

https://www.ssemi.net/basic-authentication/

https://girrr.tistory.com/57

https://dailylearn.tistory.com/91

 

 

728x90