🇰🇷 한글 설명
Miantang/IoT-PHP의 index.php 내 /userlogin 경로에서 사용자 비밀번호를 적절한 검증 없이 SQL 쿼리에 직접 결합하여 발생하는 SQL 인젝션 취약점입니다. 인증되지 않은 공격자가 특수하게 조작된 페이로드를 전송하여 인증을 우회하거나 데이터베이스의 임의 데이터를 추출할 수 있습니다.
💡 쉬운 설명
로그인할 때 입력하는 비밀번호 칸에 특수한 명령어를 넣으면, 아이디와 비밀번호를 몰라도 로그인이 가능해지는 보안 결함입니다. 이를 통해 해커가 시스템 내부의 중요한 정보를 모두 훔쳐갈 수 있습니다.
🇺🇸 원문 (English)
Miantang/IoT-PHP's index.php implements a POST /userlogin route that reads the password directly from ['pwd'] with no sanitization and concatenates it into a raw SQL string: mysql_query("select * from userlists where username='' and password='' limit 1"). An unauthenticated attacker can submit a payload such as pwd=' OR '1'='1 to bypass authentication and, via UNION-based injection, extract arbitrary data from the database.
📍 영향받는 시스템
Miantang/IoT-PHP (index.php)
⚔️ 공격 벡터
인증되지 않은 공격자가 POST 요청의 'pwd' 파라미터에 SQL 인젝션 페이로드를 삽입하여 공격
🛡️ 대응 방법
Prepared Statements(준비된 실행문)를 사용하여 SQL 쿼리와 사용자 입력값을 분리하고, 입력값에 대한 검증 로직을 추가해야 합니다.
🔧 검증 코드
명령어 실행 후 로그인 성공 응답(예: HTTP 200 또는 로그인 완료 메시지)이 반환되면 취약한 것으로 판단합니다.
curl -X POST -d "pwd=' OR '1'='1" http://<target_ip>/index.php