1.SSRF(Server-Side Request Forgery)공격자가 서버를 속여 의도하지 않은 요청을 수행하도록 유도하는 웹 취약점 2.web-ssrf 문제localhost 또는 내부 IP를 입력할 경우, 내부 에러 이미지를 반환하는 검사를 시행하고있지만다양한 방법으로 우회할수있다.그러면 내부 포트는 무차별 대입방법으로 찾을수있다.@app.route("/img_viewer", methods=["GET", "POST"])def img_viewer(): if request.method == "GET": return render_template("img_viewer.html") elif request.method == "POST": url = request.fo..
Computer Science/Security
1.File Vulnerability파일 처리 과정에서 발생할 수 있는 보안 취약점공격자가 서버의 파일을 부적절하게 접근하거나 조작할 수 있게 되는 상황이다. 1-1.Directory Traversal (디렉토리 순회)파일 경로를 조작하여 시스템에서 허가되지 않은 디렉토리나 파일에 접근하는 공격file_path = f"/var/www/files/{request.args.get('filename')}"with open(file_path, 'r') as f: data = f.read() 다음코드에 이러한 파일이름을 넣게 되면 시스템에서 허가되지 않은 디렉토리나 파일에 접근할수있다./../../etc/passwd 1-2. File Upload Vulnerability (파일 업로드 취약점)서버에 악..
1.Command Injection애플리케이션이 외부 명령어를 실행하기 위해 사용자 입력을 포함하는 경우, 공격자가 악의적인 명령어를 삽입하여 시스템 명령을 실행하도록 유도하는 공격 기법 1-1.쉘 명령어 체인 기법체인 연산자(;, &&, ||)를 사용하여 추가적인 명령어를 실행 1-2.리다이렉션 및 파이프 기법리다이렉션(>, >>)과 파이프(|)를 사용하여 명령어 출력을 조작하거나 연결된 명령을 실행 1-3.서브 명령어 실행 기법명령어를 서브셸로 실행하기 위해 $() 또는 백틱(``)을 사용 2.command-injection-1 문제풀기flag.py 에있는 flag 값을 얻어내는 문제다 ping 엔드포인트가 존재하며 POST로 받았을때 cmd 명령어를 다음과같이 폼에서 받은 ho..
1.Blind SQL Injection서버가 SQL 쿼리를 실행한 후, 결과를 클라이언트에게 반환하지 않고 특정 응답 패턴을 통해 공격자가 데이터를 추출할 수 있도록 하는 방식 1-1.Boolean Blind SQL Injection서버가 단순히 "TRUE" 또는 "FALSE" 값을 반환하는 방식으로 동작하는 공격SELECT username FROM users WHERE username = 'admin' AND EXISTS (SELECT * FROM users WHERE username = 'admin') -- 1-2.Error-based Boolean Blind SQL InjectionSQL 오류를 기반으로 True/False 값을 결정하는 기법으로, 특정 SQL 구문을 사용하여 오류 메시지를 얻..
1.MongoDB 공격1-1.쿼리 형식 변환의 기본 규칙field가 필드 이름이고 [$operator] 부분이 MongoDB의 특수 연산자로 변환되고 value가 필드에 비교될 값이다.field[operator]=valueuid=asa->{ "uid": "asa" }uid[$ne]=a&upw[$ne]=b->{ "$ne": "a" }, "upw": { "$ne": "b" } } 2.Mango 문제데이터베이스에 저장된 admin 계정의 비밀번호를 얻어야하는 문제다. 2-1.필터우선 로그인엔드포인트의 쿼리로 다음과같은 BAN 단어들이 필터링 당하고있다.const BAN = ['admin', 'dh', 'admi'];filter = function(data){ const dump = JSON.stri..
1.SQL Injection웹 애플리케이션이 사용자 입력값을 SQL 쿼리에 통합할 때 발생하는 보안 취약점 1-1.기본적인 공격 쿼리조건식이 항상 TRUE로 평가되므로, 모든 데이터를 반환하게됨#입력' OR '1' = '1 query = f"SELECT * FROM users WHERE username = '{user_input}'"# 최종되는 쿼리# 사용자가 입력한 값이 비어있거나, '1'과 '1'이 같으면 항상 TRUE가 되므로 모든 데이터가 반환됨.query = f"SELECT * FROM users WHERE username = '' OR '1' = '1'" 1-2.UNION 사용사용자의 입력값을 통해 전체 사용자 이름과 비밀번호가 반환됨#입력' UNION SELECT username, pas..
1.Cross Site Request Forgery (CSRF)CSRF는 사용자가 인증된 상태에서 공격자가 사용자의 의도와 상관없이 서버에 요청을 보내도록 만드는 웹 보안 취약점이다.예를들어 사용자가 로그인되있을때 OO에게 100만원을 송금하는 엔드포인트를 실행하도록 유도해서 공격하는 방법이다. XSS의 경우 JavaScript 코드를 통해 쿠키를 얻거나 하는 목적이지만CSRF는 인증된 사용자가 그저 엔드포인트에 접근하게 하는것이 목적이다.CSRF에서 다음과같이 src에만 넣어도 사용자는 이미 인증된 쿠키정보로 돈을 보내는 요청을 서버에 보내기때문에 서버에서 요청을 검증하지 않고 바로 처리된다.크기가 0인 이미지박스를 넣어서 공격할수있다. 2.CSRF-12-1.XSS 문제와 차이이번문제는 XS..