일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 삼성SDS
- 버그바운티
- bugcamp
- #bWAPP #모의해킹 #웹해킹
- #DVWA #XSS #Stored XSS #웹해킹 #모의해킹
- #DVWA #CSRF #웹해킹 #모의해킹
- #webhacking #모의해킹 #웹해킹
- bugbounty
- hackingzone
- 해킹존
- zerowhale
- Today
- Total
AIAS
[bWAPP] PHP Injection (Level - Low) 본문
PHP Injection?
PHP 스크립트 문법이 취약하게 구성되어있을 경우 공격자가 취약한 PHP 기능을 악용하여 내부 정보를 탈취할 수 있다.
해당 실습에서는 PHP 문법 중 문자열을 출력해주는 echo문이 message값을 참조하는데 참조하는 값에 화이트리스트 기반의 필터링이 이루어지지 않아 message 값을 시스템 명령을 통해 내부 시스템의 정보를 탈취할 수 있다.
실습환경
- bWAPP (buggy Web APPlication)
: OWASP 취약점이 주로 반영된 모의해킹 실습 환경
PHP Injection (Level - Low)
PHP 소스를 확인해보면 Request에 message 변수에 "message"라는 문자열을 echo문을 통해서 출력해주는 것을 확인할 수 있다.
GET 방식으로 Request하기에 URL 값에 system 명령어를 통해서 시스템 계정정보를 포함하고 있는 /etc/passwd 파일을 출력하도록 변조하였다.
: system("cat /etc/passwd")
Requset 값에 대해서 보안 필터링이 이루어지고 있지 않기때문에 echo구문을 통해서 시스템 내부파일이 노출되었다.
PHP Injection (Level - Medium, High)
Medium과 High레벨의 경우 $_REQUEST로 입력 받는 message값에 htmlspecialchars을 적용 시켜 특수문자가 HTML 엔티디로 변환되어 태그가 인식되지 않아 취약점이 발생하지 않는다.
// PHP Injection 취약점 유무 파악만을 위해서는 간단한 구문을 통해서 테스트해볼 수 있다.
: /phpi.php?message=message;phpinfo();
대응방안
echo로 출력해주는 값이 고정 값일 경우 Request로 받지않고 [echo "message"] 형식으로 출력해주거나 Request로 받는 경우가 많지 않을 경우 화이트리스트 방식으로 필터링해주는 것이 가장 안전하다.
그러나 필요에 의해 사용자의 Request 값이 필요한 경우 특수문자 필터링이 이루어져 불필요한 명령어가 입력되지 않도록 조치해야한다.
'WEB > bWAPP' 카테고리의 다른 글
[bWAPP] Insecure DOR - Order Tickets (Level - Low, Medium) (0) | 2020.12.04 |
---|---|
[bWAPP] Session Mgmt - Admin Portal (Level - Low, Medium) (0) | 2020.12.04 |
[bWAPP] HTML Injection - Current URL (Level - Low) (0) | 2020.12.03 |
[bWAPP] HTML Injection (Level - Low, Medium) (0) | 2020.12.03 |