## 💉 SQL 및 XPath 인젝션 공격 개요 요약
---
### 1. SQL 인젝션의 핵심 원리와 역사
* **정의**: 웹 애플리케이션의 입력값 검증 미흡을 악용하여 **악의적인 SQL 구문을 주입(Injection)**, 데이터베이스를 비정상적으로 조작하는 공격입니다.
* **역사**: 1998년 처음 언급된 이후, 수억 건의 신용카드 정보 유출 및 국가 기관 해킹 등 현재까지도 가장 위험한 보안 위협 중 하나로 꼽힙니다.
* **기본 원리**: `SELECT * FROM user WHERE id='admin' AND pw='' OR '1'='1'`과 같이 조건문을 항상 참(**True**)으로 만들어 **인증을 우회**하거나, `;`를 이용해 **추가 명령(UPDATE, DELETE)**을 실행합니다.
### 2. DBMS별 주요 공격 기법
| 구분 | 주요 공격 방식 및 특징 |
| --- | --- |
| **Common** | `UNION`을 이용해 서로 다른 테이블의 정보를 합쳐서 출력 유도 |
| **MS SQL Server** | `xp_cmdshell` 등의 확장 저장 프로시저를 이용한 **OS 명령어 실행** |
| **Oracle** | `utl_http`를 이용한 외부 데이터 전송, `Blind SQLi`를 위한 시간 지연 함수 활용 |
| **SQLite** | 가벼운 구조를 활용한 데이터베이스 파일 직접 생성 및 테이블 조작 실습에 용이 |
### 3. XPath 삽입 공격 (XPath Injection)
* **대상**: RDBMS가 아닌 **XML 문서**의 노드를 선택하는 **XPath 쿼리**를 대상으로 합니다.
* **원리**: SQL 인젝션과 유사하게 `' or '1'='1`과 같은 구문을 삽입하여 XML 트리 구조 내의 사용자 정보나 비밀번호를 탈취합니다.
* **특징**: 논리적 참/거짓을 이용해 데이터 구조를 파악하며, 다양한 프로그래밍 언어(Java, .NET, PHP 등)에서 발생하는 취약점입니다.
---
1. 새서버 클론(vmware workstation)
원본->마우스 우클릭->manage->clone->linked clone
2.부팅후 IP 확인, 접속
3. 자바 설치
sudo apt update
sudo apt upgrade -y
sudo apt install -y wget apt-transport-https gnupg
wget -O - https://packages.adoptium.net/artifactory/api/gpg/key/public | sudo gpg --dearmor -o /usr/share/keyrings/adoptium.gpg
echo "deb [signed-by=/usr/share/keyrings/adoptium.gpg] https://packages.adoptium.net/artifactory/deb noble main" | sudo tee /etc/apt/sources.list.d/adoptium.list
sudo apt update
sudo apt install -y temurin-8-jdk
sudo update-alternatives --config java (생략 가능)
mkdir /home/user_id/webgoat
cd /home/user_id/webgoat
4. webgoat 설치 및 구동
wget https://github.com/WebGoat/WebGoat/releases/download/7.1/webgoat-container-7.1-exec.jar
nohup java -jar webgoat-container-7.1-exec.jar -httpPort 80 > /dev/null 2>&1 &
5. run.sh을 만들고 run.sh을 실행하자.
vi run.sh
#!/bin/bash
nohup java -jar webgoat-container-7.1-exec.jar -httpPort 80 > /dev/null 2>&1 &
chmod 755 run.sh
=====================================================
** 오늘의 명령어
nohup
: > /dev/null 2>&1 &
traceroute -n target_ip
(윈도우) tracert -d target_ip
>> https://후이즈검색.한국
=================
proxy를 설치해 보자.
1. vm 클론
2. apt-get update && apt-get install tinyproxy
3. 접근 범위 설정
vi /etc/tinyproxy/tinyproxy.conf
...
#Allow 127.0.0.1
#Allow ::1
Allow 0.0.0.0/0
======================
접속 테스트 (다른 차단된 서버)
(사용법) wget -e use_proxy=yes -e http_proxy=http://프록시IP:포트 http://example.com
>> wget -e use_proxy=yes -e http_proxy=http://192.168.186.131:8888 http://192.168.186.128
======================
웹서버에서 로그 확인
sudo tail -f /var/log/nginx/access.log
=======================================
유니온 인젝션을 위한 기본 쿼리 배워보기
mysql -u mydb -p -h 192.168.186.130
> show databases;
> use cloud_db;
> show tables;
> select * from userInfo;
> select * from userInfo where uname="admin" and pass="1234";
사용자 정보 수정 메뉴에서, 관리자 권한 얻기(권한 상승)
> update userInfo set pass='123', priority='0' where uname="usr1";
관리자 테이블 생성
> create table adminInfo(id varchar(20),pw varchar(20));
> show tables;
> desc adminInfo;
> insert into adminInfo(id, pw)values("root", "12345678");
> select uname, pass from userInfo where uname=”usr1 ” union select id, pw from adminInfo;