SlowTurtle_

천천히 그러나 끝까지 완주

Webhacking-Write-Up/DVWA

DVWA(LOW) - Brute Force, Command Injection, CSRF

SlowTurtle_ 2023. 1. 16. 15:46
728x90

1. Brute Force - 무작위 대입 공격

우선 admin / 1234로 로그인을 해보았다. 실패시 아래와 같이 Username and/or password incorrect.가 뜬다.

URL이 http://localhost/DVWA-master/vulnerabilities/brute/?username=admin&password=1234&Login=Login 인 것을 보아 username과 password가 변수로 사용된다는 것을 알 수 있었다. 또한 GET방식으로 로그인이 진행됨을 알았다.

쿠키를 확인해 보니 로그인 정보가 PHPSESSID = r6u3d07vdmaj8onqa31fl98a43  인 것과 security = low로 설정했던 것을 확인 할 수 있었다.

Kali Linux에 dvwa를 구축하였기에  웹취약점점검도구로 THC hydra를 사용하여 무작위대입공격을 수행하여 취약한 계정이 있는지 시도해보았다. 우선 완성된 코드부터 보여주고 순서대로 나눠서 설명하겠다.

실행한 코드

hydra 127.0.0.1 http-form-get

dvwa구축한 IP 127.0.0.1 과 위에서 확인한 GET 메서드를 이용하여 HTTP Request를 전송하고 있음을 설정한다.

"/DVWA-master/vulnerabilities/brute/:username=^USER^&password=^PASS^&Login=Login:Username and/or password incorrect.

/DVWA~(중략)/brute/에 username=^USER^&password=^PASS^&Login=Login 에서 ^USER^와 ^PASS^는 username과 password이며 실패시 Username and/or password incorrect.를 출력하여 확인한다.

:H=Cookie: security=low;PHPSESSID=r6u3d07vdmaj8onqa31fl98a43"

보안 수준은 low 상태임과 로그인 한 사용자임을 서버에 전달해줘야하는데 이것을 Hydra에서는 H=Cookie: 쿠키이름=쿠키값; 쿠키이름=쿠키값 와 같은 형식으로 보내줄 수있다. 따라서 위에서 확인한 쿠키값을 입력하여 서버에 전달해준다.

-L weakuser.txt -P /usr/share/john/password.lst -t 4

사용자 계정 목록은 직접 nano weakuser.txt 명령어를 통해 admin guest user 세 개의 username을 만들었고 password는 이미 있는 것을 사용했다. 처음에 너무 오래걸리는 것 같아 구글링을 통해 스레드를 4로 하여 속도를 높이는 법을 알게 되어 뒤에 -t 4를 붙여서 속도를 높일 수 있었다.

결과로 admin이라는 Username과 password라는 Password 가 취약하다는 것을 알 수 있었고 그 계정으로 로그인 한 결과

Welcome ~~admin으로 이미지와 함께 결과를 도출해냈다.

 

2. Command Injection

IP주소를 입력하여 ping결과를 출력하는 문제이다.

우선 localhost 주소로 ping을 보내봤다.

4번의 ping결과가 출력된 것을 확인할 수 있었다.

출력 후 URL을 확인해본 후 파일에 직접 들어가서 소스코드를 확인해보았다.

http://localhost/DVWA-master/vulnerabilities/exec/#

아무런 필터링 없는 것을 확인했고 ip가 아닌 다른 명령어 또는 프로그램을 실행시킬 수 있을 것이라 생각했다.

그래서 cat명령어를 통해서 파일의 내용을 출력해보고자 했다. 무엇의 내용을 볼까 하다가 바로 직전에 Brute Force에서 위험한 패스워드 리스트가 있다는 것이 떠올랐다. 그래서 cat명령어를 통해 출력해보았다. 

&cat /usr/share/john/password.lst

+cat 명령어앞에 & 붙인 이유는 위 low소스코드를 보면 'ping -c 4'. $target이기에 연결해주기위해 사용했다.

위와 같은 내용을 볼 수 있었다.

명령어로 실제 파일을 출력해 비교해 위와 동일하다는 것을 확인했다. 이것이 악용된다면 악성코드가 심어진 코드를 실행시킬 수 있어 위험한 취약점인 것 같다. 물론 low단계라 쉽게 가능했다고 생각한다.

 

3. CSRF

공격자가 원하는, 사용자가 원하지 않은 행위를 하도록 강제할 수 있는 공격이다.  http요청을 강제함을 시작으로 목적은 정보유출, 권한상승 등이 있겠다.

이번 DVWA에서 CSRF는 CMS에서 취약점을 찾아 비밀번호를 변경하는 것을 목표로 한다. 그럼 시작해보자!!!

시작화면

New password와 Confirm new password에 qwer1234를 넣고 Change버튼을 눌렀다.

GET방식으로 password_new와 password_conf로 URL변수를 사용하는 것을 확인할 수 있었다.

드림핵에서 <img>태그를 활용한 것을 이번 실습에서 활용해보았다. 

아래에 코드를 작성하여 메일을 읽자마자 관리자의 비밀번호가 qwer1234로 변하도록 하였다.

<img src="http://127.0.0.1/DVWA-master/vulnerabilities/csrf/?password_new=qwer1234&password_conf=qwer1234&Change=Change#">

 

메일을 확인했을 때 URL이 노출되지만 메일을 확인하는 순간 관리자의 비밀번호는 변경되었습니다. 

728x90