Security/Web
python flask debugger pin, find and exploit
python flask debugger pin, find and exploit
2020.08.29어떤 CTF에서 python flask 관련 문제가 나왔는데, flask의 debugger pin을 Leak해서 exploit 하는 문제 였다. flask debugger pin은 뭐길래 exploit이 가능한지 알아보자. What is Flask debugger PIN debugger PIN은 개발환경에서 에러가 났을때 쉽게 대화형 debug 모드로 접근 가능하다. 이때 접근 하기 위해서는 PIN 코드가 필요한데 이것이 debugger PIN이다. 코드로 예를 들어 보겠다. 아래 코드에서 마지막 줄을 보면 `debug=True` 라고 되어 있는데, 이렇게 설정이 되어 있으면 debugger PIN을 볼 수 있다. from flask import Flask app = Flask(__name__) @app..
python으로 사이트에 있는 url crawler tool 개발
python으로 사이트에 있는 url crawler tool 개발
2020.03.30소스코드는 github에서 볼수 있습니다. Lactea98/URL-crawler URL crawler. Contribute to Lactea98/URL-crawler development by creating an account on GitHub. github.com 사용자가 입력한 URL에 요청을 보내어 URL 만 파싱하여 결과를 html로 출력합니다. 개발 목적은 취약한 URL 이 있는지 분석을 위해 개발 되었습니다. # Used module 사용된 모듈은 아래와 같습니다. requests bs4 argparse fake_useragent json urlparse # How to use 실행 방법은 아래와 같이 명령어를 입력하면 Crawler 를 시작합니다. python3 urlcrawler.py -..
python 으로 http request smuggling tool 만들기
python 으로 http request smuggling tool 만들기
2020.03.30소스 코드는 github 에서 볼 수 있으니 참고 바란다. 모든 기능은 완성되지 않았지만, 사용하는데 문제는 없을 것이다. Lactea98/smuggler.py HTTP request smuggling tools. Contribute to Lactea98/smuggler.py development by creating an account on GitHub. github.com http request smuggling 도구를 만들기 위해 어떻게 하면 취약함을 알 수 있는가를 portswigger 에서 공부했다. 또한 이미 짱짱해커들이 만들어 놓은 payload 를 참고해서 나만의 툴을 개발하게 되었다. Module 이 툴을 사용하기 위해 아래의 모듈이 필요하다. import requests import a..
Paypal에서 발견된 HTTP Request Smuggling - 실습 환경 구축
Paypal에서 발견된 HTTP Request Smuggling - 실습 환경 구축
2020.03.22요즘 http request smuggling 공격에 대해 몇일간 공부 중이다. 몇달 전에 이 공격을 처음 접하게 되면서 이 공격에 대해 매우 흥미를 느꼈다. http request smuggling 공격에 대해 portswigger 라는 홈페이지에서 자료를 통해 공부를 했고 실습 환경을 만들어 공부 해보면 어떻까 라는 생각을 해서 이렇게 글로 정리를 해본다. 이 실습 환경 만든다고 개고생 했다.. 삽질한 것을 바탕으로 아래 글에 나와 있는데로 진행할 경우 성공할 것이라고 생각한다. 필자가 참고한 사이트는 아래 Reference에 있으니 참고 하길 바란다. # 1. Setting Practice Environment HTTP request smuggling 공격 환경을 만들기 위해서는 사용자와 메인 서버..
[PHP] How To Prevent SQL injection attack via secure code
[PHP] How To Prevent SQL injection attack via secure code
2019.12.08php언어를 통해 SQL injection 공격을 막기 위해 안전한 코드를 짜야한다. 우선 mysqli 함수를 통해 DB에 접근하기 위한 코드는 아래와 같다. 위 코드를 db.php 파일이라고 정의하고, 이 파일을 include 하여 사용한다. mysqli의 PDO는 prepare라는 함수를 가지고 있다. 이것을 이용하여 안전하게 DB에 접근하여 값을 가져오거나 등등의 작업을 할 수 있다. INSERT 아래 예제는 user라는 테이블에 id와 pw를 Insert 하는 과정을 나타낸 것이다. 우선 $mysqli 변수를 쓰기 위해 db.php 파일을 include 하고 prepare 함수를 사용한다. 만약 prepare 함수에서 query에 에러 발생 시 $mysqli->error를 통해 에러를 출력한다. ..
[PHP] password_hash와 password_verify로 패스워드 안전하게 관리하기
[PHP] password_hash와 password_verify로 패스워드 안전하게 관리하기
2019.12.08DB에 패스워드를 안전하게 저장하기 위해서는 단방향 해시 함수를 사용하게 된다. 이유는 DB가 외부로 유출 되었을 때, 패스워드의 평문을 알아내기 어렵게 하기 위해서 이다. php에서 사용자의 패스워드를 해시 해주는 password_hash() 함수와, 사용자가 입력한 패스워드랑 해시된 패스워드를 비교해주는 password_verify() 함수가 있다. password_hash() password_hash()는 2개의 인자가 필요하다. 첫번재 인자는 해시할 패스워드, 두번째는 암호 알고리즘이다. Return 값은 해시 과정에서 에러 발생 시 false, 성공하면 문자열의 해시 값을 준다. password_hash ( string $password , int $algo [, array $options ] ..
Paypal에서 발견된 HTTP Request Smuggling 설명 및 예제
Paypal에서 발견된 HTTP Request Smuggling 설명 및 예제
2019.08.30========= `추가 (2020-08-10)` ======== 이 공격에 좀 더 공부를 해서 portswigger 문서를 번역한 pdf 파일을 공유한다. 글 본문의 내용과 비슷하지만 아래 PDF 문서를 보는 것을 추천한다. 아래 번역글은 portswigger에서 얻은 자료들을 바탕으로 만들어 졌다. 입문: `HTTP Request Smuggling 이란` https://ftp.lactea.kr/pdf/web/http%20request%20smuggling/HTTP%20request%20smuggling(%ed%95%b4%ec%84%9d).pdf `HTTP Request Smugging vulnerability test` https://ftp.lactea.kr/pdf/web/http%20request%..
[php] - strcmp를 이용한 취약한 인증절차
[php] - strcmp를 이용한 취약한 인증절차
2019.04.12strcmp 함수는 다들 알다시피 문자열을 비교하여 -1 또는 0 또는 1을 반환하는 함수이다. strcmp('a', 'b') => -1 strcmp('b', 'b') => 0 strcmp('c', 'b') => 1 만약 admin인지 아닌지를 검사하는 코드가 있다고 가정하자. 아래와 같은 결과가 출력이 된다. 위와 같은 코드로 admin인지 문자열을 비교한 후 결과를 출력하게 된다. 만약 비교하는 문자열이 admin이 아니라 다른 값일 경우, 어떻게 strcmp 를 우회 할 수 있을까? 방법은 strcmp 리턴값에 있다. 비교하는 문자열이 어떤 값이든 0으로만 출력하게끔 값을 넣어주면 된다. 아래와 같은 코드를 작성해본 뒤, 접속해보면 이상한 결과가 출력이 된다. test 라는 배열 변수에 이상한 값을..
[php] - register_globals on 취약점
[php] - register_globals on 취약점
2019.04.11이 취약점을 설명하기 전에 php 5.4 버전 이후에서는 동작하지 않는다. 해당 옵션이 사라졌기 때문에 실습을 하고 싶다면 php 5.4 이하의 버전에서 실습을 하기 바란다. ==실습환경== apmsetup 으로 임시 서버를 열어 실습을 진행했다. php 버전은 5.2 이다. php.ini 설정 파일에 register_globals 라는 옵션이 있다. 이 옵션을 on 하게 되면 취약점이 발생하게 된다. register_globals = On 이 옵션을 On 하게 되면 GET 또는 POST 방식 등으로 전될 된 모든 변수가 자동으로 php의 변수로 변환이 된다. 코드를 예로 들어 설명하면 아래와 같다. 위와 같은 코드를 작성하고 웹으로 접근을 해보면 당연히 fail 이라는 문구가 출력이된다. success..