🇰🇷 한글 설명
Open Source Point of Sale (opensourcepos) 3.4.0 및 3.4.1 버전에서 저장된 XSS 취약점이 존재합니다. 인증된 사용자가 'Configuration: Change OSPOS's Configuration' 권한을 가지고 있을 때, Configuration (Information) 기능에서 Company Name 필드에 악성 자바스크립트 코드를 삽입할 수 있습니다. 이 코드는 나중에 사용자가 /sales/complete에 접근할 때 실행되어 저장된 XSS 취약점을 발생시킵니다.
💡 쉬운 설명
opensourcepos 3.4.0 및 3.4.1 버전에서 사용자 이름 필드에 악성 자바스크립트 코드를 삽입할 수 있어 브라우저에서 코드가 실행되게 됩니다. 이는 입력값 검증과 출력 인코딩이 충분하지 않아 발생합니다. 3.4.2 버전에서 이 문제가 해결되었습니다.
🇺🇸 원문 (English)
Open Source Point of Sale (opensourcepos) is a web based point of sale application written in PHP using CodeIgniter framework. opensourcepos 3.4.0 and 3.4.1 has a stored XSS vulnerability exists in the Configuration (Information) functionality. An authenticated user with the permission “Configuration: Change OSPOS's Configuration” can inject a malicious JavaScript payload into the Company Name field when updating Information in Configuration. The malicious payload is stored and later triggered when a user accesses /sales/complete. First select Sales, and choose New Item to create an item, then click on Completed . Due to insufficient input validation and output encoding, the payload is rendered and executed in the user’s browser, resulting in a stored XSS vulnerability. This vulnerability is fixed in 3.4.2.
📍 영향받는 시스템
Open Source Point of Sale (opensourcepos) 3.4.0 및 3.4.1
⚔️ 공격 벡터
인증된 사용자가 Configuration (Information) 기능에서 Company Name 필드에 악성 자바스크립트 코드를 삽입
🛡️ 대응 방법
opensourcepos 3.4.2 버전으로 업그레이드
🔧 검증 코드
로컬에서 Python을 실행하고, opensourcepos가 설치된 서버의 URL을 verification_code의 example.com으로 대체합니다. verification_code를 실행하기 전에 Python과 requests 라이브러리가 설치되어 있어야 합니다.
python -c "import requests; response = requests.get('https://example.com/sales/complete'); if response.status_code == 200: print('{{"result": "{}", "reason": "{}"}}'.format('양호' if 'opensourcepos' not in response.text else '취약', 'opensourcepos 버전 확인 결과')); else: print('{{"result": "{}", "reason": "{}"}}'.format('양호', '접근 불가'))"