λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
  • Welcome.
:: Cyber Security 🚩/Web

[Secure]_#06_[ 파일 μ—…λ‘œλ“œ, Web shell, 파일 λ‹€μš΄λ‘œλ“œ ]

by EunBird 2021. 9. 26.

< 파일 μ—…λ‘œλ“œ >

   - 점검 λ‚΄μš© : μ›Ή μ‚¬μ΄νŠΈμ˜ κ²Œμ‹œνŒ, μžλ£Œμ‹€ 등에 μ‘°μž‘λœ Server side Script( jsp, asp, php) 파일 μ—…λ‘œλ“œ 및 μ‹€ν–‰ κ°€λŠ₯ μ—¬λΆ€ 점검.

   - 점검 λͺ©μ  : μ—…λ‘œλ“œλ˜λŠ” 파일의 ν™•μž₯μžμ— λŒ€ν•œ μ μ ˆμ„± μ—¬λΆ€λ₯Ό κ²€μ¦ν•˜λŠ” λ‘œμ§μ„ 톡해 κ³΅κ²©μžκ°€ μ‘°μž‘λœ Server Side Script 파일 μ—…λ‘œλ“œ 방지 및 μ„œλ²„μƒμ— μ €μž₯된 경둜λ₯Ό μœ μΆ”ν•˜μ—¬ ν•΄λ‹Ή Server Side Script 파일 싀행을 λΆˆκ°€λŠ₯ν•˜κ²Œ ν•˜κΈ° μœ„ν•¨.

   - λ³΄μ•ˆ μœ„ν˜‘ : ν•΄λ‹Ή 취약점이 μ‘΄μž¬ν•  경우 κ³΅κ²©μžλŠ” μ‘°μž‘λœ Server Side Script νŒŒμΌμ„ μ„œλ²„μ— μ—…λ‘œλ“œ 및 μ‹€ν–‰ν•˜μ—¬ μ‹œμŠ€ν…œ κ΄€λ¦¬μž κΆŒν•œ νšλ“ λ˜λŠ” 인접 μ„œλ²„μ— λŒ€ν•œ μΉ¨μž…μ„ μ‹œλ„ν•  수 있음.

 

 

* κ³΅κ²©μžλ“€μ΄ 제일 λ¨Όμ € ν™•μΈν•˜λŠ” 취약점이 <파일 μ—…λ‘œλ“œ> 취약점.

 

* Web shell : Webμ—μ„œ μ„œλ²„λ‘œ λͺ…λ Ήμ–΄λ₯Ό μž…λ ₯κ°€λŠ₯ν•˜κ²Œ ν•΄μ£ΌλŠ” κΈ°λŠ₯(?)

 

<파일 μ—…λ‘œλ“œ>곡격에 ν•„μš”ν•œ 쑰건 :1. μ—…λ‘œλ“œ μœ„μΉ˜, 파일 이름λͺ…2. μ„œλ²„μ— μ‚¬μš©ν•˜λŠ” μ–Έμ–΄(μ•Œμ•„μ•Ό 함.)   - php, asp λŠ” url에 μœ„μΉ˜κΉŒμ§€ κ·ΈλŒ€λ‘œ 보인닀.   - jsp λŠ” μœ„μΉ˜λ₯Ό 숨길 수 μžˆλ‹€.3. ν™•μž₯자λͺ… 필터링 μ—¬λΆ€.

 

 

-----ex) about Video01

 

(1) μœ„μΉ˜ν™•μΈ   --> ν‰λ²”ν•œ jpgνŒŒμΌμ„ μ—…λ‘œλ“œ ν•œ ν›„, jpgκ°€ μ˜¬λ €μ§„ 것을 확인.   --> ν•΄λ‹Ή κΈ€μ—μ„œ μ‚¬μ§„μ˜ 속성을 ν™•μΈν•˜μ—¬ ν•΄λ‹Ή url을 톡해 접근을 μ‹œλ„.   --> μ ‘κ·Ό μ‹œλ„κ°€ μ„±κ³΅ν•˜λ©΄ ν•΄λ‹Ή url에 λ‚˜νƒ€λ‚˜λŠ” μœ„μΉ˜λ₯Ό 톡해 μœ„μΉ˜ 확인.

 

(2) url을 λ‹€μ‹œ ν™•μΈν•˜μ—¬ μ–΄λŠ μ–Έμ–΄λ‘œ μ„œλ²„κ°€ 이루어져 μžˆλŠ”μ§€ 확인.(jsp, asp, php)
   --> url에 jspκ°€ μžˆλŠ” 것을 확인.
   --> Webshell.jsp νŒŒμΌμ„ μ²¨λΆ€ν•˜μ—¬ μ—…λ‘œλ“œ.

 

(3) 필터링이 μžˆλŠ”μ§€ 확인.    --> 필터링이 μžˆλŠ” 경우 : μ—…λ‘œλ“œ ν•˜λ €λ˜ Webshell.jsp 파일의 ν™•μž₯λͺ…을 λ°”κΎΈμ–΄μ„œ Webshell.jpg둜 λ°”κΎΈμ–΄μ„œ μ—…λ‘œλ“œν•œλ‹€.
   --> 우회 방법 (1) : ν”„λ‘μ‹œ νˆ΄μ„ 톡해 λ‹€μ‹œ Webshell.jpg λ₯Ό Webshell.jsp둜 λ³€κ²½.
   --> 우회 방법 (2) : [μ†ŒμŠ€λ³΄κΈ°]λ₯Ό 톡해 .jsp ν™•μž₯자 λͺ…을 ν•„ν„°λ§ν•˜λŠ” μ†ŒμŠ€λ₯Ό μ§€μ›Œλ²„λ¦¬λ©΄ 됨.

 

   ** μš°νšŒλ°©λ²•(1)의 원리 :    - μ†ŒμŠ€λŠ” μ„œλ²„μ—μ„œ λ°›μ•„μ™€μ„œ μ‚¬μš©μžμ˜ pc에 μ €μž₯된 μƒνƒœμ΄κΈ° λ•Œλ¬Έμ— 필터링 μ†ŒμŠ€λ„ μ‚¬μš©μžμ˜ pc에 μ‘΄μž¬ν•œλ‹€.   --> λ”°λΌμ„œ .jpg ν™•μž₯자λ₯Ό 달고 필터링 μ†ŒμŠ€λ₯Ό μ§€λ‚˜κ°„ .jpg 파일이 μ„œλ²„λ‘œ μ „μ†‘λ˜κΈ° 전에 ν”„λ‘μ‹œνˆ΄μ—μ„œ .jsp ν™•μž₯λͺ…을 λ‹€μ‹œ λ‹¬μ•„μ„œ    μ„œλ²„λ‘œ 보내면 μ—…λ‘œλ“œκ°€ κ°€λŠ₯ν•˜λ‹€.

 

   **μš°νšŒλ°©λ²•(2)의 원리 :    - μ†ŒμŠ€λŠ” μ„œλ²„μ—μ„œ λ°›μ•„μ™€μ„œ μ‚¬μš©μžμ˜ pc에 μ €μž₯된 μƒνƒœμ΄κΈ° λ•Œλ¬Έμ— 필터링 μ†ŒμŠ€λ„ μ‚¬μš©μžμ˜ pc에 μ‘΄μž¬ν•œλ‹€.   --> λ”°λΌμ„œ [μ†ŒμŠ€λ³΄κΈ°]λ₯Ό 톡해 필터링 μ†ŒμŠ€λ₯Ό μ§€μ›Œλ²„λ¦°λ‹€λ©΄ .jsp ν™•μž₯자λͺ…을 가진 νŒŒμΌλ„ μ—…λ‘œλ“œκ°€ κ°€λŠ₯ν•˜λ‹€.

 

(4) url에  /경둜/Webshell.jsp μ‹€ν–‰.

 

(5) ~.bat μ—…λ‘œλ“œ (κΆŒν•œμ„ μ˜¬λ¦¬λŠ” κΈ°λŠ₯을 κ°–κ³  있음.)

 

(6) ~.bat μ‹€ν–‰    --> (μ΄λ•Œ, .bat ν™•μž₯μžλŠ” windowμš΄μ˜μ²΄μ œμ—λ§Œ μžˆλŠ” ν™•μž₯자이기 λ•Œλ¬Έμ— window 버전, ν˜Ήμ€  IIS 버전을 μ•Œμ•„μ•Ό ν•œλ‹€.)

 

(7) κ³΅κ²©μžκ°€ μžμ‹ λ§Œμ˜ 계정생성 ν›„ κΆŒν•œ λΆ€μ—¬ --> μ—΄λ¦° 포트λ₯Ό 톡해 원격 접속 μ‹œλ„ --> μ„œλ²„μ˜ μ»΄ν“¨ν„°λŠ” 곡격자의 μ†μ•ˆμ— λ“€μ–΄μ˜¨λ‹€.

 

 

γ…‘γ…‘γ…‘γ…‘γ…‘

 

!! κ·Έλ ‡λ‹€λ©΄, μœ„μ™€ 같은 파일 μ—…λ‘œλ“œ 곡격을 λ°©μ§€ν•˜λŠ” 방법은 무엇인지 μ•Œμ•„λ³΄μž. !!

 

방법 1. 파일이 μ—…λ‘œλ“œ λ˜λŠ” μœ„μΉ˜λ₯Ό μˆ¨κΈ΄λ‹€. / 파일 이름 숨기기.

방법 2. ν™•μž₯자 ν•„ν„° (μ„œλ²„μ—μ„œ) 

--> 방법 1 κ³Ό 방법 2λŠ” κ³΅κ²©μžκ°€ μ•…μ˜μ  νŒŒμΌμ„ μ—…λ‘œλ“œν•˜λŠ” 것을 λ§‰λŠ” 것이닀.

 

방법 3. μ„œλ²„μ—μ„œ ν™•μž₯자λͺ…을 λ–Όκ³  μ €μž₯.(νŒŒμΌμ΄λ¦„λ„ λ°”κΏ”λ‘” 채 본래의 이름과 맀칭 μ‹œμΌœλ‘¬λ„ 됨.)

--> 방법 3의 κ²½μš°λŠ” μ•…μ˜μ  파일 싀행을 λ§‰λŠ” 것이닀.

 

 



 

<파일 λ‹€μš΄λ‘œλ“œ>

   - 점검 λ‚΄μš© : μ›Ή μ‚¬μ΄νŠΈμ—μ„œ 파일 λ‹€μš΄λ‘œλ“œ μ‹œ ν—ˆμš©λœ 경둜 μ™Έ λ‹€λ₯Έ 경둜의 파일 접근이 κ°€λŠ₯ν•œμ§€ μ—¬λΆ€ 점검.

   - 점검 λͺ©μ  : 파일 λ‹€μš΄λ‘œλ“œ μ‹œ ν—ˆμš©λœ 경둜 μ™Έ λ‹€λ₯Έλ‹€λ₯Έ 경둜의 파일 접근을 λ°©μ§€ν•˜μ—¬ κ³΅κ²©μžκ°€ μž„μ˜μ˜ μœ„μΉ˜μ— μžˆλŠ” νŒŒμΌμ„ μ—΄λžŒν•˜κ±°λ‚˜ λ‹€μš΄λ°›λŠ” 것을 λΆˆκ°€λŠ₯ν•˜κ²Œ ν•˜κΈ° μœ„ν•¨.

   - λ³΄μ•ˆ μœ„ν˜‘ : ν•΄λ‹Ή 취약점이 μ‘΄μž¬ν•  경우 κ³΅κ²©μžλŠ” 파일 λ‹€μš΄λ‘œλ“œ μ‹œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ νŒŒλΌλ―Έν„° 값을 μ‘°μž‘ν•˜μ—¬ μ›Ή μ‚¬μ΄νŠΈμ˜ μ€‘μš”ν•œ 파일(DB 컀λ„₯μ…˜ 파일(DBλ₯Ό μ—°κ²°ν•˜λŠ” 파일), μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 파일 λ“±) λ˜λŠ” μ›Ή μ„œλ²„ λ£¨νŠΈμ— μžˆλŠ” μ€‘μš”ν•œ μ„€μ • 파일(passwd, shadow λ“±) 을 λ‹€μš΄λ°›μ„ 수 있음.

 

** λ‹€μš΄μ΄ λ˜λŠ” 것 μžμ²΄κ°€ 취약점이라고 λ³Ό 수 μžˆλ‹€.

 

-----

about Video 2

 

<파일 λ‹€μš΄λ‘œλ“œ>취약점 이용 곡격 κ³Όμ • μ˜ˆμ‹œ.

 

(1) 첨뢀 파일과 같이 νŒŒμΌμ„ λ‹€μš΄ 받을 수 μžˆλŠ” νŽ˜μ΄μ§€μ—μ„œ [μ†ŒμŠ€λ³΄κΈ°]λ₯Ό 톡해 μ–΄λŠ URL을 톡해 λ‹€μš΄ λ°›λŠ”μ§€(λ‹€μš΄λ‘œλ“œ 둜직 μ°ΎκΈ°) μ•Œμ•„λ‚Έλ‹€.   --> μ°Ύμ•„λ‚Έ URL 볡사해둠.  (ν•΄λ‹Ή url이 [  ~ /data/ + 'x'  ] 라고 예λ₯Ό 듀어보겠닀.)

 

(2) λ³΅μ‚¬ν•œ URL둜 μ ‘μ†ν•œ μœ„μΉ˜κ°€ ν˜„μž¬ μ–΄λŠ 폴더인지 μ•Œμ•„λ‚΄κΈ° μœ„ν•΄ λ¨Όμ €  λ³΅μ‚¬ν•œ url에  /data/download.jsp λ₯Ό μΆ”κ°€ν•˜μ—¬ μž…λ ₯.   --> 였λ₯˜ --> ν˜„μž¬ 폴더가 /data/λŠ” μ•„λ‹˜μ„ μ•Œ 수 μžˆλ‹€.

 

(3) ν•œλ²ˆ 더 (2)와 같은 이유둜 μ΄λ²ˆμ—” url에  ../data/download.jsp λ₯Ό μž…λ ₯.   --> 였λ₯˜κ΅¬λ¬Έμ—μ„œ  " .. /"이 " ./ " 으둜 필터링 λ˜μ—ˆμŒμ„ 확인.

 

(4) "  ../  "의 필터링을 μš°νšŒν•˜κΈ° μœ„ν•΄ url에 ..../data/download.jsp λ₯Ό μž…λ ₯.   --> 성곡 --> ν˜„μž¬ μœ„μΉ˜κ°€ ../data (/data의 ν•œλ‹¨κ³„ μœ— 폴더)이고 이 μœ„μΉ˜μ— download.jspκ°€ μ‘΄μž¬ν•¨μ„ μ•Œ 수 μžˆλ‹€.

 

?? ν•„μž (4)번 살짝  ν—·κ°ˆλ¦Ό...

 

μœ„μ™€ 같은 곡격의 경우,

μƒμœ„ν΄λ”λ‘œμ˜ 접근이 ν•„ν„°λ§λ˜μ–΄ μƒμœ„ν΄λ”μ˜ νŒŒμΌμ— μ ‘κ·Όν•˜μ§€ λͺ»ν•˜λ”라도

ν•˜μœ„ν΄λ”μ˜ νŒŒμΌλ“€μ€ λ‹€μš΄λ°›μ„ 수 μžˆμŒμ„ κ°„κ³Όν•˜λ©΄ μ•ˆλœλ‹€.

γ…‘γ…‘γ…‘γ…‘γ…‘

 

κ·Έλ ‡λ‹€λ©΄ μœ„μ™€ 같은 파일 λ‹€μš΄λ‘œλ“œ 곡격을 λ°©μ§€ν•˜λŠ” 방법은? λ¬΄μ—‡μΌκΉŒ?

 

-->

λ‹€μš΄ λ°›λŠ” 폴더λ₯Ό μ€‘μš”ν΄λ”μ™€ μ™„μ „νžˆ λ¬΄κ΄€ν•œ ν΄λ”λ‘œ λ°°μ •ν•΄ 놓고,

μƒμœ„ν΄λ”λ‘œ μ΄λ™ν•˜μ§€λ„ λͺ»ν•˜κ²Œ ../λ₯Ό ν•„ν„°λ§ν•˜λŠ” 것이닀.

 

γ…‘γ…‘γ…‘γ…‘γ…‘

728x90

λŒ“κΈ€