
NodeXP - Node.js 취약점을 탐지 및 악용할 수 있는 Server Side Javascript Injection 도구
NodeXP는 Python 2.7로 작성된 통합 도구로, Node.js 서비스의 가능한 취약점을 탐지하고 S(erver)S(ide)J(avascript)I(njection) 공격을 기반으로 자동화된 방식으로 익스플로잇할 수 있습니다.
Git 저장소를 클론하여 NodeXP를 다운로드하세요:
git clone https://github.com/esmog/nodexp
모든 옵션 목록을 보려면 다음을 실행하세요:
python2.7 nodexp -h
POST 및 GET 사례에 대한 예시:
python2.7 nodexp.py --url="http://nodegoat.herokuapp.com/contributions" --pdata="preTax=[INJECT_HERE]" -c="connect.sid=s:i6fKU7kSLPX1l00WkOxDmEfncptcZP1v.fy9whjYW0fGAvbavzYSBz1C2ZhheDuQ1SU5qpgVzbTA"
python2.7 nodexp.py --url="http://nodegoat.herokuapp.com/contributions" --pdata="preTax=[INJECT_HERE]" -c="connect.sid=s:i6fKU7kSLPX1l00WkOxDmEfncptcZP1v.fy9whjYW0fGAvbavzYSBz1C2ZhheDuQ1SU5qpgVzbTA" --tech=blind
python2.7 nodexp.py --url="http://192.168.64.30/?name=[INJECT_HERE]" -c="connect.sid=s:i6fKU7kSLPX1l00WkOxDmEfncptcZP1v.fy9whjYW0fGAvbavzYSBz1C2ZhheDuQ1SU5qpgVzbTA"
python2.7 nodexp.py --url="http://192.168.64.30/?name=[INJECT_HERE]" -c="connect.sid=s:i6fKU7kSLPX1l00WkOxDmEfncptcZP1v.fy9whjYW0fGAvbavzYSBz1C2ZhheDuQ1SU5qpgVzbTA" --tech=blind
NodeXP에 익숙해지려면 제공된 Node.js 테스트 서비스(/testbeds)를 설정하고 도구 사용을 시작해야 할 수 있습니다. Node.js 서버가 실행 중인 로컬 머신이 필요합니다.
먼저 GET 및 POST 디렉토리에 'body-parser'와 'express' 패키지를 설치해야 합니다.
로컬 머신의 'testbeds/GET' 디렉토리로 이동하여 터미널에 아래 명령어를 붙여넣으세요:
npm install express --save
'testbeds/POST' 디렉토리로 이동하여 터미널에 아래 명령어를 붙여넣으세요:
npm install body-parser --save
nmp install express --save
패키지를 올바르게 설치한 후에는 'node' 명령어와 원하는 js 파일(예: node eval.js)을 실행하여 각 서비스를 실행할 수 있습니다.
서버가 실행되고 나면 NodeXP를 실행하여 해당 서비스들을 테스트할 준비가 된 것입니다!
GET 사례에 대한 예시는 아래와 같습니다:
python2.7 nodexp.py --url=http://localiprunningnodejsserver:3001/?name=[INJECT_HERE]
POST 사례에 대한 예시는 아래와 같습니다:
python2.7 nodexp.py --url=http://localiprunningnodejsserver:3001/post.js --pdata=username=[INJECT_HERE]
블라인드 기반 인젝션과 결과 기반 인젝션 기술 모두에서 사용되는 페이로드는 "/files/blind_payloads.txt"와 "/files/payloads.txt"에 저장됩니다.
페이로드는 텍스트 파일의 홀수 줄에 작성되며, 결과 기반 인젝션의 경우 예상 응답이 "payloads.txt" 파일의 짝수 줄에 쉼표로 구분된 목록으로 작성됩니다. "blind_payloads.txt" 파일의 짝수 줄은 비어 있습니다.
인젝션 프로세스를 중지하기 위해 "---end(nextline)---end"가 블라인드 및 결과 기반 인젝션 모두에서 페이로드 파싱 및 인젝션을 중지할 수 있는 구분자로 사용됩니다.
모든 사용자는 위 지침을 따르는 한 자신의 페이로드로 페이로드 txt 파일을 유지 및 업데이트할 수 있습니다.
이 도구의 목적은 순수하게 학술적이며, 제 석사 논문을 수행하기 위해 개발되었습니다. 또한 Node.js 서비스에 대한 침투 테스트 과정에서 유용할 수 있습니다. 다른 악의적이거나 불법적인 사용은 강력히 권장되지 않으며, 이 연구의 목적에 명백히 포함되지 않습니다.
NodeXP - 버전 1.2.2