반응형

어제에 이어서 CSRF를 진행 해보도록 하겠습니다


어제 했던 공격에서 GET 방식을 이용해서


192.168.12.186 서버의 관리자 권한을 취득해보도록 하겠습니다.



img 태그를 써서 url을 적어보겠습니다


꼭 이미지 url일 필요는 없습니다





이렇게 wireshark를 통해서 보시면 제가 요청한 test.html이 뿐만 아니라 나중에 img 태그에 걸린 url을 가져와야하기 때문에 자동으로 요청을 보내지는걸 알 수 있습니다.


그 방식을 통해서 CSRF GET방식으로 관리자 권한을 획득 해보도록 하겠습니다



echo로 회원가입을 해서 일반 사용자인 상태입니다






이렇게 GET방식으로 레벨과 관리자 권한을 바꾸는 요청을 적어놓고 게시글을 작성합니다


저 요청은 관리자가 보내야 서버에서 인식하므로 관리자가 저 게시글을 클릭하도록 해야합니다



이렇게 관리자가 게시글을 클릭을 하게 되면 변합니다



이렇게 잘 레벨이 바뀐걸 알수있습니다.





2. 서버측 언어를 이용한 취약점



-서버에서 실행


- 서버를 타겟으로 하는 공격 유형



1).php 파일 업로드 취약점


 1. php 파일을 서버에 업로드 가능


 2. 웹 브라우저를 통해서 접근이 가능

  - 객체에 대한 직접 접근






이렇게 차단 되는걸 볼 수 있습니다





* 필터링 우회 방법


1. 왜 차단되고 있는가?


 - write_ok.php


 - 파일의 확장자가 .php인 경우라면 차단


2. 꼭 확장자가 .php 이어야 하는가?


 - 웹 서버가 .php 확장자를 가지고 php파일을 식별하기 때문에 그래야합니다


 - php는 리눅스에서는 확장자를 가리지 않습니다


3. 왜 확장자는 .php로 되어 있는가?


 - /etc/httpd/conf.d/php.conf


AddHandler php5-script .php

AddType text/html .php


이걸 우회하도록합니다



txt파일도 되게 해보도록 하겠습니다



아까 php파일을 txt파일로 바꿉니다


다운로드 버튼을 클릭을 하면 php파일이 잘 실행되는걸 알수 있습니다



이 설정 파일을 어떻게 변조 시키는지 알아보도록하겠습니다



그전에 아파치 설정 파악하기


! 아파치 웹 서버 설정의 이해



1. /etc/httpd/conf/httpd.conf


1). 아파치 웹 인증


#>vi /etc/httpd/conf/httpd.conf


AuthType Basic  : 인증타입

AuthName "Basic Auth test" :인증이름

AuthUserFile /var/www/html/.htpasswd : 실제 적용할 파일경로

Require vaild-user : 인증한 사용자만 사용할 수 있음




설정하고 다시 키면 저렇게 이제 인증하도록 물어봅니다


인증 사용자와 비밀번호는 .htpasswd 에 적어놓으면 됩니다



새로만들떄는 -c 옵션을 쓰면 됩니다



잘 들어가지는걸 볼 수 있습니다



/var/www/html/zboard 폴더만 인증 여부를 물어보도록 설정을 바꿔보도록 하겠습니다




이렇게 설정을 바꾸고 httpd를 재시작하면


/var/www/html폴더에 있는 index.php는 인증없이 잘들어가집니다.



하지만 /var/www/html/zboard 아래에 있는 admin.php는 인증절차를 밟아야 합니다



로그를 보시면 Authorization이 있음을 볼 수 있습니다


.htaccess


  - 설정파일(로컬 설정 파일)


  - 파일이 존재하는 디렉터리와 그 하위 디렉터리에 대해서만 설정이 적용


  - service httpd restart를 안해도 바로 적용됩니다



All로 바꿔줍니다


이걸 <Directory "/var/www/html/zboard">


그럼 이제 /var/www/html에 .htaccess가 있으므로 인증 절차를 밟는걸 알 수있습니다.


즉, 설정을 적용하고 싶은 디렉터리에 해당 파일을 만들어주기만 하면됩니다


이걸 가지고 아까 php파일을 못 올렸던 방식을 우회하도록 하겠습니다.





지금은 txt파일 그대로 나오는걸 알 수 있습니다.


AddHandler php5-script .php .txt

AddType text/html .php .txt


이코드를 .htaccess에 넣고 attack.txt 파일과 같이 업로드를 해보도록하겠습니다




php 코드가 잘 실행 되었음을 볼 수 있습니다


서버단에서 AllowOverride 옵션이 꺼져있으면 이 우회방법을 쓸 수 없습니다

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기