Command Injection
Command Injection의 원리
Command Injection은 사용자의 입력값이 서버가 시스템 명령어로 동작하는 형태인 코드에서 발생된다.
System() exec()과 같은 시스템 명령어를 실행시킬 수 있는 함수에 의해서 발생되는데 이런 형태의 코드는 개발할 때의 편의성을 위해 사용되는 경우가 있다.
메타 문자
linux에서의 메타 문자들로 인해 개발자 의도와는 다른 명령어가 실행될 수 있는데 이를 발생시키는 메타 태그들은 다음과 같다.
메타 | 의미 |
; | 명령어 뒤에 세미 콜론이 붙여지면 다음 명령어를 한 줄에 작성할 수 있음 |
|| | 앞의 명령어가 실행에 실패하면 뒤의 명령어를 실행 |
&& | 앞의 명령어가 실행에 성공해야 뒤의 명령어도 실행 |
`` | 백틱 안에서 명령어를 실행하면 결과값이 반환 |
$() | 백틱과 같은 의미 |
| | 앞의 명령어의 결과를 뒤의 명려어의 인자로 가져와 실행 |
아래의 코드에서 127.0.0.1이 사용자의 입력값으로 들어오는 부분에 세미 콜론을 사용하여 id라는 명령어를 실행 할 수 있다.
ping -c 127.0.0.1 ; id
❗ 저작권
'Hacking > Web' 카테고리의 다른 글
[Web Hacking] DNS rebinding (0) | 2022.07.30 |
---|---|
[Web Hacking] Missconfiguration DBMS (0) | 2022.07.26 |
[Web Hacking] SSRF (0) | 2022.07.25 |
[Web Hacking] No SQL Injection(Mongo DB) (0) | 2022.07.23 |
[Web Hacking] No SQL Database (0) | 2022.07.23 |