mainact
232
2021-11-08 15:00:19
3
122

포트포워딩으로 해킹당할 시 백도어 프로그램 설치가능성


얼마전에 제가 80포트를 잠시 열어두었다가 테스트DB가 탈취당한 일이있었습니다.

건든거도 DB만 지우다가 말았고 (톰캣을 꺼서 중간에 끊긴거로 추정 데이터가 일부남아있었음)   다행이 로컬 테스트 DB라 데이터에 개인정보나 중요한거도 없고 백업도 다있어서 문제는없었지만 생각보다 찜찜하더라구요.


22포트 3306 다 닫혀있었고 포트포워딩으로 80만 열어준거여서 sql 인젝션을 의심하는데 로컬 개발용 노트북이라 로그설정을 안해 확인을 못했습니다.


궁금한게 SQL 인젝션으로 웹에서 DB를 DUMP 쓴다거나, 또는 웹프로젝트 등에 백도어를 심는것이 가능할까요?

war 백업 sql 백업 본이있는데 혹시나 백도어 위험성이있어서 일단 압축해서 안쓰는 USB에 보관만하고 PC는 다 포맷시켰습니다.

0
  • 답변 3

  • howoni123
    1k
    2021-11-08 15:35:49

    1. select "???" info outfile 형태로 파일 생성가능.

    2. DUMP 의미가 있는가 싶네요. SQLi 취약점이 있으면 이론적으로 웹이랑 연결된 계정의 권한내로 모든 테이블 칼럼 수집가능합니다.

    3. 웹프로젝트 구성에 따라 다릅니다. 
    예) tomcat - jsp 형태일 경우 1. 의 항목을 이용해서 웹쉘 만들 수 있음.


  • mainact
    232
    2021-11-08 15:57:09

     howoni123

    구성은 tomcat 과 spring 웹입니다. 만약 쉘을 만들었다면 war를 일일히 뒤져볼수도 없는 모양이고 그냥 해당파일 폐기하고 이전 버전war로 소스코드 복사 하면서 살리는게 제일 안전하겠네요.

    local 완전 내부 개발용으로 항상 쓰던 환경이라 너무 방심했습니다.


    root 외부접근금지 및 전용 계정 생성,

    sql인젝션을 *.url 로 필터링 걸어서 튕겨보낸다면 이러한 문제를 해결할 수 있을까요?























  • howoni123
    1k
    2021-11-09 09:34:21 작성 2021-11-09 09:36:02 수정됨

    어떻게 코딩하신지 모르겠지만

    SQL injection 은 spring / JDBC 에서라면 prepare statement 혹은 ORM 고려해주세요.

      ex ) mybatis 환경에서 ${} 말고 #{} 사용하기... jdbc 에서 createStatement 사용말고 prepareStatement 상요하기..

    *.url 이 어떤걸 말씀하시는지 모르겠네용... sql injection 는 코딩한것에 따라 우회방법도 엄청 많으니 필터링해서 제거하기보단 근본적인 이슈를 없애는게 맞는거 같아요


    root 외부접근금지 및 전용 계정생성 이라면 mysql 계정을 말씀하시는거 같은데

    root 계정을 웹의 db 를 담당하고있으면 그건 잘못된 것이오니...

    별도의 계정생성 이후 필요한 권한만 할당해주시면 됩니다. all priv 할당 금지.


    +추가 

    올려주신 글로만 봐서는 공격지속성 목적으로 웹쉘은 심어두지 않았을거 같은데요.

    기존백업된 war 파일과 현재 deploy 되어있는 application 을 파일 전체비교하면 되지 않을까 생각됩니다.

  • 로그인을 하시면 답변을 등록할 수 있습니다.