EYEN

wavlink-wn531p3 lighttpd 본문

대외활동 및 팀플/네뷸라 콘테스트

wavlink-wn531p3 lighttpd

EYEN 2024. 12. 12. 19:55

디핑

경민님이 제공해주신 lighttpd로 함 근데 디핑해서 대상 범위를 줄여보자!가 목표였는데 거의 다 달라져서 의미가 없다.
free, malloc 함수 빼고 다 달라
lighttpd 구하는 링크
https://download.lighttpd.net/lighttpd/releases-1.4.x/
 

lighttpd 1.4.65에는 취약점이 있음
 
CVE-2022-37797

CVE Website

www.cve.org

 
 

read

 
1. http_chunk_append_file_fd
 

 

appended+v16=v5 에
v8만큼 저장... 
 
stat_cache_open_rdonly_fstat

fdevent_open_cloexec의 반환값은 파일 경로, 혹은 파일 이름으로 4바이트
 
오픈소스랑 diffing을 해서 이 사람들이 공식 버전에서 따로 고친 함수가 뭐가 있는지/ 취약점이 발생하는 버전인데 업데이트를 안했는지를 확인하는 게 나을 것 같음. 검증이 많이 된 함수는 안 봐도 될 것 같음.
 

a3= 파일 경로 혹은 파일 이름 포인터
v5=파일 디스크립터
파일이 어디서 왔냐면(down->top)

시스템 내에서 사용되는 요소들을 저장하는... 동적으로 할당된 메모리 블록..
담는 크기를 봐야하겠지만... 488바이트 짜리긴 한데 포인터를 v5에 할당
 
2. fdevent_socket_read_discard

 
3. stream_open

stream_open 안전! 
 
4. 41f820

 
5. http_response_read

fdevent_ioctl_fionread: v23 크기 반환하는 거라고 함. 
 
6.sub 4068E8

1만큼만 읽어온다고 함
 
7. sub_41F820

 

word_43B5B0: 메모리의 특정 주소, 주소는 32비트 시스템이니까 4바이트
6u: 6만큼 읽어온다. 
2바이트 오버플로우가 가능할지도?

 

RECV

 
 

printf

올바름, v12과 v13도 char형임.
 

fprintf

관련 cve: CVE-2021-28846

CVE Website

www.cve.org

ida에서는 다 fprintf() memcpy() 이렇게 나와서 기드라로 보려는데 기드라가 안 열림
array_print/ data_config_pcre_compile/ log_failed_assert/configparser/sub_40AFC4

주소를 가리키는 %s

잘됨 

다 괜찮아보임...

memcpy

 

mmap

 

 

 
 

 
$v0=0,$v1=0, v0->0xE0+var_C8, v0<-0xE0+var_B8, v1->0xE0+var_C4, $a3=1, $v0->0xE0+var_D0, $a2=1
 

  • $a0=맵핑될 메모리 영역의 시작 주소, $a1=길이, $a2= 맵핑된 리젼에 대한 액세스 권한, $a3=맵핑된 리젼의 속성, $ 맵핑될 파일 시스템 오브젝트 또는 공유 메모리 오브젝트의 파일 설명자를 지정, 맵핑이 시작되는 파일 바이트 오프셋을 지정
  • 액세스 권한=1: write 권한
  • 속성=1: 맵 대응되는 객체를 다른 프로세스도 공유할 수 있게
  • v9: fd
  • offset자리에 아무것도 없음? 그럼 0인건가?
  • 암튼 a0에서 시작해서 a1의 길이 만큼을 fd에 해당하는 주소로 할당해준거임.
  • https://seyun99.tistory.com/entry/mmap%EC%9D%B4%EB%9E%80

mmap이란?

mmap(2) 1. mmap이란? mmap(2)는 메모리의 내용을 파일이나 디바이스에 대응(mapping)하기 위해서 사용하는 시스템 호출이다. 2. 메모리관리와 mmap 각각의 프로세스는 프로세스마다 다른 프로세스와 중복

seyun99.tistory.com

 

mmap은 uaf 취약점이 발생할 수 있는데
1. free를 v11=0일 때만 함.
2. munmap을 안 하면 추후에 uaf가 발생할 수 도 있는데

stream_open에 실패하면 에러메시지를, 성공하면 stream_close를 실행하고, stream_close에서 munmap을 실행한다.
 
 
 

'대외활동 및 팀플 > 네뷸라 콘테스트' 카테고리의 다른 글

uhttpd 디핑&원데이  (0) 2025.01.02
부팅 과정 알기  (0) 2024.12.30
wavlink-wn531p3  (0) 2024.12.06
netis.cgi  (0) 2024.11.23
BISC 세미나 정리!  (0) 2024.11.23