웹/웹 보안

PentesterLab 2

비니화이팅 2020. 3. 8. 17:10

 

SQL Injection

 

Example 1 (MAKE IT TRUE)


PoC

 



Example 2 (LIMIT-MAKE IT TRUE)


PoC


limit 함수

반환되는 출력수를 제한하는 함수임

반환 행 수 제한 우회
사용자 로그인 시, 쿼리에서 반환되는 사용자가 1명이도록 소스코드에서 제한하는 경우가 있음
limit 함수를 사용하면 반환되는 행 수를 제한할 수 있으므로 이를 이용하면 됨




Example 3 (ESCAPE-MAKE IT TRUE)


Hint

싱글 쿼터를 입력해도 에러 메세지가 반환되지 않음


PoC


Normal Query

SELECT * FROM users WHERE username='root' AND password='qwer';


Injection Query

SELECT * FROM users WHERE username='\' AND password=' or 1=1 #';

싱글 쿼터 우회

이스케이프를 이용하여 싱글 쿼터를 제거


이스케이프 문자(\)

특정 문자 앞에 붙여 정의되어 있는 원래의 의미를 벗어나게 해주는 문자




Example 4 (MAKE IT TRUE)

http://192.168.30.130/sqlinjection/example4/?req=username%3d%27hacker%27

Docde URL = http://192.168.30.130/sqlinjection/example4/?req=username='hacker'


Hint


PoC

http://192.168.30.130/sqlinjection/example4/?req=username='' or 1=1#

http://192.168.30.130/sqlinjection/example4/?req=1=1


Normal Query

SELECT * FROM users WHERE username='root';


Injection Query

SELECT * FROM users WHERE username='\' AND password=' or 1=1 #'




Example 5 (LIMIT-UNION)

http://192.168.30.130/sqlinjection/example5/?limit=3


Hint


PoC

http://192.168.30.130/sqlinjection/example5/?limit=3 union all select * from users


union과 union all차이

union은 중복되는 레코드를 제거하지만,

union al의 경우에는 별도의 중복 제거 과정을 거치지 않음

limit 함수 우회

union을 사용하면 됨

풀이와 상관 없는 참고 (그냥 갑자기 궁금해서 찾아본 거)

order by 다음에 limit 절 사용해야 함 (반대로 사용 불가)




Example 6 (GROUP BY, UNION)

http://192.168.30.130/sqlinjection/example6/?group=username


Hint


PoC

http://192.168.30.130/sqlinjection/example6/?group=username union all select * from users

http://192.168.30.130/sqlinjection/example6/?


group by 절

테이블 select 조회시 결과를 그룹으로 묶어서 가져옴

SELECT column FROM table GROUP BY column

해당 컬럼의 값에 따라 데이터를 그룹 짓고 중복된 열을 제거함

group by 우회

union을 사용하면 됨




Example 7 ()

http://192.168.30.130/sqlinjection/example7/?id=1


Hint


PoC

http://192.168.30.130/sqlinjection/example7/?




Example 8 ()


PoC




Example 9  ()


PoC




Authentication(인증)

 

Example 1 (BASIC AUTHENTICATION)


PoC

 



Example 2 (BASIC AUTHENTICATION)

 

PoC


HTTP의 인증방식

BASIC, DIGEST, SSL Client, Form Base


기본 인증

1. 요청 (GET)

2. WWW-Authenticate (401 Unauthorized)

3. Authorization(GET)

4. Authentication-Info


401 응답을 받은 클라이언트는 아이디:비밀번호를 Base64방식으로 인코딩해서 Authorization 헤더 필드에 포함하여 송신함

암호화를 하지 않기 때문에 복호화가 쉬운 특징이 있음




Example 3 (COOKIE)


PoC




Example 4 (COOKIE-MD5)


PoC

 



Example 5 (REGISTER)


Hint


PoC


Register 우회

웹에서는 사용자 생성시 대소문자를 구분하지만 MySQL은 대소문자를 구분하지 않는데, 이를 이용해서 우회하면 됨




Example 6 (REGISTER)


Hint

 

PoC


Register 우회

웹에서는 공백을 무시하지 않지만 MySQL은 공백을 무시하는데, 이를 이용하여 우회하면 됨






Captcha

 

Example 1 (AUTHENTICATION)


PoC




Example 2 (SOURCE CODE-AUTHENTICATION)


PoC

Step 1) 소스코드에서 hidden값으로 captcha가 넘어가는 것을 확인함


Step 2) Step1에서 얻은 captcha값을 입력함

 



Example 3 (COOKIE-AUTHENTICATION)


PoC

Step 1) Cookie값으로 captcha가 인코딩되어 넘어가는 것을 확인함


Step 2) Step1에서 얻은 captcha값을 입력함




Example 4


PoC



Example 5


PoC



Example 6


PoC



Example 7


PoC



Example 8


PoC



Example 9 


PoC






Authorization(인가)

 

Example 1 (VERTICAL ESCALATION)

Step 1) user1 계정으로 로그인함


Step 2) user1 계정만 접근할 수 있는 글들을 확인함


Step 3) Confidention가 제목인 글을 확인함


PoC

step 1) 로그인하지 않은 상태임


step 2) user1 계정의 비밀글 url로 접속하면 user1 계정의 비밀글 확인이 가능함




Example 2 (HORIZONTAL ESCALATION)

Step 1) user1 계정으로 로그인함


Step 2) user1 계정만 접근할 수 있는 글들을 확인함


Step 3) Confidential user1 (2) 가 제목인 글을 확인함


PoC

step 1) user1 사용자로 로그인한 상태임


Step 2) user1 계정의 비밀글 url에서 글을 구분하는 번호를 바꿔주면 user 2 계정의 비밀글 확인이 가능함

 



Example 3 (HORIZONTAL ESCALATION)

Step 1) user1 계정으로 로그인함


Step 2) user1 계정만 접근할 수 있는 글들을 확인함


Step 3) Confidential user1 (2) 가 제목인 글을 확인함


Step 4) Edit this info 버튼을 눌러 글 수정 페이지를 확인함


PoC

step 1) user1 사용자로 로그인한 상태임


Step 2) user1 계정의 글 수정 페이지의 url에서 글을 구분하는 번호를 바꿔주면 user 2 계정의 글 수정 페이지로 접근이 가능함

 





Mass Assignment

 

Example 1CHANGE PARAMETER-REGISTER)


hint


PoC




Example 2 (CHANGE PARAMETER-REGISTER)

 

PoC

Step 1) 등록한 test계정으로 로그인한 상태임


Step 2) 프로필 변경 페이지로 들어감


Step 3) user[admin]=1 파라미터를 추가함




Example 3 (CHANGE PARAMETER-INFORMATION)


PoC

Step 1) user1 계정으로 로그인함


Step 2) Company 1 정보를 확인함


Step 3) user[company_id]=2 파라미터를 추가함

 






TIP
아래와 같은 에러 페이지가 나올 경우 메모리 크기 늘려주면 됨







[참고]

asciitable.com

regexr.com

convertstring.com

md5hashgenerator.com




     : 의문


     : 모르는 문제