안녕하세요.
몇 달전, 친한 형님을 통해 신기한 SQL Injection WAF Bypass에 대해서 들었습니다.
구체적으로 어떻게 Injection을 수행했는지는 듣지 못했고, Operator 에 대해서만 들었습니다.
오랜만에 연구도할 겸, 글을 작성해볼려고 합니다.
결론 적으로 말하면 아래와 같습니다. (제가 들은 연산자.)
위 쿼리가 어떤 동작으로 활용될지 아시는 분은 Skip 하셔도 될 것 같습니다.
["~~" 가 무엇인가 ]
Mysql 형님한테 한 번 연산에 대해서 물어봤습니다. Mysql 형 이거 뭐야?
대충 이론은 알았으나 비트를 어떻게 반전하는지 테스트 해보겠습니다.
저 1 들은 무엇인가?
아무튼, "~" 연산을 통해 비트 단위로 반전 시킨다는 것을 알았습니다.
사실 "~" 의 역할은 크게 중요도가 높지 않습니다.
이 "~" 연산자를 어떻게 활용할 것인지가 중요합니다.
그러면 "~~" 는 무엇일까요? 순차적으로 해석을 해보면 , ~ 를 통해 비트를 반전 시키고, 반전시킨 비트 데이터를 다시 ~ 를 통해 반전 시킨다는 의미입니다.
테스트 해보겠습니다.
여기 까지만 수행하면 결론적으로는 어디에 어떻게 활용할지에 대해서 의문점이 생깁니다.
["~~" 조지기]
예를 들어 SQL Injection 공격을 테스트한다고 가정해보겠습니다.
[0] 정상 쿼리.
[1] False값 발생
True &&(AND) False --> False
[2] True값 발생
True &&(AND) True --> True
위의 검증 값이 패턴 기반 WAF에 걸릴경우.
[3] ~~ 활용 False값 발생
[4] ~~ 활용 True값 발생
이 정도만 이해하면 완벽히 이해한 것이라고 생각합니다.
아직까지도 저게 무슨 의미가 있는지에 대해 궁금하실 수 있습니다.
[5] 쿼리 어렵게 만들어버리기.
요게 가능하다는 것입니다.
[6] 진짜 조지기
결론은 "~~" 를 반복하면 마지막 연산은 비트를 얼마나 뒤집든 본 데이터 값이 되는 점을 이용합니다.
위와 같은 패턴이 기존에 존재했는지는 모르겠지만, 저는 본적이 없었던 거라 저도 하면서 매우 흥미로웠습니다.
일단 모의해킹에서 WAF 를 우회할 때 많이 사용될 거 같고, 뭔가 위 공격기법이 대중화되면 스케너들도 쿼리를 숨기기? 위해서 많이 사용될 거 같숩니다. (추측)
Thanks 서비형.
'web > 웹 해킹 및 보안' 카테고리의 다른 글
WEB XSS || CSRF 문제를 만들자. (1) | 2020.09.07 |
---|---|
똑똑, 스팸메일입니다. (분석기) (1) | 2020.06.07 |
NEW? XSS Error bypass using '{}' (js block statement) (0) | 2020.02.25 |
Dom Clobbering (with XSS) (19) | 2019.11.30 |
JavaScript-based DDoS[번역] (0) | 2019.04.28 |
댓글