estherseo
JINIWAY
estherseo
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ
    • ์ „๊ณต๊ณต๋ถ€
    • CS
      • Network
      • Algorithm
      • ๐Ÿ“–
      • python
      • django
    • Pentest
      • ๐Ÿ“–
      • HTB
      • Machines
    • Web-hacking
      • ๐Ÿ“–
      • Dreamhack
      • Portswigger
    • System-hacking
      • ๐Ÿ“–
    • Mobile-hacking
    • Project
    • CVE
    • CTF
    • News & Conference
    • ์ž๊ฒฉ์ฆ
    • ์‹ ๊ธฐ์ˆ 
      • AI

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก
  • ๋ธ”๋กœ๊ทธ ์†Œ๊ฐœ

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํƒœ๊ทธ

  • ASC์Šคํ„ฐ๋””
  • ASC ์Šคํ„ฐ๋””
  • ์…ธ์‡ผํฌ
  • HTB shocker
  • 2022 ๋„คํŠธ์›Œํฌ๊ด€๋ฆฌ์‚ฌ
  • n00bCTF
  • ๋‹คํฌ์›น ๋ชจ๋‹ˆํ„ฐ๋ง ์„œ๋น„์Šค
  • ๊ธฐ์‚ฌ์š”์•ฝ
  • ์‹œ์Šคํ…œํ•ดํ‚น๊ณต๋ถ€
  • pox2022
  • jwt token last character
  • CVE-2022-22817
  • 2022 pox
  • asc
  • ์Šคํƒ์นด๋‚˜๋ฆฌ
  • ํ™”์ดํŠธํ–‡ํˆฌ๊ฒŒ๋”1๊ธฐ
  • ๋‹คํฌ์›น ๋ชจ๋‹ˆํ„ฐ๋ง
  • ๋„คํŠธ์›Œํฌ๊ด€๋ฆฌ์‚ฌ ์‹ค๊ธฐ ํ•ฉ๊ฒฉ
  • ์ค‘์†Œ๊ธฐ์—… ์ •๋ณด๋ณดํ˜ธ
  • HTB valentine
  • Pillow์ทจ์•ฝ์ 
  • ํ™”์ดํŠธํ–‡ํˆฌ๊ฒŒ๋”
  • integer overflow
  • ํ™”์ดํŠธํ–‡ํˆฌ๊ฒŒ๋”1๊ธฐ ๊ฒฐ๊ณผ๊ณต์œ ํšŒ
  • ํŒจํ‚ท์žก๊ธฐ
  • CTF๊ณต๋ถ€
  • shocker
  • python eval
  • ์‹œ์Šคํ…œํ•ดํ‚น ์Šคํ„ฐ๋””
  • ์„ธ๊ณ„์‹ ์•ˆ๋ณดํฌ๋Ÿผ
hELLO ยท Designed By ์ •์ƒ์šฐ.
estherseo

JINIWAY

Apache์˜ CGI๋ชจ๋“ˆ - shellshock
Pentest/๐Ÿ“–

Apache์˜ CGI๋ชจ๋“ˆ - shellshock

2022. 4. 26. 00:01

 

 

์…ธ์‡ผํฌ | Shellshock | CVE-2014-627*

๊ฐœ๋… Unix Bash๊ฐ€ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ์ž„์˜์˜ ๋ช…๋ น์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ทจ์•ฝ์  (RCE) = command injection vulnerability ๋ฐœ์ƒ ์›์ธ Bash๊ฐ€ variable assignment๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์—์„œ ์ทจ์•ฝ์ ์ด ๋ฐœ์ƒํ•œ๋‹ค. Bash์˜ ์‰˜ ํ™˜..

jiniway.tistory.com

์œ„ ํฌ์ŠคํŒ… ์‹ค์Šต๊ณผ ๊ด€๋ จ๋œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค !

๋จผ์ € ์ฝ๊ณ  ์˜ค์‹œ๋Š” ๊ฒƒ์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค :)

 

 

์ด ๋จธ์‹ ์—์„œ๋Š” Apache ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ–ˆ๊ณ , /cgi-bin ์ด๋ผ๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ์™€ user.sh CGI ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

Q.  ์™œ User-agent ํ—ค๋”์— ์‚ฝ์ž…ํ•œ ๋ช…๋ น์–ด๊ฐ€ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ผ๊นŒ?

Q.  ๋ฆฌ๋ฒ„์Šค์…ธ์ด ์–ด๋–ป๊ฒŒ ๋™์ž‘๋˜๋Š” ๊ฒƒ์ผ๊นŒ?

 

 

์œ„์™€ ๊ฐ™์€ ์งˆ๋ฌธ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ ํ•ด๋‹น ๊ธ€์—์„œ๋Š” Apache์˜ CGI ๋ชจ๋“ˆ์— ๋Œ€ํ•ด์„œ ์ข€ ๋” ์•Œ์•„๋ณด๊ณ , Shocker ๋จธ์‹ ์˜ ์„ค์ •์„ ์‚ดํŽด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 


CGI(Common Gateway Interface) ๋ž€?

CGI๋Š” ์›น ์„œ๋ฒ„๊ฐ€ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๊ณ  ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํ•˜๋‚˜์˜ ์›น ํŽ˜์ด์ง€๋กœ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. ๋™์ ์ด๊ณ  ์ƒํ˜ธ์ž‘์šฉ์ ์ธ ์›น ํŽ˜์ด์ง€๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ์ตœ์ดˆ์˜ ๊ธฐ์ˆ  ์ค‘ ํ•˜๋‚˜๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋‹น์‹œ ๊ฐœ๋ฐœ์ž๋“ค์€ ์ง€๊ธˆ์€ ์›น์‚ฌ์ดํŠธ์˜ ๋‹น์—ฐํ•œ ๊ธฐ๋Šฅ์ธ ์›น์‚ฌ์ดํŠธ ์ด๋ฉ”์ผ ๊ธฐ๋Šฅ, ๊ฒŒ์‹œํŒ ์šด์˜, ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ๋“ฑ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ CGI๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

 

PHP ๊ฐ™์€ ์Šคํฌ๋ฆฝํŒ… ์–ธ์–ด๊ฐ€ ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ๊ณผ ๋‹ฌ๋ฆฌ CGI๋Š” ์šด์˜์ฒด์ œ์—์„œ ์ง์ ‘ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ณ  ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์›น ํŽ˜์ด์ง€์— ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ CGI๋Š” command injection ๊ณต๊ฒฉ์— ์ทจ์•ฝํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ๋‹ค์–‘ํ•œ ํ˜•ํƒœ๋กœ ์กด์žฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. PHP๋‚˜ Python ๊ฐ™์€ ์šฉ๋Ÿ‰์ด ํฐ ์–ธ์–ด๋ฅผ ์ง€์›ํ•˜๊ธฐ์—๋Š” ์ฒ˜๋ฆฌ ๋Šฅ๋ ฅ๊ณผ ์ €์žฅ ๊ณต๊ฐ„์ด ๋ถ€์กฑํ•œ ๋‚ด์žฅํ˜•(์ž„๋ฒ ๋””๋“œ) ์‹œ์Šคํ…œ๋“ค์—์„œ CGI๋ฅผ ์‚ฌ์šฉํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. (ex. ๊ณต์œ ๊ธฐ ๊ด€๋ฆฌ์šฉ ์›น ์ธํ„ฐํŽ˜์ด์Šค)

 

Apache์—์„œ์˜ CGIํ”„๋กœ๊ทธ๋žจ

Apache์—์„œ CGI์‹คํ–‰์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•˜๋Š” ์„ค์ •์— ๋Œ€ํ•ด์„œ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์•„ํŒŒ์น˜ ๊ณต์‹๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค.

 

  • ScriptAlias
ScriptAlias /cgi-bin/ /usr/local/apache2/cgi-bin/

ScriptAlias ์ง€์‹œ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์•„ํŒŒ์น˜๋Š” ํŠน์ • ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ CGI ํ”„๋กœ๊ทธ๋žจ์šฉ์œผ๋กœ ๋‘ก๋‹ˆ๋‹ค. ์•„ํŒŒ์น˜๋Š” ์ด ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ๋Š” ๋ชจ๋“  ํŒŒ์ผ์„ CGIํ”„๋กœ๊ทธ๋žจ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ž์›์„ ์š”์ฒญํ•˜๋ฉด ์ž์›์„ ์‹คํ–‰ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. 

 

ex) ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์•„ํŒŒ์น˜์—๊ฒŒ http://10.10.10.56/cgi-bin/user.sh๋ฅผ ์š”์ฒญํ•˜๋ฉด ์•„ํŒŒ์น˜๋Š” /usr/lib/cgi-bin/ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ user.sh๋ฅผ ์ฐพ์•„์„œ CGI ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜์—ฌ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

 

 

  • Options๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ช…์‹œ์ ์œผ๋กœ CGI ์‹คํ–‰์„ ํ—ˆ์šฉํ•˜๊ธฐ

์„œ๋ฒ„์˜ ์ฃผ์„ค์ • ํŒŒ์ผ์— ์ง์ ‘ Options ์ง€์‹œ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ CGI ์‹คํ–‰์„ ํ—ˆ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

<Directory /usr/local/apache2/htdocs/somedir>
Options +ExecCGI
</Directory>

์–ด๋–ค ํŒŒ์ผ์ด CGI ํŒŒ์ผ์ธ์ง€๋„ ์•Œ๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค. AddHandler ์ง€์‹œ์–ด๋Š” ์„œ๋ฒ„์—๊ฒŒ ํ™•์žฅ์ž๊ฐ€ .cgi .pl์ธ ํŒŒ์ผ์€ ๋ชจ๋‘ CGI ํ”„๋กœ๊ทธ๋žจ์ด๋ผ๊ณ  ์•Œ๋ฆฝ๋‹ˆ๋‹ค.

AddHandler cgi-script .cgi .pl

 

/etc/apache2/conf-available/serve-cgi-bin.conf

Shocker ๋จธ์‹ ์—์„œ๋Š” /usr/lib/cgi-bin/ ๋””๋ ‰ํ„ฐ๋ฆฌ์— CGI ์‹คํ–‰์„ ํ—ˆ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

/usr ํ•˜์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ cgi-script ๋ฌธ์ž์—ด์ด ํฌํ•จ๋œ ํŒŒ์ผ ์ฐพ๊ธฐ
/etc/apache2 ํ•˜์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ cgi-script ๋ฌธ์ž์—ด์ด ํฌํ•จ๋œ ํŒŒ์ผ ์ฐพ๊ธฐ
/etc/apache2/mods-available/mime.conf

AddHandler๋ฅผ ์ฐพ๊ธด ํ–ˆ์ง€๋งŒ ์ฃผ์„ ์ฒ˜๋ฆฌ๊ฐ€ ๋˜์–ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ AddHandler ์—†์ด๋„ cgi ํŒŒ์ผ์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค..

์ง์ ‘ ์ž‘์„ฑํ•œ test2.cgi

์„ค์ •์„ ๋ชป ์ฐพ์€ ๊ฑธ๊นŒ์š”, AddHandler๊ฐ€ ์—†์ด๋„ ์‹คํ–‰์ด ๋˜๋Š” ๊ฑธ๊นŒ์š”!?!

 

  • StdEnvVars

์ด ์˜ต์…˜์„ ์‹คํ–‰ํ•˜๋ฉด SSL ๊ด€๋ จ CGI/SSI ํ™˜๊ฒฝ ๋ณ€์ˆ˜์˜ ํ‘œ์ค€ ์ง‘ํ•ฉ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ CGI ๋ฐ SSI ์š”์ฒญ์— ๋Œ€ํ•ด์„œ๋งŒ ์ด ์˜ต์…˜์„ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.

/etc/apache2/sites-available/default-ssl.conf

Shocker ๋จธ์‹ ์—์„œ๋Š” /usr/lib/cgi-bin/ ๋””๋ ‰ํ„ฐ๋ฆฌ์— SSL์˜ต์…˜ ์ค‘ ํ•˜๋‚˜์ธ StdEnvVars๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

 

 


 

๋‹ค์Œ์€ CGI ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ CGI ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—๋Š” ๋‘๊ฐ€์ง€ ์ฐจ์ด์ ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. 

 

 

  1. ๋‹ค๋ฅธ ์ถœ๋ ฅ์„ ํ•˜๊ธฐ ์ „์— ๋จผ์ € MIME-type ํ—ค๋”๋ฅผ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค.

  2. HTML ํ˜น์€ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๋Š” ํ˜•์‹์œผ๋กœ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค.

 

 

"Content-Type"์„ ์ง€์ •ํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์–ด๋–ค ๋‚ด์šฉ์„ ๋ฐ›๊ฒŒ ๋ ์ง€ ๋ฏธ๋ฆฌ ์•Œ๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค.

#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "Hello, World.";

๋’ค์— ๊ฐœํ–‰๋ฌธ์ž๊ฐ€ 2๊ฐœ์ธ ๊ฒƒ์„ ํ™•์ธํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค !

ํ—ค๋”์™€ ๋ณธ๋ฌธ์„ ๊ตฌ๋ถ„ํ•˜๋Š” ํ•œ ์ค„์„ ๊ผญ ๋„์›Œ์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.

#user.sh

#!/bin/bash
echo
echo "Content-Type: text/plain"
echo ""
echo "Just an uptime test script"
echo
uptime
echo
echo

user.sh

Shocker์—์„œ๋„ ์ด๋ ‡๊ฒŒ echo๋กœ ํ•œ์ค„์„ ๋„์›Œ์ค๋‹ˆ๋‹ค. ํ•œ์ค„์„ ๋„์›Œ์ฃผ์ง€ ์•Š์„์‹œ์— ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

user.sh์—์„œ๋Š” Content-Type์„ ์‹ค์ œ๋กœ ํ—ค๋”์— ๋„ฃ์€ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ณธ๋ฌธ์— ์ถœ๋ ฅํ•˜๊ฒŒ ํ•ด์คฌ์Šต๋‹ˆ๋‹ค.

 

ํ—ค๋”์— ๋ฐ˜์˜๋˜๋„๋ก content.cgi๋ฅผ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.

#!/bin/bash
echo "Content-Type: text/html"
echo 
whoami
date
echo "content.cgi"

+x ์‹คํ–‰ ๊ถŒํ•œ์„ ์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค!


์ด์ œ ์•„ํŒŒ์น˜์˜ ํ™˜๊ฒฝ๋ณ€์ˆ˜์— ๋Œ€ํ•ด์„œ ์ดํ•ดํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์•„ํŒŒ์น˜ ์›น ์„œ๋ฒ„๋Š” ํ™˜๊ฒฝ๋ณ€์ˆ˜(envirionment variable)๋ผ๋Š” ๋ณ€์ˆ˜์— ์ •๋ณด๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ๊ทธ๋‚˜ ์ ‘๊ทผ์ œ์–ด ๋“ฑ ์—ฌ๋Ÿฌ ์ž‘์—…์„ ์กฐ์ ˆํ•ฉ๋‹ˆ๋‹ค. ๋˜, ํ™˜๊ฒฝ๋ณ€์ˆ˜๋Š” CGI ์Šคํฌ๋ฆฝํŠธ์™€ ๊ฐ™์€ ์™ธ๋ถ€ ํ”„๋กœ๊ทธ๋žจ๊ณผ ํ†ต์‹ ํ•˜๋Š” ์ˆ˜๋‹จ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ด ๋ณ€์ˆ˜๋Š” ์•„ํŒŒ์น˜ ๋‚ด๋ถ€์— ์ €์žฅ๋˜๊ณ  ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์œผ๋กœ ์šด์˜์ฒด์ œ์—์„œ ๋งํ•˜๋Š” ํ™˜๊ฒฝ๋ณ€์ˆ˜์™€๋Š” ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ํ™˜๊ฒฝ๋ณ€์ˆ˜๋Š” CGI ์Šคํฌ๋ฆฝํŠธ๋‚˜ Server Side include ์Šคํฌ๋ฆฝํŠธ๋กœ ๋„˜๊ฒจ์งˆ ๋•Œ๋งŒ ์‹ค์ œ ์šด์˜์ฒด์ œ ํ™˜๊ฒฝ๋ณ€์ˆ˜๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. 

 

์—ฌ๊ธฐ์„œ๋Š” CGI ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋™์ž‘ํ•  ๋•Œ ํ™˜๊ฒฝ๋ณ€์ˆ˜๊ฐ€ ์–ด๋–ป๊ฒŒ ์ „๋‹ฌ๋˜๋Š”์ง€ ์œ„์ฃผ๋กœ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

CGI ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ๋•Œ ์„œ๋ฒ„์™€ ๋ธŒ๋ผ์šฐ์ €๋Š” ๊ฐ๊ฐ์˜ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์„œ๋กœ ๊ตํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ •๋ณด์—๋Š” ๋ธŒ๋ผ์šฐ์ € ์ข…๋ฅ˜(Netscape, IE, Lynx), ์„œ๋ฒ„ ์ข…๋ฅ˜(Apache, IIS, WebSite), ์‹คํ–‰ํ•˜๋Š” CGI ํ”„๋กœ๊ทธ๋žจ๋ช… ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. 

#!/bin/bash                                                                                                                                                     
echo                                                                                                                                                            
echo this is env.cgi
echo
env

์œ„ ์ฝ”๋“œ๋Š” ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ๋ชจ๋‘ ์ถœ๋ ฅํ•˜๋Š” CGI ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค. 

CGI ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋™์ž‘ํ•˜๋ฉด์„œ bash ์‰˜์„ ์‹คํ–‰ํ•˜๊ณ , bash ํ™˜๊ฒฝ๋ณ€์ˆ˜์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

 

( bash ๋™์ž‘ ์ˆœ์„œ )

bash ์‹คํ–‰ → bash ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์ดˆ๊ธฐํ™” → bash prompt ์ถœ๋ ฅ → ๋ช…๋ น์–ด ์ž…๋ ฅ → ๋ช…๋ น์–ด ์ˆ˜ํ–‰

 

User-Agent ์™ธ์—๋„ ์—ฌ๋Ÿฌ ํ—ค๋”๋“ค์ด ํ™˜๊ฒฝ๋ณ€์ˆ˜๋กœ ์ €์žฅ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ํ—ค๋”๋“ค์—๋„ command injection์„ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Request 1์ค„๊ณผ 2์ค„์—์„œ SEVER_PROTOCOL์ด๋ž‘ HOST ๋นผ๊ณ ๋Š” ๋‹ค ์ž˜ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

์œ„์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ํ™˜๊ฒฝ๋ณ€์ˆ˜๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 


์—ฌ๊ธฐ์„œ bash ํ™˜๊ฒฝ๋ณ€์ˆ˜์— ํ•จ์ˆ˜ ํ˜•ํƒœ๋กœ ์ €์žฅํ–ˆ์„ ๋•Œ ์–ด๋–ป๊ฒŒ ์‹คํ–‰๋˜๋Š”์ง€ ์‹ค์Šต์„ ํ†ตํ•ด ์ดํ•ดํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

#ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •
export test='() { :;}; pwd; echo vulnerable;'

#ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์ถœ๋ ฅ
export

#bash ์ž์‹์‰˜ ์‹คํ–‰
bash

() { :;}; ๋’ค์— ์˜ค๋Š” ๋ช…๋ น์–ด๋“ค์ด bash ์‰˜์„ ์‹คํ–‰ํ–ˆ์„๋•Œ ํ™˜๊ฒฝ๋ณ€์ˆ˜๊ฐ€ ์ดˆ๊ธฐํ™”๋˜๋ฉด์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

 


Shell shock ๋‹ค์‹œ ์ดํ•ดํ•˜๊ธฐ

์•„ํŒŒ์น˜ ์„œ๋ฒ„์—์„œ CGI ์Šคํฌ๋ฆฝํŠธ user.sh๋ฅผ ์‹คํ–‰ํ•  ๋•Œ, bash ์‰˜๋กœ ๋™์ž‘ํ•˜๋ฉด์„œ ํ™˜๊ฒฝ๋ณ€์ˆ˜์— ์ •๋ณด๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

๊ทธ ํ™˜๊ฒฝ๋ณ€์ˆ˜์—๋Š” Host, User-Agent, Accpt, Accept-Language ๋“ฑ ํ—ค๋” ์ •๋ณด ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

bash ํŠน์ • ๋ฒ„์ „ ์ดํ•˜์—๋Š” shell shock๋ผ๋Š” ์ทจ์•ฝ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

bash ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ํ•จ์ˆ˜ ํ˜•ํƒœ๋กœ ์ €์žฅํ• ๋•Œ () { :;}; ๋’ค์— ์žˆ๋Š” ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์ทจ์•ฝ์ ์ž…๋‹ˆ๋‹ค.

 

๊ทธ๋Ÿผ ํ™˜๊ฒฝ๋ณ€์ˆ˜์— ์ €์žฅ๋˜๋Š” ํ—ค๋” ์ค‘ ํ•˜๋‚˜์— "() { :;}; ์›ํ•˜๋Š” ๋ช…๋ น์–ด" ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์›ํ•˜๋Š” ๋ช…๋ น์–ด ๋™์ž‘์„ ํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰ command injection ์ทจ์•ฝ์ ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋งจ ์ฒ˜์Œ bash CGI ์Šคํฌ๋ฆฝํŠธ(ํ”„๋กœ๊ทธ๋žจ) = user.sh

bash๋Š” ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ User-Agent ํ—ค๋”๊ฐ€ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. 

๊ทธ๋ฆฌ๊ณ  ์ฃผ์ž…ํ•œ ๋ช…๋ น์–ด = /bin/bash -i ๋ฆฌ๋ฒ„์Šค์…ธ์„ ์—ฐ๊ฒฐํ•˜๋Š” ๋ช…๋ น์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

 

 

์ด๋ฒˆ์—๋Š” ๋‹ค๋ฅธ ํ—ค๋”๋กœ command injection์„ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Cache-Control ํ—ค๋”
env : ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์ถœ๋ ฅ

์ž˜ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

 

์ด๋ ‡๊ฒŒ ์ด๋ฒˆ ํฌ์ŠคํŒ…์„ ํ†ตํ•ด ๋งจ ์ฒ˜์Œ ๊ถ๊ธˆํ•œ ์ ๋“ค์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค!

์ดํ•ด๊ฐ€ ์•ˆ ๊ฐ€๋Š” ๋ถ€๋ถ„์ด ์žˆ๋‹ค๋ฉด ๋Œ“๊ธ€๋กœ ์ ์–ด์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค !!

 

 

 


 

๊ถ๊ธˆํ•œ ์  & ๋” ๊ณต๋ถ€ํ•ด์•ผํ•  ๋ถ€๋ถ„

1. ์™œ whoami; ๋“ฑ ํŠน์ • ๋ช…๋ น์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค์ง€ ์•Š๋Š”์ง€

2. bash ๋ฆฌ๋ฒ„์Šค์…ธ ์—ฐ๊ฒฐํ•˜๊ณ  env ํ–ˆ์„ ๋•Œ ์™œ injection ํ–ˆ๋˜ ํ—ค๋”๋Š” ์—†๋Š”์ง€

3. bash ๋ฆฌ๋ฒ„์Šค์…ธ ์—ฐ๊ฒฐํ•˜๊ณ  env ํ–ˆ์„๋•Œ ํ•จ์ˆ˜ํ˜•ํƒœ๋กœ ์ž…๋ ฅํ•˜์ง€ ์•Š์€ ํ—ค๋”๋Š” ํ™˜๊ฒฝ๋ณ€์ˆ˜์— ์ƒ์†๋˜์–ด์žˆ์ง€ ์•Š๋‹ค.

4. ์ด๊ฒƒ์˜ ๊ฒฐ๊ณผ..

5. ์•„ํŒŒ์น˜ ํ™˜๊ฒฝ๋ณ€์ˆ˜ vs bash ํ™˜๊ฒฝ๋ณ€์ˆ˜

6. ๋ถ€๋ชจ์‰˜ - ์ž์‹์‰˜ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์ƒ์†

 

 

 

 

 

์ž˜๋ชป๋œ ๋ถ€๋ถ„์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค !! ๋ถ€์กฑํ•œ ์ ์€ ๋Œ“๊ธ€๋กœ ํ”ผ๋“œ๋ฐฑ ๋ฐ”๋ž๋‹ˆ๋‹ค :)

 

 


 

Reference :

 

์•„ํŒŒ์น˜ CGI ์ฐธ๊ณ ) 

https://www.cgisecurity.com/lib/s-wssec.pdf

https://httpd.apache.org/docs/trunk/ko/howto/cgi.html

 

์•„ํŒŒ์น˜ ํˆฌํ† ๋ฆฌ์–ผ: CGI๋ฅผ ์‚ฌ์šฉํ•œ ๋™์  ํŽ˜์ด์ง€ ์ƒ์„ฑ - Apache HTTP Server Version 2.5

์•„ํŒŒ์น˜ ํˆฌํ† ๋ฆฌ์–ผ: CGI๋ฅผ ์‚ฌ์šฉํ•œ ๋™์  ํŽ˜์ด์ง€ ์ƒ์„ฑ ์ด ๋ฌธ์„œ๋Š” ์ตœ์‹ ํŒ ๋ฒˆ์—ญ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ตœ๊ทผ์— ๋ณ€๊ฒฝ๋œ ๋‚ด์šฉ์€ ์˜์–ด ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”. CGI (Common Gateway Interface)๋Š” ์›น์„œ๋ฒ„๊ฐ€ ๋ณดํ†ต CGI ํ”„๋กœ๊ทธ๋žจ ํ˜น์€ C

httpd.apache.org

https://httpd.apache.org/docs/trunk/ko/env.html

 

์•„ํŒŒ์น˜์˜ ํ™˜๊ฒฝ๋ณ€์ˆ˜ - Apache HTTP Server Version 2.5

์•„ํŒŒ์น˜์˜ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์ด ๋ฌธ์„œ๋Š” ์ตœ์‹ ํŒ ๋ฒˆ์—ญ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ตœ๊ทผ์— ๋ณ€๊ฒฝ๋œ ๋‚ด์šฉ์€ ์˜์–ด ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”. ์•„ํŒŒ์น˜ ์›น์„œ๋ฒ„๋Š” ํ™˜๊ฒฝ๋ณ€์ˆ˜(environment variable)๋ผ๋Š” ๋ณ€์ˆ˜์— ์ •๋ณด๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ์ •๋ณด

httpd.apache.org

 

 

CGI์˜ ์ž‘๋™ ์›๋ฆฌ

http://bazi.pe.kr/teach/INTERNET/technique/chap2/2_1.htm CGI์˜ ์ž‘๋™ ์›๋ฆฌ ใ€€ 1. CGI๋ž€ ...

blog.naver.com

 

 

๋ฆฌ๋ˆ…์Šค ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์‹ค์Šต ์ฐธ๊ณ )

 

shellshock

shellshock ๋””๋ ‰ํ† ๋ฆฌ shellshock.c ํฌ์ธํŠธ  1. ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •ํ•˜๋Š” ๊ณผ์ •์—์„œ ์ทจ์•ฝ์ ์ด ๋ฐœ์ƒ    "() {"๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ฌธ์ž์—ด์„ ์‹œ์Šคํ…œ ํ™˜๊ฒฝ๋ณ€์ˆ˜์— ์ €์žฅํ•˜๋ฉด ๋™์ผํ•œ ์ด๋ฆ„์„ ๊ฐ€์ง„ ํ•จ์ˆ˜๋กœ ์„ ์–ธ๋จ     ์ด ๊ณผ

pu1et-panggg.tistory.com

 

๋ฆฌ๋ˆ…์Šค ํŒŒ์ผ ์† ๋ฌธ์ž์—ด ์ฐพ๊ธฐ ์ฐธ๊ณ )

 

๋ฆฌ๋ˆ…์Šค ํŒŒ์ผ ์ฐพ๊ธฐ, ํŒŒ์ผ์† ๋ฌธ์ž์—ด ์ฐพ๊ธฐ

1. ๋ฆฌ๋ˆ…์Šค ํŒŒ์ผ๋ช…์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜๋Š”๋ฒ•. ์‚ฌ์šฉ๋ฒ• find [์ฐพ์„์œ„์น˜] -name [ํŒŒ์ผ๋ช…] ์˜ˆ) ์ตœ์ƒ์œ„ ํด๋”๋ถ€ํ„ฐ ํ•˜์œ„๋กœ 'apache'๋กœ ์‹œ์ž‘ํ•˜๋Š” ํŒŒ์ผ ์ฐพ๊ธฐ. find / -name 'apache*' ์˜ˆ) usr ํด๋”๋ถ€ํ„ฐ ํ•˜์œ„๋กœ 'apa'๋กœ ์‹œ์ž‘ํ•˜๋Š” ํŒŒ..

overcode.tistory.com

 

'Pentest > ๐Ÿ“–' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Recon] ์›น์Šค์บ๋‹ ๋„๊ตฌ - httpx  (0) 2024.10.11
[AD] ์‹ค์Šต ํ™˜๊ฒฝ ์„ธํŒ…  (0) 2024.06.23
    'Pentest/๐Ÿ“–' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [Recon] ์›น์Šค์บ๋‹ ๋„๊ตฌ - httpx
    • [AD] ์‹ค์Šต ํ™˜๊ฒฝ ์„ธํŒ…
    estherseo
    estherseo
    ์•ˆ๋…•ํ•˜์„ธ์š”๐Ÿ˜€

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”