🇰🇷 한글 설명
Inventory-Management-System-PHP의 login.php와 delete.php 파일에서 SQL 인젝션 취약점이 발견되었습니다. 공격자는 인증 과정을 우회하여 관리자 권한을 획득하거나, 인증 없이 임의의 제품 데이터를 삭제하고 데이터베이스를 조작할 수 있습니다.
💡 쉬운 설명
로그인 화면과 제품 삭제 기능에 보안 장치가 없어, 해커가 가짜 명령어를 입력해 비밀번호 없이 로그인하거나 제품 정보를 마음대로 지울 수 있는 상태입니다.
🇺🇸 원문 (English)
Inventory-Management-System-PHP's login.php constructs its authentication query via direct string concatenation of raw POST parameters: $sql = "select * from user where email = '$email' and password = '$password'", with no escaping or parameterization, allowing authentication bypass via a payload such as email=' OR 1=1 LIMIT 1-- -. Separately, delete.php executes mysqli_query($db, "DELETE FROM product WHERE product_id=" . $_GET['id']) with no authentication check and no validation of the id parameter, allowing an unauthenticated attacker to delete arbitrary product rows or perform blind SQL injection via payloads such as id=0 OR SLEEP(5).
📍 영향받는 시스템
Inventory-Management-System-PHP (login.php, delete.php 포함 버전)
⚔️ 공격 벡터
인증되지 않은 공격자가 조작된 SQL 구문(POST/GET 파라미터)을 전송하여 데이터베이스를 직접 조작
🛡️ 대응 방법
Prepared Statements(준비된 실행문)를 사용하여 SQL 쿼리를 매개변수화하고, 모든 데이터 삭제 요청에 대해 적절한 사용자 인증 절차를 구현해야 합니다.
🔧 검증 코드
명령어 실행 후 'Welcome'과 같은 로그인 성공 메시지가 출력되면 SQL 인젝션을 통한 인증 우회가 가능한 상태입니다.
curl -s -X POST -d "email=' OR 1=1 LIMIT 1-- -&password=any" http://target-system/login.php | grep -q "Welcome"