Command Injection은 해커가 웹 애플리케이션에 악성 코드를 삽입하여 해당 시스템에서 실행되는 명령어를 조작하는 공격 기법
LOW
- IP를 입력받아 해당 IP로 Ping명령어를 수행하는 간단한 웹 애플리케이션이다.
- 시나리오적인 부분으로 생각하면 IP 주소를 입력하면 해당 IP 주소의 시스템이 활성화되어 있는지 알려주는 웹 서비스라고 생각했다.
- ping은 ICMP 프로토콜을 이용하여 목적지 시스템의 활성화 유무를 확인하기 위해 사용된다.
- 127.0.0.1을 입력 해봤다.
- 127.0.0.1은 루프백(loopback) IP 주소로, 컴퓨터 자신을 가리키는 가상의 IP 주소다. 이 주소는 로컬 네트워크 환경에서 컴퓨터 자신에게 요청을 보내거나 자신의 서비스를 실행하기 위해 사용된다. 즉, 로컬호스트(localhost)라고도 부르며, 물리적인 네트워크 연결 없이 자신의 시스템에서 서버를 실행하거나, 자신이 보낸 데이터를 다시 자신이 받아서 확인하는 등의 테스트를 할 때 유용하게 사용된다.
- 위의 결과는 127.0.0.1로의 Ping 테스트 결과로 이 결과에서 알 수 있는 것은 모든 패킷이 성공적으로 보내졌고, 모든 패킷이 도착했으며, 손실이 없다는 것을 나타내고 있다. 평균 왕복 시간은 0ms로 매우 빠른 것을 알 수 있다.
- 패킷(Packet)은 컴퓨터 통신에서 데이터를 전송하기 위한 최소 단위
- 사실 이 결과는 루프백(127.0.0.1) 인터페이스를 통해 자신의 컴퓨터로 패킷을 보내는 것을 테스트하기 때문에, 네트워크 상태나 인터넷 연결 상태와는 관련이 없다. ㅋㅋ
- 응답: 바이트는 ping 패킷을 전송한 후 해당 호스트가 전송한 응답 패킷 크기를 나타낸다. 시간은 호스트가 전송한 응답 패킷을 수신하는 데 걸린 시간을 나타낸다. 일반적으로 ms(밀리초) 단위로 표시되며, 수신 시간이 작을수록 응답이 빠른 것이다. **TTL(Time to Live)**은 네트워크 패킷이 라우터를 통과할 때마다 1씩 감소하는 값이다. TTL 값이 0이 되면 해당 패킷은 버려지게 된다. 이를 통해 패킷이 무한히 라우팅되는 것을 방지하고, 네트워크 상의 무한 루프를 막을 수 있다. 일반적으로 TTL 값은 64(Linux) 또는 128(Windows)로 설정된다. 라우터를 통과하는 횟수를 통해 OS를 확인할 수 있음.
windows환경이기 때문에 파일 목록을 보기 위한 dir명령어를 사용
View Source)
소스코드를 보면 필터링 검증을 하지 않고, 바로 입력 값 넘기기 때문에 &&를 사용해도 뒤의 dir 명령어가 바로 사용됐다.
Medium
LOW와 다르게 필터링 검증이 있는 것 같다.
역시, &&와 ;에 대한 필터링이 되어있다.
&&, ;외에도 command injection공격을 실행할 수 있는 특수문자는 여러개가 있다.
High
View Source)
소스코드를 보면 거의 모든 특수 문자들이 필터링이 되어있다.
그러나 함정이 있다.
필터링 목록중에 필터링이 |가 아닌 (|+공백)가 필터링이 되어있다.
그렇기 때문에 |를 공백없이 입력하면 명령어를 실행시킬 수 있다.
'Write Up > DVWA' 카테고리의 다른 글
Installing DVWA in Windows with XAMPP (윈도우 환경에서 DVWA) (3) | 2024.08.20 |
---|---|
DVWA - CSP (0) | 2023.05.17 |
DVWA - CSRF (0) | 2023.05.17 |
DVWA - XSS(Stored) (0) | 2023.05.17 |
DVWA - XSS(DOM) (0) | 2023.05.17 |